PlainSite 1.2.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.
Files changed (61) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +2 -0
  3. data/Gemfile.lock +43 -0
  4. data/LICENSE +20 -0
  5. data/PlainSite.gemspec +40 -0
  6. data/README.md +276 -0
  7. data/Rakefile +34 -0
  8. data/_config.yml +6 -0
  9. data/bin/plainsite +76 -0
  10. data/lib/PlainSite.rb +5 -0
  11. data/lib/PlainSite/Commands.rb +76 -0
  12. data/lib/PlainSite/Data/Category.rb +235 -0
  13. data/lib/PlainSite/Data/FrontMatterFile.rb +64 -0
  14. data/lib/PlainSite/Data/Post.rb +237 -0
  15. data/lib/PlainSite/Data/PostList.rb +164 -0
  16. data/lib/PlainSite/Data/PostListPage.rb +80 -0
  17. data/lib/PlainSite/RenderTask.rb +235 -0
  18. data/lib/PlainSite/Site.rb +330 -0
  19. data/lib/PlainSite/SocketPatch.rb +15 -0
  20. data/lib/PlainSite/Tpl/ExtMethods.rb +55 -0
  21. data/lib/PlainSite/Tpl/LayErb.rb +73 -0
  22. data/lib/PlainSite/Utils.rb +79 -0
  23. data/lib/PlainSite/_scaffold/_src/assets/README.md +5 -0
  24. data/lib/PlainSite/_scaffold/_src/assets/css/style.css +506 -0
  25. data/lib/PlainSite/_scaffold/_src/assets/favicon.ico +0 -0
  26. data/lib/PlainSite/_scaffold/_src/config.yml +10 -0
  27. data/lib/PlainSite/_scaffold/_src/data/essays/game-of-life.md +15 -0
  28. data/lib/PlainSite/_scaffold/_src/data/essays/phoenix-rebirth.html +15 -0
  29. data/lib/PlainSite/_scaffold/_src/data/programming/hello-world.md +48 -0
  30. data/lib/PlainSite/_scaffold/_src/extensions/TplExt.rb +23 -0
  31. data/lib/PlainSite/_scaffold/_src/routes.rb +49 -0
  32. data/lib/PlainSite/_scaffold/_src/templates/404.html +16 -0
  33. data/lib/PlainSite/_scaffold/_src/templates/about.html +11 -0
  34. data/lib/PlainSite/_scaffold/_src/templates/base.html +32 -0
  35. data/lib/PlainSite/_scaffold/_src/templates/header.html +8 -0
  36. data/lib/PlainSite/_scaffold/_src/templates/index.html +25 -0
  37. data/lib/PlainSite/_scaffold/_src/templates/list.html +41 -0
  38. data/lib/PlainSite/_scaffold/_src/templates/post.html +81 -0
  39. data/lib/PlainSite/_scaffold/_src/templates/rss.erb +29 -0
  40. data/test/CategoryTest.rb +63 -0
  41. data/test/FrontMatterFileTest.rb +40 -0
  42. data/test/LayErbTest.rb +20 -0
  43. data/test/ObjectProxyTest.rb +30 -0
  44. data/test/PostListTest.rb +55 -0
  45. data/test/PostTest.rb +48 -0
  46. data/test/SiteTest.rb +105 -0
  47. data/test/fixtures/2012-06-12-test.md +7 -0
  48. data/test/fixtures/category-demo/2012-06-12-post1.md +7 -0
  49. data/test/fixtures/category-demo/2013-05-01-post2.md +7 -0
  50. data/test/fixtures/category-demo/_meta.yml +1 -0
  51. data/test/fixtures/category-demo/index.md +6 -0
  52. data/test/fixtures/category-demo/sub-category1/sub-post1.md +1 -0
  53. data/test/fixtures/category-demo/sub-category2/sub-post2.md +1 -0
  54. data/test/fixtures/include.erb +1 -0
  55. data/test/fixtures/invalid-front-matter.html +7 -0
  56. data/test/fixtures/layout.erb +1 -0
  57. data/test/fixtures/no-front-matter.html +2 -0
  58. data/test/fixtures/tpl.erb +7 -0
  59. data/test/fixtures/valid-front-matter.html +14 -0
  60. data/test/runtest +6 -0
  61. metadata +202 -0
