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