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
1 changed files with 18 additions and 35 deletions

View File

@ -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