diff options
author | Andreas Renberg (IQAndreas) <iq_andreas@hotmail.com> | 2013-10-19 05:45:03 +0200 |
---|---|---|
committer | Andreas Renberg (IQAndreas) <iq_andreas@hotmail.com> | 2013-10-19 05:45:03 +0200 |
commit | 797aeb50744fb72444a569a56818126740cd9f36 (patch) | |
tree | 04e0e03c482278161f9134428dcb891c220bdf7a | |
parent | 4fd754a76207c1c55f657891dc7049cf76f5f27e (diff) | |
download | my_new_personal_website-797aeb50744fb72444a569a56818126740cd9f36.tar.xz my_new_personal_website-797aeb50744fb72444a569a56818126740cd9f36.zip |
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.
-rw-r--r-- | plugins/date.rb | 53 |
1 files changed, 18 insertions, 35 deletions
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 <Hash> + # 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 |