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.
This commit is contained in:
Andreas Renberg (IQAndreas) 2013-10-19 05:45:03 +02:00
parent 4fd754a762
commit 797aeb5074

View File

@ -41,6 +41,15 @@ module Octopress
end end
date_formatted date_formatted
end 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
end end
@ -51,48 +60,22 @@ module Jekyll
class Post class Post
include Octopress::Date include Octopress::Date
# Convert this post into a Hash for use in Liquid templates. # 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
# Returns <Hash> alias :super_to_liquid :to_liquid
def to_liquid def to_liquid
date_format = self.site.config['date_format'] super_to_liquid.deep_merge(liquid_date_attributes)
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 })
end end
end end
class Page class Page
include Octopress::Date include Octopress::Date
# Initialize a new Page. # 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
# site - The Site object. alias :super_to_liquid :to_liquid
# base - The String path to the source. def to_liquid
# dir - The String path between the source and the file. super_to_liquid.deep_merge(liquid_date_attributes)
# 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')
end end
end end
end end