lib/retter/stationery/binder.rb in retter-0.0.0 vs lib/retter/stationery/binder.rb in retter-0.0.1

- old
+ new

@@ -2,129 +2,121 @@ module Retter::Stationery class Binder attr_reader :config, :entries + extend Forwardable + + def_delegators :@config, *Retter::Config.delegatables + def initialize(config) @config = config end def view_scope @view_scope ||= View::Scope.new(config, entries: entries) end - def renderer - Haml::Engine.new(config.layout_file.read, ugly: true) + def layout_renderer + @layout_renderer ||= Haml::Engine.new(layout_file.read, ugly: true) end - def entries_renderer - Haml::Engine.new(config.entries_layout_file.read, ugly: true) - end - def entry_renderer - Haml::Engine.new(config.entry_layout_file.read, ugly: true) + @entry_renderer ||= Haml::Engine.new(entry_layout_file.read, ugly: true) end - def index_renderer - Haml::Engine.new(config.index_layout_file.read, ugly: true) - end - - def profile_renderer - Haml::Engine.new(config.profile_layout_file.read, ugly: true) - end - def rebind! commit_wip_file - @entries = Retter::Stationery.scan(config.retters_dir) + @entries = Retter::Stationery.scan(retters_dir) bind_entries print_index print_profile print_rss end def commit_wip_file - if config.wip_file.exist? - html = config.wip_file.read - config.retter_file(Date.today, '.md').open('a') {|f| f.puts html } - config.wip_file.unlink + if wip_file.exist? + html = wip_file.read + retter_file(Date.today).open('a') {|f| f.puts html } + wip_file.unlink end end def bind_entries @entries.each {|entry| print_entry entry } print_toc end def print_entry(entry) part = entry_renderer.render(view_scope, entry: entry) - html = renderer.render(view_scope, content: part) + html = layout_renderer.render(view_scope, content: part) - config.entry_file(entry.date).open('w') do |f| + entry_file(entry.date).open('w') do |f| f.puts View::Helper.fix_path(html, '../') end end def print_index - part = index_renderer.render(view_scope) - html = renderer.render(view_scope, content: part) + part = Haml::Engine.new(index_layout_file.read, ugly: true).render(view_scope) + html = layout_renderer.render(view_scope, content: part) - config.index_file.open('w') do |f| + index_file.open('w') do |f| f.puts View::Helper.fix_path(html, './') end end def print_profile - part = profile_renderer.render(view_scope) - html = renderer.render(view_scope, content: part) + part = Haml::Engine.new(profile_layout_file.read, ugly: true).render(view_scope) + html = layout_renderer.render(view_scope, content: part) - config.profile_file.open('w') do |f| + profile_file.open('w') do |f| f.puts View::Helper.fix_path(html, './') end end def print_toc - part = entries_renderer.render(view_scope) - html = renderer.render(view_scope, content: part) + part = Haml::Engine.new(entries_layout_file.read, ugly: true).render(view_scope) + html = layout_renderer.render(view_scope, content: part) - config.entries_file.open('w') do |f| + entries_file.open('w') do |f| f.puts View::Helper.fix_path(html, './') end end def print_rss - config.feed_file.open('w') {|f| f.puts rss } + feed_file.open('w') {|f| f.puts rss } end def rss xml = Builder::XmlMarkup.new xml.instruct! xml.rdf:RDF, :xmlns => 'http://purl.org/rss/1.0/', :'xmlns:rdf' => 'http://www.w3.org/1999/02/22-rdf-syntax-ns#', :'xmlns:dc' => 'http://purl.org/dc/elements/1.1/', :'xml:lang' => 'ja' do - xml.channel :'rdf:about' => config.url do - xml.title config.title - xml.link config.url + xml.channel :'rdf:about' => url do + xml.title title + xml.link url xml.dc:date, entries.first.date - xml.description config.description + xml.description description xml.items { xml.rdf(:Seq) { entries.each {|e| xml.rdf:li, :'rdf:resource' => entry_url(e.date) } } } end entries.each do |entry| xml.item about: entry_url(entry.date) do xml.title entry.date.strftime('%Y/%m/%d') xml.description { xml.cdata! entry.body } xml.dc:date, entry.date xml.link entry_url(entry.date) - xml.author config.author + xml.author author end end end end def entry_url(date, id = nil) - (URI.parse(config.url) + date.strftime('/entries/%Y%m%d.html')).to_s + (URI.parse(url) + date.strftime('/entries/%Y%m%d.html')).to_s end end end