serum 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile +2 -0
- data/LICENSE +23 -0
- data/README.md +55 -0
- data/Rakefile +10 -0
- data/lib/serum.rb +71 -0
- data/lib/serum/core_ext.rb +68 -0
- data/lib/serum/errors.rb +4 -0
- data/lib/serum/mime.types +84 -0
- data/lib/serum/post.rb +177 -0
- data/lib/serum/site.rb +116 -0
- data/lib/serum/static_file.rb +53 -0
- data/serum.gemspec +85 -0
- data/test/helper.rb +26 -0
- data/test/source/2008-02-02-not-published.textile +8 -0
- data/test/source/2008-02-02-published.textile +8 -0
- data/test/source/2008-10-18-foo-bar.textile +8 -0
- data/test/source/2008-11-21-complex.textile +8 -0
- data/test/source/2008-12-03-permalinked-post.textile +9 -0
- data/test/source/2008-12-13-include.markdown +8 -0
- data/test/source/2009-01-27-array-categories.textile +10 -0
- data/test/source/2009-01-27-categories.textile +7 -0
- data/test/source/2009-01-27-category.textile +7 -0
- data/test/source/2009-01-27-empty-categories.textile +7 -0
- data/test/source/2009-01-27-empty-category.textile +7 -0
- data/test/source/2009-03-12-hash-#1.markdown +6 -0
- data/test/source/2009-05-18-empty-tag.textile +6 -0
- data/test/source/2009-05-18-empty-tags.textile +6 -0
- data/test/source/2009-05-18-tag.textile +6 -0
- data/test/source/2009-05-18-tags.textile +9 -0
- data/test/source/2009-05-24-yaml-linebreak.markdown +7 -0
- data/test/source/2009-06-22-empty-yaml.textile +3 -0
- data/test/source/2009-06-22-no-yaml.textile +1 -0
- data/test/source/2010-01-08-triple-dash.markdown +6 -0
- data/test/source/2010-01-09-date-override.textile +7 -0
- data/test/source/2010-01-09-time-override.textile +7 -0
- data/test/source/2010-01-09-timezone-override.textile +7 -0
- data/test/source/2010-01-16-override-data.textile +4 -0
- data/test/source/2011-04-12-md-extension.md +7 -0
- data/test/source/2011-04-12-text-extension.text +0 -0
- data/test/source/2013-01-02-post-excerpt.markdown +14 -0
- data/test/source/2013-01-12-nil-layout.textile +6 -0
- data/test/source/2013-01-12-no-layout.textile +5 -0
- data/test/suite.rb +11 -0
- data/test/test_core_ext.rb +88 -0
- data/test/test_post.rb +138 -0
- data/test/test_site.rb +68 -0
- metadata +194 -0
@@ -0,0 +1 @@
|
|
1
|
+
No YAML.
|
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
date: 2011-04-12 13:07:09
|
3
|
+
---
|
4
|
+
|
5
|
+
under default configuration, this post should get processed by the identity converter. By changing
|
6
|
+
textile extension or markdown extension configuration parameters, you should be able to associate
|
7
|
+
it with either of those converters
|
File without changes
|
data/test/suite.rb
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
gem 'test-unit'
|
3
|
+
require 'test/unit'
|
4
|
+
|
5
|
+
# for some reason these tests fail when run via TextMate
|
6
|
+
# but succeed when run on the command line.
|
7
|
+
|
8
|
+
tests = Dir[File.expand_path("#{File.dirname(__FILE__)}/test_*.rb")]
|
9
|
+
tests.each do |file|
|
10
|
+
require file
|
11
|
+
end
|
@@ -0,0 +1,88 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestCoreExt < Test::Unit::TestCase
|
4
|
+
context "hash" do
|
5
|
+
|
6
|
+
context "pluralized_array" do
|
7
|
+
|
8
|
+
should "return empty array with no values" do
|
9
|
+
data = {}
|
10
|
+
assert_equal [], data.pluralized_array('tag', 'tags')
|
11
|
+
end
|
12
|
+
|
13
|
+
should "return empty array with no matching values" do
|
14
|
+
data = { 'foo' => 'bar' }
|
15
|
+
assert_equal [], data.pluralized_array('tag', 'tags')
|
16
|
+
end
|
17
|
+
|
18
|
+
should "return empty array with matching nil singular" do
|
19
|
+
data = { 'foo' => 'bar', 'tag' => nil, 'tags' => ['dog', 'cat'] }
|
20
|
+
assert_equal [], data.pluralized_array('tag', 'tags')
|
21
|
+
end
|
22
|
+
|
23
|
+
should "return single value array with matching singular" do
|
24
|
+
data = { 'foo' => 'bar', 'tag' => 'dog', 'tags' => ['dog', 'cat'] }
|
25
|
+
assert_equal ['dog'], data.pluralized_array('tag', 'tags')
|
26
|
+
end
|
27
|
+
|
28
|
+
should "return single value array with matching singular with spaces" do
|
29
|
+
data = { 'foo' => 'bar', 'tag' => 'dog cat', 'tags' => ['dog', 'cat'] }
|
30
|
+
assert_equal ['dog cat'], data.pluralized_array('tag', 'tags')
|
31
|
+
end
|
32
|
+
|
33
|
+
should "return empty array with matching nil plural" do
|
34
|
+
data = { 'foo' => 'bar', 'tags' => nil }
|
35
|
+
assert_equal [], data.pluralized_array('tag', 'tags')
|
36
|
+
end
|
37
|
+
|
38
|
+
should "return empty array with matching empty array" do
|
39
|
+
data = { 'foo' => 'bar', 'tags' => [] }
|
40
|
+
assert_equal [], data.pluralized_array('tag', 'tags')
|
41
|
+
end
|
42
|
+
|
43
|
+
should "return single value array with matching plural with single string value" do
|
44
|
+
data = { 'foo' => 'bar', 'tags' => 'dog' }
|
45
|
+
assert_equal ['dog'], data.pluralized_array('tag', 'tags')
|
46
|
+
end
|
47
|
+
|
48
|
+
should "return multiple value array with matching plural with single string value with spaces" do
|
49
|
+
data = { 'foo' => 'bar', 'tags' => 'dog cat' }
|
50
|
+
assert_equal ['dog', 'cat'], data.pluralized_array('tag', 'tags')
|
51
|
+
end
|
52
|
+
|
53
|
+
should "return single value array with matching plural with single value array" do
|
54
|
+
data = { 'foo' => 'bar', 'tags' => ['dog'] }
|
55
|
+
assert_equal ['dog'], data.pluralized_array('tag', 'tags')
|
56
|
+
end
|
57
|
+
|
58
|
+
should "return multiple value array with matching plural with multiple value array" do
|
59
|
+
data = { 'foo' => 'bar', 'tags' => ['dog', 'cat'] }
|
60
|
+
assert_equal ['dog', 'cat'], data.pluralized_array('tag', 'tags')
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|
66
|
+
|
67
|
+
context "enumerable" do
|
68
|
+
context "glob_include?" do
|
69
|
+
should "return false with no glob patterns" do
|
70
|
+
assert ![].glob_include?("a.txt")
|
71
|
+
end
|
72
|
+
|
73
|
+
should "return false with all not match path" do
|
74
|
+
data = ["a*", "b?"]
|
75
|
+
assert !data.glob_include?("ca.txt")
|
76
|
+
assert !data.glob_include?("ba.txt")
|
77
|
+
end
|
78
|
+
|
79
|
+
should "return true with match path" do
|
80
|
+
data = ["a*", "b?", "**/a*"]
|
81
|
+
assert data.glob_include?("a.txt")
|
82
|
+
assert data.glob_include?("ba")
|
83
|
+
assert data.glob_include?("c/a/a.txt")
|
84
|
+
assert data.glob_include?("c/a/b/a.txt")
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
data/test/test_post.rb
ADDED
@@ -0,0 +1,138 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestPost < Test::Unit::TestCase
|
4
|
+
def setup_post(file)
|
5
|
+
Post.new(@site, source_dir, '', file)
|
6
|
+
end
|
7
|
+
|
8
|
+
context "A Post" do
|
9
|
+
setup do
|
10
|
+
@site = Site.new(Serum.configuration({'source' => source_dir}))
|
11
|
+
end
|
12
|
+
|
13
|
+
should "ensure valid posts are valid" do
|
14
|
+
assert Post.valid?("2008-09-09-foo-bar.textile")
|
15
|
+
assert Post.valid?("foo/bar/2008-09-09-foo-bar.textile")
|
16
|
+
|
17
|
+
assert !Post.valid?("lol2008-09-09-foo-bar.textile")
|
18
|
+
assert !Post.valid?("blah")
|
19
|
+
end
|
20
|
+
|
21
|
+
context "processing posts" do
|
22
|
+
setup do
|
23
|
+
@post = Post.allocate
|
24
|
+
@post.site = @site
|
25
|
+
|
26
|
+
@real_file = "2008-10-18-foo-bar.textile"
|
27
|
+
@fake_file = "2008-09-09-foo-bar.textile"
|
28
|
+
@source = source_dir('')
|
29
|
+
end
|
30
|
+
|
31
|
+
should "keep date, title, and markup type" do
|
32
|
+
@post.process(@fake_file)
|
33
|
+
|
34
|
+
assert_equal Time.parse("2008-09-09"), @post.date
|
35
|
+
assert_equal "foo-bar", @post.slug
|
36
|
+
assert_equal ".textile", @post.ext
|
37
|
+
end
|
38
|
+
|
39
|
+
should "raise a good error on invalid post date" do
|
40
|
+
assert_raise Serum::FatalException do
|
41
|
+
@post.process("2009-27-03-foo-bar.textile")
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
context "with CRLF linebreaks" do
|
46
|
+
setup do
|
47
|
+
@real_file = "2009-05-24-yaml-linebreak.markdown"
|
48
|
+
@source = source_dir('')
|
49
|
+
end
|
50
|
+
should "read yaml front-matter" do
|
51
|
+
@post.read_yaml(@source, @real_file)
|
52
|
+
|
53
|
+
assert_equal({"title" => "Test title", "layout" => "post", "tag" => "Ruby"}, @post.data)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
context "with embedded triple dash" do
|
58
|
+
setup do
|
59
|
+
@real_file = "2010-01-08-triple-dash.markdown"
|
60
|
+
end
|
61
|
+
should "consume the embedded dashes" do
|
62
|
+
@post.read_yaml(@source, @real_file)
|
63
|
+
|
64
|
+
assert_equal({"title" => "Foo --- Bar", "layout" => "post"}, @post.data)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
should "read yaml front-matter" do
|
69
|
+
@post.read_yaml(@source, @real_file)
|
70
|
+
|
71
|
+
assert_equal({"title" => "Foo Bar", "layout" => "default"}, @post.data)
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
75
|
+
|
76
|
+
context "when in a site" do
|
77
|
+
setup do
|
78
|
+
@site = Site.new(Serum.configuration({'source' => source_dir}))
|
79
|
+
@site.posts = [setup_post('2008-02-02-published.textile'),
|
80
|
+
setup_post('2009-01-27-categories.textile')]
|
81
|
+
end
|
82
|
+
|
83
|
+
should "have next post" do
|
84
|
+
assert_equal(@site.posts.last, @site.posts.first.next)
|
85
|
+
end
|
86
|
+
|
87
|
+
should "have previous post" do
|
88
|
+
assert_equal(@site.posts.first, @site.posts.last.previous)
|
89
|
+
end
|
90
|
+
|
91
|
+
should "not have previous post if first" do
|
92
|
+
assert_equal(nil, @site.posts.first.previous)
|
93
|
+
end
|
94
|
+
|
95
|
+
should "not have next post if last" do
|
96
|
+
assert_equal(nil, @site.posts.last.next)
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
context "initializing posts" do
|
101
|
+
should "publish when published yaml is no specified" do
|
102
|
+
post = setup_post("2008-02-02-published.textile")
|
103
|
+
assert_equal true, post.published
|
104
|
+
end
|
105
|
+
|
106
|
+
should "not published when published yaml is false" do
|
107
|
+
post = setup_post("2008-02-02-not-published.textile")
|
108
|
+
assert_equal false, post.published
|
109
|
+
end
|
110
|
+
|
111
|
+
should "recognize date in yaml" do
|
112
|
+
post = setup_post("2010-01-09-date-override.textile")
|
113
|
+
assert_equal Time, post.date.class
|
114
|
+
end
|
115
|
+
|
116
|
+
should "recognize time in yaml" do
|
117
|
+
post = setup_post("2010-01-09-time-override.textile")
|
118
|
+
assert_equal Time, post.date.class
|
119
|
+
end
|
120
|
+
|
121
|
+
should "recognize time with timezone in yaml" do
|
122
|
+
post = setup_post("2010-01-09-timezone-override.textile")
|
123
|
+
assert_equal Time, post.date.class
|
124
|
+
end
|
125
|
+
|
126
|
+
should "allow no yaml" do
|
127
|
+
post = setup_post("2009-06-22-no-yaml.textile")
|
128
|
+
assert_equal({}, post.data)
|
129
|
+
end
|
130
|
+
|
131
|
+
should "allow empty yaml" do
|
132
|
+
post = setup_post("2009-06-22-empty-yaml.textile")
|
133
|
+
assert_equal({}, post.data)
|
134
|
+
end
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
end
|
data/test/test_site.rb
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestSite < Test::Unit::TestCase
|
4
|
+
context "configuring sites" do
|
5
|
+
should "expose default baseurl" do
|
6
|
+
site = Site.new(Serum::DEFAULTS.merge({'source' => source_dir}))
|
7
|
+
assert_equal Serum::DEFAULTS['baseurl'], site.baseurl
|
8
|
+
end
|
9
|
+
|
10
|
+
should "expose baseurl passed in from config" do
|
11
|
+
site = Site.new(Serum::DEFAULTS.merge({'baseurl' => '/blog', 'source' => source_dir}))
|
12
|
+
assert_equal '/blog', site.baseurl
|
13
|
+
end
|
14
|
+
end
|
15
|
+
context "creating sites" do
|
16
|
+
setup do
|
17
|
+
stub(Serum).configuration do
|
18
|
+
Serum::DEFAULTS.merge({'source' => source_dir})
|
19
|
+
end
|
20
|
+
@site = Site.new(Serum.configuration)
|
21
|
+
end
|
22
|
+
|
23
|
+
should "reset data before processing" do
|
24
|
+
@site.read_directories
|
25
|
+
before_posts = @site.posts.length
|
26
|
+
before_static_files = @site.static_files.length
|
27
|
+
before_time = @site.time
|
28
|
+
|
29
|
+
@site.read_directories
|
30
|
+
assert_equal before_posts, @site.posts.length
|
31
|
+
assert_equal before_static_files, @site.static_files.length
|
32
|
+
assert before_time <= @site.time
|
33
|
+
end
|
34
|
+
|
35
|
+
should "read posts" do
|
36
|
+
@site.reset
|
37
|
+
@site.read_posts('')
|
38
|
+
posts = Dir[source_dir('*')]
|
39
|
+
assert_equal posts.size - 1, @site.posts.size
|
40
|
+
end
|
41
|
+
|
42
|
+
should "filter entries" do
|
43
|
+
ent1 = %w[foo.markdown bar.markdown baz.markdown #baz.markdown#
|
44
|
+
.baz.markdow foo.markdown~]
|
45
|
+
ent2 = %w[.htaccess _posts _pages bla.bla]
|
46
|
+
|
47
|
+
assert_equal %w[foo.markdown bar.markdown baz.markdown], @site.filter_entries(ent1)
|
48
|
+
assert_equal %w[.htaccess bla.bla], @site.filter_entries(ent2)
|
49
|
+
end
|
50
|
+
|
51
|
+
should "filter entries with exclude" do
|
52
|
+
excludes = %w[README TODO]
|
53
|
+
files = %w[index.html site.css .htaccess]
|
54
|
+
|
55
|
+
@site.exclude = excludes + ["exclude*"]
|
56
|
+
assert_equal files, @site.filter_entries(excludes + files + ["excludeA"])
|
57
|
+
end
|
58
|
+
|
59
|
+
should "not filter entries within include" do
|
60
|
+
includes = %w[_index.html .htaccess include*]
|
61
|
+
files = %w[index.html _index.html .htaccess includeA]
|
62
|
+
|
63
|
+
@site.include = includes
|
64
|
+
assert_equal files, @site.filter_entries(files)
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
68
|
+
end
|
metadata
ADDED
@@ -0,0 +1,194 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: serum
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Brad Fults
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-03-30 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: safe_yaml
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 0.7.0
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 0.7.0
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rake
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ~>
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: 10.0.3
|
38
|
+
type: :development
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 10.0.3
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: rdoc
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ~>
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '3.11'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '3.11'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: redgreen
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ~>
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '1.2'
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ~>
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '1.2'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: shoulda
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ~>
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: 3.3.2
|
86
|
+
type: :development
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ~>
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: 3.3.2
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: rr
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ~>
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '1.0'
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ~>
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '1.0'
|
110
|
+
description: Serum is a simple object model on static posts with YAML front matter.
|
111
|
+
email: bfults@gmail.com
|
112
|
+
executables: []
|
113
|
+
extensions: []
|
114
|
+
extra_rdoc_files:
|
115
|
+
- README.md
|
116
|
+
- LICENSE
|
117
|
+
files:
|
118
|
+
- Gemfile
|
119
|
+
- LICENSE
|
120
|
+
- Rakefile
|
121
|
+
- lib/serum.rb
|
122
|
+
- lib/serum/core_ext.rb
|
123
|
+
- lib/serum/errors.rb
|
124
|
+
- lib/serum/mime.types
|
125
|
+
- lib/serum/post.rb
|
126
|
+
- lib/serum/site.rb
|
127
|
+
- lib/serum/static_file.rb
|
128
|
+
- serum.gemspec
|
129
|
+
- test/helper.rb
|
130
|
+
- test/source/2008-02-02-not-published.textile
|
131
|
+
- test/source/2008-02-02-published.textile
|
132
|
+
- test/source/2008-10-18-foo-bar.textile
|
133
|
+
- test/source/2008-11-21-complex.textile
|
134
|
+
- test/source/2008-12-03-permalinked-post.textile
|
135
|
+
- test/source/2008-12-13-include.markdown
|
136
|
+
- test/source/2009-01-27-array-categories.textile
|
137
|
+
- test/source/2009-01-27-categories.textile
|
138
|
+
- test/source/2009-01-27-category.textile
|
139
|
+
- test/source/2009-01-27-empty-categories.textile
|
140
|
+
- test/source/2009-01-27-empty-category.textile
|
141
|
+
- test/source/2009-03-12-hash-#1.markdown
|
142
|
+
- test/source/2009-05-18-empty-tag.textile
|
143
|
+
- test/source/2009-05-18-empty-tags.textile
|
144
|
+
- test/source/2009-05-18-tag.textile
|
145
|
+
- test/source/2009-05-18-tags.textile
|
146
|
+
- test/source/2009-05-24-yaml-linebreak.markdown
|
147
|
+
- test/source/2009-06-22-empty-yaml.textile
|
148
|
+
- test/source/2009-06-22-no-yaml.textile
|
149
|
+
- test/source/2010-01-08-triple-dash.markdown
|
150
|
+
- test/source/2010-01-09-date-override.textile
|
151
|
+
- test/source/2010-01-09-time-override.textile
|
152
|
+
- test/source/2010-01-09-timezone-override.textile
|
153
|
+
- test/source/2010-01-16-override-data.textile
|
154
|
+
- test/source/2011-04-12-md-extension.md
|
155
|
+
- test/source/2011-04-12-text-extension.text
|
156
|
+
- test/source/2013-01-02-post-excerpt.markdown
|
157
|
+
- test/source/2013-01-12-nil-layout.textile
|
158
|
+
- test/source/2013-01-12-no-layout.textile
|
159
|
+
- test/suite.rb
|
160
|
+
- test/test_core_ext.rb
|
161
|
+
- test/test_post.rb
|
162
|
+
- test/test_site.rb
|
163
|
+
- README.md
|
164
|
+
homepage: http://github.com/h3h/serum
|
165
|
+
licenses:
|
166
|
+
- MIT
|
167
|
+
post_install_message:
|
168
|
+
rdoc_options:
|
169
|
+
- --charset=UTF-8
|
170
|
+
require_paths:
|
171
|
+
- lib
|
172
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
173
|
+
none: false
|
174
|
+
requirements:
|
175
|
+
- - ! '>='
|
176
|
+
- !ruby/object:Gem::Version
|
177
|
+
version: '0'
|
178
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
179
|
+
none: false
|
180
|
+
requirements:
|
181
|
+
- - ! '>='
|
182
|
+
- !ruby/object:Gem::Version
|
183
|
+
version: '0'
|
184
|
+
requirements: []
|
185
|
+
rubyforge_project: serum
|
186
|
+
rubygems_version: 1.8.24
|
187
|
+
signing_key:
|
188
|
+
specification_version: 2
|
189
|
+
summary: A simple object model on static posts with YAML front matter.
|
190
|
+
test_files:
|
191
|
+
- test/test_core_ext.rb
|
192
|
+
- test/test_post.rb
|
193
|
+
- test/test_site.rb
|
194
|
+
has_rdoc:
|