Sha256: 69f5e6c870f2e7637e12cfee1edbb281176b8a1b96b2f3e6c678f95479ace397

Contents?: true

Size: 1.2 KB

Versions: 3

Compression:

Stored size: 1.2 KB

Contents

# coding: utf-8

module Retter::Stationery::View
  module Helper
    extend self

    def fix_path(html, prefix='./')
      elements = Nokogiri::HTML(html)

      elements.search("[src!=''][src!='']").each do |el|
        src = el.attr('src').scan(/[^\.\/]{3}.*/).first
        next if src =~ /^(?:http|https):\/\//

        el.set_attribute 'src', [prefix, src].join
      end

      elements.search("[href][href!='#']").each do |el|
        href = el.attr('href')
        next if href =~ /^(?:http|https):\/\//

        if href == '/'
          el.set_attribute 'href', [prefix, 'index.html'].join
        else
          el.set_attribute 'href', [prefix, href.scan(/[^\.\/]{3}.*/).first].join
        end
      end

      elements.to_s
    end

    def entry_path(date, id = nil)
      date.strftime('/entries/%Y%m%d.html') + (id ? "##{id}" : '')
    end
  end

  class Scope
    attr_reader :config
    attr_accessor :assigns

    include Helper
    extend Forwardable

    def_delegators :@config, *Retter::Config.delegatables

    [:entries].each do |meth|
      define_method meth do
        @assigns[meth]
      end
    end

    def initialize(config, assigns = {})
      @config, @assigns = config, assigns
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
retter-0.0.3 lib/retter/stationery/view.rb
retter-0.0.2 lib/retter/stationery/view.rb
retter-0.0.1 lib/retter/stationery/view.rb