From ecda27488c7c896df0da0470b12370e7d9e05ae9 Mon Sep 17 00:00:00 2001 From: Tom Preston-Werner Date: Sun, 19 Oct 2008 21:18:58 -0700 Subject: [PATCH] parse out yaml from posts --- lib/autoblog/post.rb | 12 ++++++++++++ lib/autoblog/site.rb | 6 ++++++ test/test_post.rb | 8 ++++++++ 3 files changed, 26 insertions(+) diff --git a/lib/autoblog/post.rb b/lib/autoblog/post.rb index 80eefff9..b6c19ad6 100644 --- a/lib/autoblog/post.rb +++ b/lib/autoblog/post.rb @@ -8,12 +8,14 @@ module AutoBlog end attr_accessor :date, :slug, :ext + attr_accessor :data, :contents def initialize(base, name) @base = base @name = name self.process(name) + self.read_yaml(base, name) end def process(name) @@ -26,6 +28,16 @@ module AutoBlog def url self.date.strftime("/%Y/%m/%d/") + self.slug end + + def read_yaml(base, name) + self.contents = File.read(File.join(base, name)) + + if self.contents =~ /^(---\n.*?)\n---\n/ + self.contents = self.contents[($1.size + 5)..-1] + + self.data = YAML.load($1) + end + end end end \ No newline at end of file diff --git a/lib/autoblog/site.rb b/lib/autoblog/site.rb index 34b1e91a..544f39a5 100644 --- a/lib/autoblog/site.rb +++ b/lib/autoblog/site.rb @@ -42,6 +42,12 @@ module AutoBlog rescue Errno::ENOENT => e # ignore missing layout dir end + + def write_posts + self.posts.each do |post| + + end + end end end \ No newline at end of file diff --git a/test/test_post.rb b/test/test_post.rb index 7649e1e2..2236f9f6 100644 --- a/test/test_post.rb +++ b/test/test_post.rb @@ -25,4 +25,12 @@ class TestPost < Test::Unit::TestCase assert_equal "/2008/10/19/foo-bar", p.url end + + def test_read_yaml + p = Post.allocate + p.read_yaml(File.join(File.dirname(__FILE__), *%w[source posts]), "2008-10-18-foo-bar.textile") + + assert_equal({"title" => "Foo Bar"}, p.data) + assert_equal "\nh1. {{ page.title }}\n\nBest post ever", p.contents + end end \ No newline at end of file