diff --git a/lib/autoblog/post.rb b/lib/autoblog/post.rb index 8ea3bb8e..2b12f9c5 100644 --- a/lib/autoblog/post.rb +++ b/lib/autoblog/post.rb @@ -63,14 +63,20 @@ module AutoBlog self.content = RedCloth.new(self.content).to_html end - def add_layout(layouts) - payload = {"page" => self.data} - self.content = Liquid::Template.parse(self.content).render(payload) + def related_posts(posts) + related = posts - [self] + end + + def add_layout(layouts, site_payload) + related = related_posts(site_payload["site"]["posts"]) + + payload = {"page" => self.data, "related_posts" => related}.merge(site_payload) + self.content = Liquid::Template.parse(self.content).render(payload, [AutoBlog::Filters]) layout = layouts[self.data["layout"]] || self.content payload = {"content" => self.content, "page" => self.data} - self.output = Liquid::Template.parse(layout).render(payload) + self.output = Liquid::Template.parse(layout).render(payload, [AutoBlog::Filters]) end def write(dest) diff --git a/lib/autoblog/site.rb b/lib/autoblog/site.rb index 989a4f0d..4d3286cd 100644 --- a/lib/autoblog/site.rb +++ b/lib/autoblog/site.rb @@ -47,7 +47,7 @@ module AutoBlog def write_posts self.posts.each do |post| - post.add_layout(self.layouts) + post.add_layout(self.layouts, site_payload) post.write(self.dest) end end @@ -55,16 +55,21 @@ module AutoBlog def transform_pages(dir = '') base = File.join(self.source, dir) entries = Dir.entries(base) - entries = entries.reject { |e| %w{_layouts posts}.include?(e) } + entries = entries.reject { |e| %w{_layouts posts drafts}.include?(e) } entries = entries.reject { |e| e[0..0] == '.' } entries.each do |f| if File.directory?(File.join(base, f)) transform_pages(File.join(dir, f)) else - page = Page.new(self.source, dir, f) - page.add_layout(self.layouts, site_payload) - page.write(self.dest) + if %w{.png .jpg .gif}.include?(File.extname(f)) + FileUtils.mkdir_p(File.join(self.dest, dir)) + FileUtils.cp(File.join(self.source, dir, f), File.join(self.dest, dir, f)) + else + page = Page.new(self.source, dir, f) + page.add_layout(self.layouts, site_payload) + page.write(self.dest) + end end end end