From 797aeb50744fb72444a569a56818126740cd9f36 Mon Sep 17 00:00:00 2001 From: "Andreas Renberg (IQAndreas)" Date: Sat, 19 Oct 2013 05:45:03 +0200 Subject: Call overridden version of `to_liquid` and remove duplicate code Make sure to call "overidden" method which keeps us nice and compatible so we don't need to keep up with whatever Jekyll usually does, and make sure to include it in our overriden method. I have had it with these monkey-patching methods in this Monday-to- Friday language! Add method `liquid_date_attributes`. Cleanup the Post and Page overrides to be more similar. --- plugins/date.rb | 53 ++++++++++++++++++----------------------------------- 1 file changed, 18 insertions(+), 35 deletions(-) (limited to 'plugins/date.rb') diff --git a/plugins/date.rb b/plugins/date.rb index 49fb79a3..24607ef8 100644 --- a/plugins/date.rb +++ b/plugins/date.rb @@ -41,6 +41,15 @@ module Octopress end date_formatted end + + # Returns the date-specific liquid attributes + def liquid_date_attributes + date_format = self.site.config['date_format'] + data = {} + data['date_formatted'] = format_date(self.data['date'], date_format) if self.data.has_key?('date') + data['updated_formatted'] = format_date(self.data['updated'], date_format) if self.data.has_key?('updated') + data + end end end @@ -51,48 +60,22 @@ module Jekyll class Post include Octopress::Date - # Convert this post into a Hash for use in Liquid templates. - # - # Returns + # Convert this Convertible's data to a Hash suitable for use by Liquid. + # Overrides the default return data and adds any date-specific liquid attributes + alias :super_to_liquid :to_liquid def to_liquid - date_format = self.site.config['date_format'] - self.data.deep_merge({ - "title" => self.data['title'] || self.slug.split('-').select {|w| w.capitalize! || w }.join(' '), - "url" => self.url, - "date" => self.date, - # Monkey patch - "date_formatted" => format_date(self.date, date_format), - "updated_formatted" => self.data.has_key?('updated') ? format_date(self.data['updated'], date_format) : nil, - "id" => self.id, - "categories" => self.categories, - "next" => self.next, - "previous" => self.previous, - "tags" => self.tags, - "content" => self.content }) + super_to_liquid.deep_merge(liquid_date_attributes) end end class Page include Octopress::Date - # Initialize a new Page. - # - # site - The Site object. - # base - The String path to the source. - # dir - The String path between the source and the file. - # name - The String filename of the file. - def initialize(site, base, dir, name) - @site = site - @base = base - @dir = dir - @name = name - - self.process(name) - self.read_yaml(File.join(base, dir), name) - # Monkey patch - date_format = self.site.config['date_format'] - self.data['date_formatted'] = format_date(self.data['date'], date_format) if self.data.has_key?('date') - self.data['updated_formatted'] = format_date(self.data['updated'], date_format) if self.data.has_key?('updated') + # Convert this Convertible's data to a Hash suitable for use by Liquid. + # Overrides the default return data and adds any date-specific liquid attributes + alias :super_to_liquid :to_liquid + def to_liquid + super_to_liquid.deep_merge(liquid_date_attributes) end end end -- cgit v1.2.1