diff --git a/bin/ace b/bin/ace index 243b575..8d9a82a 100755 --- a/bin/ace +++ b/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" diff --git a/lib/ace.rb b/lib/ace.rb index 6169f0c..73ddbf4 100644 --- a/lib/ace.rb +++ b/lib/ace.rb @@ -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