diff --git a/lib/jekyll/frontmatter_defaults.rb b/lib/jekyll/frontmatter_defaults.rb index d6cb173f..d6fba04f 100644 --- a/lib/jekyll/frontmatter_defaults.rb +++ b/lib/jekyll/frontmatter_defaults.rb @@ -30,6 +30,13 @@ module Jekyll set end + def parse_quoted_date(set) + return set unless set.key?('values') && set['values'].key?('date') + return set if set['values']['date'].is_a?(Time) + set['values']['date'] = Utils.parse_date(set['values']['date'], "Front matter defaults does not have a valid date.") + set + end + # Finds a default value for a given setting, filtered by path and type # # path - the path (relative to the source) of the page, post or :draft the default is used in @@ -159,7 +166,7 @@ module Jekyll sets.map do |set| if valid?(set) - update_deprecated_types(set) + parse_quoted_date(update_deprecated_types(set)) else Jekyll.logger.warn "Defaults:", "An invalid front-matter default set was found:" Jekyll.logger.warn "#{set}" diff --git a/test/test_front_matter_defaults.rb b/test/test_front_matter_defaults.rb index 99efedea..8eeed7f3 100644 --- a/test/test_front_matter_defaults.rb +++ b/test/test_front_matter_defaults.rb @@ -175,4 +175,29 @@ class TestFrontMatterDefaults < JekyllUnitTest end end + context "A site with front matter defaults with quoted date" do + setup do + @site = Site.new(Jekyll.configuration({ + "source" => source_dir, + "destination" => dest_dir, + "defaults" => [{ + "values" => { + "date" => "2015-01-01 00:00:01" + } + }] + })) + end + + should "not raise error" do + @site.process + end + + should "parse date" do + @site.process + date = Time.parse("2015-01-01 00:00:01") + assert @site.pages.find { |page| page.data["date"] == date } + assert @site.posts.find { |page| page.data["date"] == date } + end + end + end