@@ -0,0 +1,40 @@
1
+ #coding:utf-8
2
+
3
+ require 'test/unit'
4
+ require 'PlainSite/Data/FrontMatterFile'
5
+ include PlainSite::Data
6
+ class FrontMatterFileTest < Test::Unit::TestCase
7
+ FIXTURES_DIR=File.realpath (File.join File.dirname(__FILE__),'fixtures')
8
+ def test_valid
9
+
10
+ valid_file=File.join FIXTURES_DIR,'valid-front-matter.html'
11
+ tags=['Python','Ruby','Java','Haskell']
12
+ f=FrontMatterFile.new valid_file
13
+
14
+ assert f.headers['name']=='valid','Valid header :name'
15
+ assert f.headers['title']=='Hello, World!','Valid header :title'
16
+ assert f.headers['tags']==tags,'Valid header :tags'
17
+ assert f.headers['xxx'].nil?,'Absent header nil'
18
+
19
+ assert f.content=='CONTENT','Valid content'
20
+ end
21
+
22
+ def test_invalid
23
+ invalid_file=File.join FIXTURES_DIR,'invalid-front-matter.html'
24
+
25
+ assert_raise InvalidFrontMatterFileException do
26
+ f=FrontMatterFile.new invalid_file
27
+ f.headers
28
+ end
29
+ end
30
+
31
+ def test_no_front
32
+ no_front_file=File.join FIXTURES_DIR,'no-front-matter.html'
33
+
34
+ assert_raise InvalidFrontMatterFileException do
35
+ f=FrontMatterFile.new no_front_file
36
+ f.headers
37
+ end
38
+
39
+ end
40
+ end
@@ -0,0 +1,20 @@
1
+ #coding:utf-8
2
+
3
+ require 'test/unit'
4
+ require 'PlainSite/Tpl/LayErb'
5
+ include PlainSite::Tpl
6
+
7
+ class LayErbTest < Test::Unit::TestCase
8
+ FIXTURES_DIR=File.realpath (File.join File.dirname(__FILE__),'fixtures')
9
+ def test_render
10
+ tpl=File.join(FIXTURES_DIR,'tpl.erb')
11
+ erb=LayErb.new tpl
12
+ context={
13
+ code: "some_text"
14
+ }
15
+ result=erb.render context
16
+ except="<body>Included:some_text&lt;html&gt;</body>"
17
+ assert result.strip==except,'Tpl render with include and layout'
18
+
19
+ end
20
+ end
@@ -0,0 +1,30 @@
1
+ #coding:utf-8
2
+
3
+ require 'test/unit'
4
+ require 'PlainSite/Utils'
5
+ include PlainSite::Utils
6
+ class ObjectProxyTest < Test::Unit::TestCase
7
+ def test_proxy
8
+
9
+ d=Demo.new
10
+ h={ name:"XMan", age:18 , "home"=>"Earth" }
11
+ a=ObjectProxy.new d,h
12
+
13
+ assert a.hello==d.hello,"Call method hello"
14
+ assert a.name==h[:name],"Get key :name"
15
+ assert a.age==h[:age],"Get key :age"
16
+ assert a.home==h["home"],"Get key home"
17
+ assert a.hi==d.hi,"Call method hi"
18
+
19
+ end
20
+
21
+ end
22
+
23
+ class Demo
24
+ def hello
25
+ "hello"
26
+ end
27
+ def hi
28
+ "hi"
29
+ end
30
+ end
@@ -0,0 +1,55 @@
1
+ #coding:utf-8
2
+
3
+ require 'test/unit'
4
+ require 'grit'
5
+ require 'fileutils'
6
+ require 'PlainSite/Site'
7
+ include PlainSite
8
+
9
+ class PostListTest < Test::Unit::TestCase
10
+ def setup
11
+ @site_root=Dir.mktmpdir 'test-site-'
12
+ end
13
+ def teardown
14
+ FileUtils.rm_rf @site_root
15
+ end
16
+
17
+ def test_list
18
+ site=Site.new @site_root
19
+ site.init_scaffold true
20
+
21
+ posts_path=[]
22
+
23
+ site.data.subs.each do |cat|
24
+ File.delete *(Dir.glob cat.path+'/*')
25
+ 12.times do |i|
26
+ name="2012-#{i+1}-22-hello-#{cat.name}-#{i+1}.md"
27
+ path=File.join cat.path,name
28
+ posts_path.push path
29
+ File.open(path,'wb') do |f|
30
+ f.write "---\ntitle: Hello,#{cat.name},#{i+1}\n---\n XXX"
31
+ end
32
+ end
33
+ end
34
+
35
+ pages=site.data / :essays / '*' / 5
36
+
37
+ assert pages[0].next_page.nil?,"Should first page's next_page be nil"
38
+ assert pages[0].posts.length==5,"Page size should be 5"
39
+ pages[0].posts.each_with_index do |p,i|
40
+ d=Date.new 2012,12-i,22
41
+ assert p.date == d,"Date should be #{d}"
42
+ end
43
+
44
+
45
+ all_posts=site.data['**']
46
+ one_page=(all_posts/100).first
47
+
48
+ posts_path.each do |p|
49
+ assert (all_posts.include? p),"Should PostList include post:#{p}"
50
+ assert (one_page.include? p),"Should PostListPage include post:#{p}"
51
+ end
52
+
53
+
54
+ end
55
+ end
@@ -0,0 +1,48 @@
1
+ #coding:utf-8
2
+
3
+ require 'test/unit'
4
+ require 'fileutils'
5
+
6
+ require 'PlainSite/Data/Post'
7
+ require 'PlainSite/Data/Category'
8
+ require 'PlainSite/Site'
9
+
10
+ include PlainSite::Data
11
+ include PlainSite
12
+
13
+ class PostTest < Test::Unit::TestCase
14
+ FIXTURES_DIR=File.realpath (File.join File.dirname(__FILE__),'fixtures')
15
+ def setup
16
+ @site_root=File.join FIXTURES_DIR,'test-site'
17
+ FileUtils.mkdir_p @site_root
18
+ @site=Site.new @site_root
19
+ @site.init_scaffold true
20
+ end
21
+ def teardown
22
+ FileUtils.rm_rf @site_root
23
+ end
24
+
25
+ def test_content
26
+ content="<p>Hello!Tags:Demo,Example<code class=\"highlight\"><span class=\"nb\">puts</span></code></p>"
27
+ path='2012-06-12-test.md'
28
+ FileUtils.copy_file File.join(FIXTURES_DIR,path),File.join(@site.data_path,path)
29
+
30
+ f=@site.data['test']
31
+ assert f.date.year==2012,'Post year 2012'
32
+ assert f.date.month==6,'Post month 6'
33
+ assert f.date.day==12,'Post day 12'
34
+ assert f.slug=='test','Post slug test'
35
+ assert f.tags==['Demo','Example'],'Post tags read'
36
+
37
+ assert f.relpath==path,'Post relpath'
38
+ assert f.data_id=='test',"Post data_id"
39
+
40
+ assert f.content_type=='md','Post should be markdown'
41
+
42
+
43
+ assert f.content.strip==content,'Post content render not correct'
44
+
45
+ assert Category===f.category,'Post.category'
46
+
47
+ end
48
+ end
@@ -0,0 +1,105 @@
1
+ #coding:utf-8
2
+
3
+ require 'test/unit'
4
+ require 'fileutils'
5
+ require 'set'
6
+ require 'PlainSite/Site'
7
+ require 'git'
8
+ require 'open3'
9
+ include PlainSite
10
+
11
+ class SiteTest < Test::Unit::TestCase
12
+ FIXTURES_DIR=File.realpath (File.join File.dirname(__FILE__),'fixtures')
13
+
14
+ def setup
15
+ @site_root=Dir.mktmpdir 'test-site-'
16
+ @pwd = Dir.pwd
17
+ end
18
+ def teardown
19
+ FileUtils.rm_rf @site_root
20
+ Dir.chdir @pwd
21
+ end
22
+
23
+ def test_diff_build
24
+ site=Site.new @site_root
25
+ site.init_scaffold true
26
+
27
+ to_del_post=site.newpost 'essays/git-delete-test1','Git Test 1'
28
+ to_mod_post=site.newpost 'essays/git-mod-test2','Git Test 2'
29
+ includes=[]
30
+ includes.push (site.newpost 'essays/include-test1','Include Test')
31
+ includes.push (site.newpost 'essays/include-test2','Include Test')
32
+ includes.push (site.newpost 'essays/include-test3','Include Test')
33
+
34
+
35
+ Dir.chdir @site_root
36
+
37
+ Dir.chdir @site_root # `cd #{@site_root}` wont work on fucking MSWindows different partitions
38
+ `git init`
39
+ `git add .`
40
+ `git commit -m Init`
41
+
42
+
43
+ FileUtils.rm to_del_post
44
+ File.open(to_mod_post,'wb') {|f| f.write "---\ntitle: Modified\n---\n Modified!"}
45
+ new_post=site.newpost 'essays/git-untracked','Git Test Untracked'
46
+
47
+ added_template=File.join site.templates_path,'test.html'
48
+ File.open(added_template,'wb') {|f| f.write 'TEST Template'}
49
+
50
+ `git add #{added_template}`
51
+
52
+
53
+ files=site.diff_files includes
54
+
55
+
56
+ assert [to_mod_post,new_post].to_set <= files[:updated_posts].to_set ,"Should include new and modified posts"
57
+ assert files[:has_deleted_posts], "Should had deleted posts"
58
+
59
+ assert (files[:updated_templates].include? added_template), "Should include added template"
60
+
61
+ assert includes.to_set <= files[:updated_posts].to_set ,"Should force include includes-posts"
62
+
63
+ site.build(all:true)
64
+
65
+ end
66
+
67
+ def test_build
68
+ site=Site.new @site_root
69
+ site.init_scaffold true
70
+
71
+
72
+ site.data.subs.each do |cat|
73
+ 20.times do |i|
74
+ name="2014-#{rand 1..12}-#{rand 1..28 }-hello-post#{i}.md"
75
+ path=File.join cat.path,name
76
+ File.open(path,'wb') do |f|
77
+ s= <<-CONTENT
78
+ ---
79
+ title: Hello,post#{i}
80
+ ---
81
+
82
+ **Content here!**
83
+
84
+ Category: <a href="<%=URI.join site.url,"#{cat.data_id}"%>">#{cat.display_name}</a>
85
+
86
+
87
+ <highlight python>
88
+ def hello(name):
89
+ print "Hello,%s" % name
90
+
91
+ if __name__=='__main__':
92
+ hello("World!")
93
+ </highlight>
94
+ CONTENT
95
+ f.write s
96
+ end
97
+ end
98
+ end
99
+
100
+
101
+ site.build(dest:@site_root,local:true)
102
+ #puts "\n#{@site_root}\n"
103
+ #site.serve
104
+ end
105
+ end
@@ -0,0 +1,7 @@
1
+ ---
2
+ titile: Hello world!
3
+ tags: [Demo, Example]
4
+ draft: true
5
+ ---
6
+
7
+ Hello!Tags:<%=tags.join ','%><highlight ruby>puts</highlight>
@@ -0,0 +1,7 @@
1
+ ---
2
+ titile: Hello world!
3
+ tags: [Demo, Example]
4
+ draft: false
5
+ ---
6
+
7
+ Hello!
@@ -0,0 +1,7 @@
1
+ ---
2
+ titile: Hello world!
3
+ tags: [Demo, Example]
4
+ draft: false
5
+ ---
6
+
7
+ Hello!
@@ -0,0 +1 @@
1
+ display_name: 'DemoDemo'
@@ -0,0 +1,6 @@
1
+ ---
2
+ title: Its Index
3
+ ---
4
+
5
+
6
+ ===Hello,Index!
@@ -0,0 +1 @@
1
+ Included:<%=code%>
@@ -0,0 +1,7 @@
1
+ ---
2
+ title xxxx
3
+ ---
4
+
5
+
6
+
7
+ invalid
@@ -0,0 +1 @@
1
+ <body><%=yield :body%></body>
@@ -0,0 +1,2 @@
1
+ ---
2
+ CONTENT
@@ -0,0 +1,7 @@
1
+ ---
2
+ layout: layout.erb
3
+ ---
4
+
5
+ <%content_for :body do %>
6
+ <%=include 'include.erb'%><%raw do%><html><%end%>
7
+ <%end %>
@@ -0,0 +1,14 @@
1
+ ---
2
+ title: Hello, World!
3
+ name: valid
4
+ tags: [Python,Ruby,Java,Haskell]
5
+ ---
6
+
7
+
8
+
9
+
10
+ CONTENT
11
+
12
+
13
+
14
+
@@ -0,0 +1,6 @@
1
+ #!/bin/bash
2
+
3
+ for i in $@;
4
+ do
5
+ ruby -I ../lib/ "$i"
6
+ done;
metadata ADDED
@@ -0,0 +1,202 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: PlainSite
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.2.0
5
+ platform: ruby
6
+ authors:
7
+ - Jex
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-08-25 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: pygments.rb
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.2'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.2'
27
+ - !ruby/object:Gem::Dependency
28
+ name: kramdown
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.17'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.17'
41
+ - !ruby/object:Gem::Dependency
42
+ name: safe_yaml
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: git
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.5'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.5'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '12.3'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '12.3'
83
+ - !ruby/object:Gem::Dependency
84
+ name: commander
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '4.4'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '4.4'
97
+ - !ruby/object:Gem::Dependency
98
+ name: listen
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '3.1'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '3.1'
111
+ description: PlainSite is a simple but powerful static site generator inspired by
112
+ Jekyll and Octopress.
113
+ email: i@jex.im
114
+ executables:
115
+ - plainsite
116
+ extensions: []
117
+ extra_rdoc_files: []
118
+ files:
119
+ - Gemfile
120
+ - Gemfile.lock
121
+ - LICENSE
122
+ - PlainSite.gemspec
123
+ - README.md
124
+ - Rakefile
125
+ - _config.yml
126
+ - bin/plainsite
127
+ - lib/PlainSite.rb
128
+ - lib/PlainSite/Commands.rb
129
+ - lib/PlainSite/Data/Category.rb
130
+ - lib/PlainSite/Data/FrontMatterFile.rb
131
+ - lib/PlainSite/Data/Post.rb
132
+ - lib/PlainSite/Data/PostList.rb
133
+ - lib/PlainSite/Data/PostListPage.rb
134
+ - lib/PlainSite/RenderTask.rb
135
+ - lib/PlainSite/Site.rb
136
+ - lib/PlainSite/SocketPatch.rb
137
+ - lib/PlainSite/Tpl/ExtMethods.rb
138
+ - lib/PlainSite/Tpl/LayErb.rb
139
+ - lib/PlainSite/Utils.rb
140
+ - lib/PlainSite/_scaffold/_src/assets/README.md
141
+ - lib/PlainSite/_scaffold/_src/assets/css/style.css
142
+ - lib/PlainSite/_scaffold/_src/assets/favicon.ico
143
+ - lib/PlainSite/_scaffold/_src/config.yml
144
+ - lib/PlainSite/_scaffold/_src/data/essays/game-of-life.md
145
+ - lib/PlainSite/_scaffold/_src/data/essays/phoenix-rebirth.html
146
+ - lib/PlainSite/_scaffold/_src/data/programming/hello-world.md
147
+ - lib/PlainSite/_scaffold/_src/extensions/TplExt.rb
148
+ - lib/PlainSite/_scaffold/_src/routes.rb
149
+ - lib/PlainSite/_scaffold/_src/templates/404.html
150
+ - lib/PlainSite/_scaffold/_src/templates/about.html
151
+ - lib/PlainSite/_scaffold/_src/templates/base.html
152
+ - lib/PlainSite/_scaffold/_src/templates/header.html
153
+ - lib/PlainSite/_scaffold/_src/templates/index.html
154
+ - lib/PlainSite/_scaffold/_src/templates/list.html
155
+ - lib/PlainSite/_scaffold/_src/templates/post.html
156
+ - lib/PlainSite/_scaffold/_src/templates/rss.erb
157
+ - test/CategoryTest.rb
158
+ - test/FrontMatterFileTest.rb
159
+ - test/LayErbTest.rb
160
+ - test/ObjectProxyTest.rb
161
+ - test/PostListTest.rb
162
+ - test/PostTest.rb
163
+ - test/SiteTest.rb
164
+ - test/fixtures/2012-06-12-test.md
165
+ - test/fixtures/category-demo/2012-06-12-post1.md
166
+ - test/fixtures/category-demo/2013-05-01-post2.md
167
+ - test/fixtures/category-demo/_meta.yml
168
+ - test/fixtures/category-demo/index.md
169
+ - test/fixtures/category-demo/sub-category1/sub-post1.md
170
+ - test/fixtures/category-demo/sub-category2/sub-post2.md
171
+ - test/fixtures/include.erb
172
+ - test/fixtures/invalid-front-matter.html
173
+ - test/fixtures/layout.erb
174
+ - test/fixtures/no-front-matter.html
175
+ - test/fixtures/tpl.erb
176
+ - test/fixtures/valid-front-matter.html
177
+ - test/runtest
178
+ homepage: https://github.com/CJex/PlainSite
179
+ licenses:
180
+ - MIT
181
+ metadata: {}
182
+ post_install_message:
183
+ rdoc_options: []
184
+ require_paths:
185
+ - lib
186
+ required_ruby_version: !ruby/object:Gem::Requirement
187
+ requirements:
188
+ - - ">="
189
+ - !ruby/object:Gem::Version
190
+ version: 1.9.3
191
+ required_rubygems_version: !ruby/object:Gem::Requirement
192
+ requirements:
193
+ - - ">="
194
+ - !ruby/object:Gem::Version
195
+ version: '0'
196
+ requirements: []
197
+ rubyforge_project:
198
+ rubygems_version: 2.6.14.1
199
+ signing_key:
200
+ specification_version: 4
201
+ summary: A Truely Hackable Static Site Generator.
202
+ test_files: []