lib/retter/entries.rb in retter-0.2.2 vs lib/retter/entries.rb in retter-0.2.3

- old
+ new

@@ -7,14 +7,13 @@ module Retter class EntryLoadError < RetterError; end class Entries < Array - include Stationery extend Configurable - configurable :renderer, :retters_dir, :wip_file + configurable :retters_dir, :wip_file, :markup, :cache def initialize load_entries retters_dir end @@ -45,11 +44,11 @@ def detect_by_filename(filename) case filename when wip_file.basename.to_path wip_entry else - detect {|e| e.pathname.basename.to_path == filename } + detect {|e| e.path.basename.to_path == filename } end end def detect_by_today detect_by_date(Date.today) @@ -68,52 +67,49 @@ def wip_entry(date = nil) file = retter_file(date) date = date || Date.today body = file.exist? ? file.read : '' - Entry.new date: date, body: rendered_body(body), pathname: file + Entry.new date: date, body: rendered_body(body), path: file, entries: self end def commit_wip_entry! if wip_file.exist? copy = wip_file.read retter_file(Date.today).open('a') {|f| f.puts copy } wip_file.unlink end - Retter.reset! + reload end def load_entries(path) date_files = find_markup_files(path).map {|file| date_str = file.basename('.*').to_path [Date.parse(date_str), file] }.sort_by(&:first) date_files.reverse_each {|date, file| - self << Entry.new(date: date, body: rendered_body(file.read)) + self << Entry.new(date: date, body: rendered_body(file.read), entries: self) } end + def reload + clear + + load_entries retters_dir + end + def find_markup_files(path) path = Pathname.new(path).realpath - Dir.open(path, &:to_a).grep(/^\d{4}(?:0[1-9]|1[012])(?:0[1-9]|[12][0-9]|3[01])\.(md)$/).map {|f| path.join f } + Dir.open(path, &:to_a).grep(/^\d{4}(?:0[1-9]|1[012])(?:0[1-9]|[12][0-9]|3[01])\..*$/).map {|f| path.join f } end def rendered_body(body) key = Digest::SHA1.hexdigest('entry_' + body) - config.cache.fetch(key) do - Redcarpet::Markdown.new( - renderer, - autolink: true, - space_after_headers: true, - fenced_code_blocks: true, - strikethrough: true, - superscript: true, - fenced_code_blocks: true, - tables: true - ).render(body) + cache.fetch(key) do + (markup || Markdown.instance).render(body) end end end end