Use date from post's filename when metadata[:created_at] is missing.
This commit is contained in:
parent
2d2809def3
commit
7496b6aace
2 changed files with 10 additions and 0 deletions
1
bin/ace
1
bin/ace
|
@ -43,6 +43,7 @@ rules.rules.each do |klass, files|
|
|||
if File.binread(file).match(/^-{3,5}\s*$/)
|
||||
puts "~ Read #{file} with parse"
|
||||
raw_item = Ace::RawItem.new(file).tap(&:parse)
|
||||
raw_item.check_metadata_created_at(file)
|
||||
item = klass.create(raw_item.metadata, raw_item.content)
|
||||
else
|
||||
puts "~ Read #{file} without parse"
|
||||
|
|
|
@ -11,6 +11,7 @@ require "yaml"
|
|||
require "fileutils"
|
||||
require "ace/filters/sass"
|
||||
require "digest/sha1"
|
||||
require "date"
|
||||
|
||||
module Ace
|
||||
module Helpers
|
||||
|
@ -23,6 +24,13 @@ module Ace
|
|||
@data = File.read(path)
|
||||
end
|
||||
|
||||
def check_metadata_created_at(path)
|
||||
if self.metadata[:title]
|
||||
year, month, day = File.basename(path).slice(0,10).split('-')
|
||||
self.metadata[:created_at] ||= Date.new(year.to_i, month.to_i, day.to_i)
|
||||
end
|
||||
end
|
||||
|
||||
def parse
|
||||
pieces = @data.split(/^-{3,5}\s*$/)
|
||||
# if pieces.size < 3
|
||||
|
@ -33,6 +41,7 @@ module Ace
|
|||
|
||||
# Parse
|
||||
self.metadata = YAML.load(pieces[1]).inject(Hash.new) { |metadata, pair| metadata.merge(pair[0].to_sym => pair[1]) } || Hash.new
|
||||
# TODO: check metadata[:created_at] and supply it from filename
|
||||
self.content = pieces[2..-1].join.strip
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Reference in a new issue