From 4ef3aedb6aea03df9b1ebefc5ed39830e75cf39e Mon Sep 17 00:00:00 2001 From: Tom Preston-Werner Date: Mon, 20 Oct 2008 12:41:43 -0700 Subject: [PATCH] handle atom feed generation --- lib/autoblog/filters.rb | 8 ++++++++ lib/autoblog/page.rb | 6 ++++-- lib/autoblog/post.rb | 9 +++++---- lib/autoblog/site.rb | 6 +++++- 4 files changed, 22 insertions(+), 7 deletions(-) diff --git a/lib/autoblog/filters.rb b/lib/autoblog/filters.rb index d27ef085..3bf2418d 100644 --- a/lib/autoblog/filters.rb +++ b/lib/autoblog/filters.rb @@ -4,6 +4,14 @@ module AutoBlog def date_to_string(date) date.strftime("%d %b %Y") end + + def date_to_xmlschema(date) + date.xmlschema + end + + def xml_escape(input) + input.gsub("<", "<").gsub(">", ">") + end end end \ No newline at end of file diff --git a/lib/autoblog/page.rb b/lib/autoblog/page.rb index a4ee24df..ce42dd58 100644 --- a/lib/autoblog/page.rb +++ b/lib/autoblog/page.rb @@ -9,6 +9,8 @@ module AutoBlog @dir = dir @name = name + self.data = {} + self.process(name) self.read_yaml(base, dir, name) self.set_defaults @@ -40,8 +42,8 @@ module AutoBlog end end - def add_layout(layouts, posts) - payload = {"page" => self.data, "site" => {"posts" => posts}} + def add_layout(layouts, site_payload) + payload = {"page" => self.data}.merge(site_payload) self.content = Liquid::Template.parse(self.content).render(payload, [AutoBlog::Filters]) layout = layouts[self.data["layout"]] || self.content diff --git a/lib/autoblog/post.rb b/lib/autoblog/post.rb index 129e1f7a..4e471231 100644 --- a/lib/autoblog/post.rb +++ b/lib/autoblog/post.rb @@ -8,7 +8,7 @@ module AutoBlog end attr_accessor :date, :slug, :ext - attr_accessor :data, :content + attr_accessor :data, :content, :output def initialize(base, name) @base = base @@ -60,7 +60,7 @@ module AutoBlog layout = layouts[self.data["layout"]] || self.content payload = {"content" => self.content, "page" => self.data} - self.content = Liquid::Template.parse(layout).render(payload) + self.output = Liquid::Template.parse(layout).render(payload) end def write(dest) @@ -68,14 +68,15 @@ module AutoBlog path = File.join(dest, self.url) File.open(path, 'w') do |f| - f.write(self.content) + f.write(self.output) end end def to_liquid { "title" => self.data["title"] || "", "url" => self.url, - "date" => self.date } + "date" => self.date, + "content" => self.content } end end diff --git a/lib/autoblog/site.rb b/lib/autoblog/site.rb index 68fbd602..ac1c2f5b 100644 --- a/lib/autoblog/site.rb +++ b/lib/autoblog/site.rb @@ -63,11 +63,15 @@ module AutoBlog transform_pages(File.join(dir, f)) else page = Page.new(self.source, dir, f) - page.add_layout(self.layouts, self.posts) + page.add_layout(self.layouts, site_payload) page.write(self.dest) end end end + + def site_payload + {"site" => {"time" => Time.now, "posts" => self.posts}} + end end end \ No newline at end of file