lonnon-jekyll 0.6.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 (75) hide show
  1. data/.gitignore +6 -0
  2. data/History.txt +151 -0
  3. data/README.textile +613 -0
  4. data/Rakefile +91 -0
  5. data/VERSION.yml +4 -0
  6. data/bin/jekyll +166 -0
  7. data/features/create_sites.feature +57 -0
  8. data/features/embed_filters.feature +74 -0
  9. data/features/pagination.feature +40 -0
  10. data/features/permalinks.feature +65 -0
  11. data/features/post_data.feature +153 -0
  12. data/features/site_configuration.feature +63 -0
  13. data/features/site_data.feature +82 -0
  14. data/features/step_definitions/jekyll_steps.rb +136 -0
  15. data/features/support/env.rb +16 -0
  16. data/lib/jekyll.rb +86 -0
  17. data/lib/jekyll/albino.rb +122 -0
  18. data/lib/jekyll/converters/csv.rb +26 -0
  19. data/lib/jekyll/converters/mephisto.rb +79 -0
  20. data/lib/jekyll/converters/mt.rb +59 -0
  21. data/lib/jekyll/converters/textpattern.rb +50 -0
  22. data/lib/jekyll/converters/typo.rb +49 -0
  23. data/lib/jekyll/converters/wordpress.rb +61 -0
  24. data/lib/jekyll/convertible.rb +139 -0
  25. data/lib/jekyll/core_ext.rb +37 -0
  26. data/lib/jekyll/filters.rb +56 -0
  27. data/lib/jekyll/haml_helpers.rb +15 -0
  28. data/lib/jekyll/layout.rb +37 -0
  29. data/lib/jekyll/page.rb +112 -0
  30. data/lib/jekyll/pager.rb +45 -0
  31. data/lib/jekyll/post.rb +316 -0
  32. data/lib/jekyll/site.rb +326 -0
  33. data/lib/jekyll/tags/highlight.rb +56 -0
  34. data/lib/jekyll/tags/include.rb +31 -0
  35. data/test/helper.rb +27 -0
  36. data/test/source/_includes/sig.markdown +3 -0
  37. data/test/source/_layouts/default.html +27 -0
  38. data/test/source/_layouts/simple.html +1 -0
  39. data/test/source/_posts/2008-02-02-not-published.textile +8 -0
  40. data/test/source/_posts/2008-02-02-published.textile +8 -0
  41. data/test/source/_posts/2008-10-18-foo-bar.textile +8 -0
  42. data/test/source/_posts/2008-11-21-complex.textile +8 -0
  43. data/test/source/_posts/2008-12-03-permalinked-post.textile +9 -0
  44. data/test/source/_posts/2008-12-13-include.markdown +8 -0
  45. data/test/source/_posts/2009-01-27-array-categories.textile +10 -0
  46. data/test/source/_posts/2009-01-27-categories.textile +7 -0
  47. data/test/source/_posts/2009-01-27-category.textile +7 -0
  48. data/test/source/_posts/2009-03-12-hash-#1.markdown +6 -0
  49. data/test/source/_posts/2009-05-18-tag.textile +6 -0
  50. data/test/source/_posts/2009-05-18-tags.textile +9 -0
  51. data/test/source/_posts/2009-06-22-empty-yaml.textile +3 -0
  52. data/test/source/_posts/2009-06-22-no-yaml.textile +1 -0
  53. data/test/source/_posts/2009-11-27-more-divider.markdown +5 -0
  54. data/test/source/about.html +6 -0
  55. data/test/source/category/_posts/2008-9-23-categories.textile +6 -0
  56. data/test/source/contacts.html +5 -0
  57. data/test/source/css/screen.css +76 -0
  58. data/test/source/foo/_posts/bar/2008-12-12-topical-post.textile +8 -0
  59. data/test/source/index.html +22 -0
  60. data/test/source/paginated/_posts/2009-11-29-one-page.markdown +3 -0
  61. data/test/source/paginated/_posts/2009-11-29-red-page.markdown +4 -0
  62. data/test/source/paginated/_posts/2009-11-29-two-page.markdown +3 -0
  63. data/test/source/sitemap.xml +23 -0
  64. data/test/source/win/_posts/2009-05-24-yaml-linebreak.markdown +7 -0
  65. data/test/source/z_category/_posts/2008-9-23-categories.textile +6 -0
  66. data/test/suite.rb +9 -0
  67. data/test/test_configuration.rb +29 -0
  68. data/test/test_filters.rb +54 -0
  69. data/test/test_generated_site.rb +40 -0
  70. data/test/test_page.rb +98 -0
  71. data/test/test_pager.rb +47 -0
  72. data/test/test_post.rb +317 -0
  73. data/test/test_site.rb +85 -0
  74. data/test/test_tags.rb +115 -0
  75. metadata +196 -0
data/test/test_site.rb ADDED
@@ -0,0 +1,85 @@
1
+ require File.dirname(__FILE__) + '/helper'
2
+
3
+ class TestSite < Test::Unit::TestCase
4
+ context "creating sites" do
5
+ setup do
6
+ stub(Jekyll).configuration do
7
+ Jekyll::DEFAULTS.merge({'source' => source_dir, 'destination' => dest_dir})
8
+ end
9
+ @site = Site.new(Jekyll.configuration)
10
+ end
11
+
12
+ should "have an empty tag hash by default" do
13
+ assert_equal Hash.new, @site.tags
14
+ end
15
+
16
+ should "reset data before processing" do
17
+ clear_dest
18
+ @site.process
19
+ before_posts = @site.posts.length
20
+ before_layouts = @site.layouts.length
21
+ before_categories = @site.categories.length
22
+
23
+ @site.process
24
+ assert_equal before_posts, @site.posts.length
25
+ assert_equal before_layouts, @site.layouts.length
26
+ assert_equal before_categories, @site.categories.length
27
+ end
28
+
29
+ should "read layouts" do
30
+ @site.read_layouts
31
+ assert_equal ["default", "simple"].sort, @site.layouts.keys.sort
32
+ end
33
+
34
+ should "read posts" do
35
+ @site.read_posts('')
36
+ posts = Dir[source_dir('_posts', '*')]
37
+ assert_equal posts.size - 1, @site.posts.size
38
+ end
39
+
40
+ should "deploy payload" do
41
+ clear_dest
42
+ @site.process
43
+
44
+ posts = Dir[source_dir("**", "_posts", "*")]
45
+ categories = %w(bar baz category foo z_category publish_test win paginated).sort
46
+
47
+ assert_equal posts.size - 1, @site.posts.size
48
+ assert_equal categories, @site.categories.keys.sort
49
+ assert_equal 4, @site.categories['foo'].size
50
+ end
51
+
52
+ should "filter entries" do
53
+ ent1 = %w[foo.markdown bar.markdown baz.markdown #baz.markdown#
54
+ .baz.markdow foo.markdown~]
55
+ ent2 = %w[.htaccess _posts bla.bla]
56
+
57
+ assert_equal %w[foo.markdown bar.markdown baz.markdown], @site.filter_entries(ent1)
58
+ assert_equal ent2, @site.filter_entries(ent2)
59
+ end
60
+
61
+ should "filter entries with exclude" do
62
+ excludes = %w[README TODO]
63
+ includes = %w[index.html site.css]
64
+
65
+ @site.exclude = excludes
66
+ assert_equal includes, @site.filter_entries(excludes + includes)
67
+ end
68
+
69
+ context 'with an invalid markdown processor in the configuration' do
70
+
71
+ should 'give a meaningful error message' do
72
+ bad_processor = 'not a processor name'
73
+ begin
74
+ Site.new(Jekyll.configuration.merge({ 'markdown' => bad_processor }))
75
+ flunk 'Invalid markdown processors should cause a failure on site creation'
76
+ rescue RuntimeError => e
77
+ assert e.to_s =~ /invalid|bad/i
78
+ assert e.to_s =~ %r{#{bad_processor}}
79
+ end
80
+ end
81
+
82
+ end
83
+
84
+ end
85
+ end
data/test/test_tags.rb ADDED
@@ -0,0 +1,115 @@
1
+ require File.dirname(__FILE__) + '/helper'
2
+
3
+ class TestTags < Test::Unit::TestCase
4
+
5
+ def create_post(content, override = {}, markdown = true)
6
+ stub(Jekyll).configuration do
7
+ Jekyll::DEFAULTS.merge({'pygments' => true}).merge(override)
8
+ end
9
+ site = Site.new(Jekyll.configuration)
10
+ info = { :filters => [Jekyll::Filters], :registers => { :site => site } }
11
+
12
+ if markdown
13
+ payload = {"content_type" => "markdown"}
14
+ else
15
+ payload = {"content_type" => "textile"}
16
+ end
17
+ @result = Liquid::Template.parse(content).render(payload, info)
18
+ if markdown
19
+ @result = site.markdown(@result)
20
+ else
21
+ @result = site.textile(@result)
22
+ end
23
+ end
24
+
25
+ def fill_post(code, override = {})
26
+ content = <<CONTENT
27
+ ---
28
+ title: This is a test
29
+ ---
30
+
31
+ This document results in a markdown error with maruku
32
+
33
+ {% highlight text %}
34
+ #{code}
35
+ {% endhighlight %}
36
+ CONTENT
37
+ create_post(content, override)
38
+ end
39
+
40
+ context "post content has highlight tag" do
41
+ setup do
42
+ fill_post("test")
43
+ end
44
+
45
+ should "not cause a markdown error" do
46
+ assert_no_match /markdown\-html\-error/, @result
47
+ end
48
+
49
+ should "render markdown with pygments line handling" do
50
+ assert_match %{<pre>test\n</pre>}, @result
51
+ end
52
+ end
53
+
54
+ context "post content has highlight tag with UTF character" do
55
+ setup do
56
+ fill_post("Æ")
57
+ end
58
+
59
+ should "render markdown with pygments line handling" do
60
+ assert_match %{<pre>Æ\n</pre>}, @result
61
+ end
62
+ end
63
+
64
+ context "simple post with markdown and pre tags" do
65
+ setup do
66
+ @content = <<CONTENT
67
+ ---
68
+ title: Maruku vs. RDiscount
69
+ ---
70
+
71
+ _FIGHT!_
72
+
73
+ {% highlight ruby %}
74
+ puts "3..2..1.."
75
+ __FILE__
76
+ {% endhighlight %}
77
+
78
+ *FINISH HIM*
79
+ CONTENT
80
+ end
81
+
82
+ context "using Textile" do
83
+ setup do
84
+ create_post(@content, {}, false)
85
+ end
86
+
87
+ # Broken in RedCloth 4.1.9
88
+ should "not textilize highlight block" do
89
+ assert_no_match %r{3\.\.2\.\.1\.\.&quot;</span><br />}, @result
90
+ end
91
+ end
92
+
93
+ context "using Maruku" do
94
+ setup do
95
+ create_post(@content)
96
+ end
97
+
98
+ should "parse correctly" do
99
+ assert_match %r{<em>FIGHT!</em>}, @result
100
+ assert_match %r{<em>FINISH HIM</em>}, @result
101
+ end
102
+ end
103
+
104
+ context "using RDiscount" do
105
+ setup do
106
+ create_post(@content, 'markdown' => 'rdiscount')
107
+ end
108
+
109
+ should "parse correctly" do
110
+ assert_match %r{<em>FIGHT!</em>}, @result
111
+ assert_match %r{<em>FINISH HIM</em>}, @result
112
+ end
113
+ end
114
+ end
115
+ end
metadata ADDED
@@ -0,0 +1,196 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: lonnon-jekyll
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.6.0
5
+ platform: ruby
6
+ authors:
7
+ - Tom Preston-Werner, Henrik Nyh, Lonnon Foster
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-11-29 00:00:00 -08:00
13
+ default_executable: jekyll
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: RedCloth
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 4.2.1
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: liquid
27
+ type: :runtime
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 1.9.0
34
+ version:
35
+ - !ruby/object:Gem::Dependency
36
+ name: classifier
37
+ type: :runtime
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: 1.3.1
44
+ version:
45
+ - !ruby/object:Gem::Dependency
46
+ name: maruku
47
+ type: :runtime
48
+ version_requirement:
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: 0.5.9
54
+ version:
55
+ - !ruby/object:Gem::Dependency
56
+ name: directory_watcher
57
+ type: :runtime
58
+ version_requirement:
59
+ version_requirements: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: 1.1.1
64
+ version:
65
+ - !ruby/object:Gem::Dependency
66
+ name: open4
67
+ type: :runtime
68
+ version_requirement:
69
+ version_requirements: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: 0.9.6
74
+ version:
75
+ description: Jekyll is a simple, blog aware, static site generator.
76
+ email: lonnon.foster@gmail.com
77
+ executables:
78
+ - jekyll
79
+ extensions: []
80
+
81
+ extra_rdoc_files:
82
+ - README.textile
83
+ files:
84
+ - .gitignore
85
+ - History.txt
86
+ - README.textile
87
+ - Rakefile
88
+ - VERSION.yml
89
+ - bin/jekyll
90
+ - features/create_sites.feature
91
+ - features/embed_filters.feature
92
+ - features/pagination.feature
93
+ - features/permalinks.feature
94
+ - features/post_data.feature
95
+ - features/site_configuration.feature
96
+ - features/site_data.feature
97
+ - features/step_definitions/jekyll_steps.rb
98
+ - features/support/env.rb
99
+ - lib/jekyll.rb
100
+ - lib/jekyll/albino.rb
101
+ - lib/jekyll/converters/csv.rb
102
+ - lib/jekyll/converters/mephisto.rb
103
+ - lib/jekyll/converters/mt.rb
104
+ - lib/jekyll/converters/textpattern.rb
105
+ - lib/jekyll/converters/typo.rb
106
+ - lib/jekyll/converters/wordpress.rb
107
+ - lib/jekyll/convertible.rb
108
+ - lib/jekyll/core_ext.rb
109
+ - lib/jekyll/filters.rb
110
+ - lib/jekyll/haml_helpers.rb
111
+ - lib/jekyll/layout.rb
112
+ - lib/jekyll/page.rb
113
+ - lib/jekyll/pager.rb
114
+ - lib/jekyll/post.rb
115
+ - lib/jekyll/site.rb
116
+ - lib/jekyll/tags/highlight.rb
117
+ - lib/jekyll/tags/include.rb
118
+ - test/helper.rb
119
+ - test/source/_includes/sig.markdown
120
+ - test/source/_layouts/default.html
121
+ - test/source/_layouts/simple.html
122
+ - test/source/_posts/2008-02-02-not-published.textile
123
+ - test/source/_posts/2008-02-02-published.textile
124
+ - test/source/_posts/2008-10-18-foo-bar.textile
125
+ - test/source/_posts/2008-11-21-complex.textile
126
+ - test/source/_posts/2008-12-03-permalinked-post.textile
127
+ - test/source/_posts/2008-12-13-include.markdown
128
+ - test/source/_posts/2009-01-27-array-categories.textile
129
+ - test/source/_posts/2009-01-27-categories.textile
130
+ - test/source/_posts/2009-01-27-category.textile
131
+ - test/source/_posts/2009-03-12-hash-#1.markdown
132
+ - test/source/_posts/2009-05-18-tag.textile
133
+ - test/source/_posts/2009-05-18-tags.textile
134
+ - test/source/_posts/2009-06-22-empty-yaml.textile
135
+ - test/source/_posts/2009-06-22-no-yaml.textile
136
+ - test/source/_posts/2009-11-27-more-divider.markdown
137
+ - test/source/about.html
138
+ - test/source/category/_posts/2008-9-23-categories.textile
139
+ - test/source/contacts.html
140
+ - test/source/css/screen.css
141
+ - test/source/foo/_posts/bar/2008-12-12-topical-post.textile
142
+ - test/source/index.html
143
+ - test/source/paginated/_posts/2009-11-29-one-page.markdown
144
+ - test/source/paginated/_posts/2009-11-29-red-page.markdown
145
+ - test/source/paginated/_posts/2009-11-29-two-page.markdown
146
+ - test/source/sitemap.xml
147
+ - test/source/win/_posts/2009-05-24-yaml-linebreak.markdown
148
+ - test/source/z_category/_posts/2008-9-23-categories.textile
149
+ - test/suite.rb
150
+ - test/test_configuration.rb
151
+ - test/test_filters.rb
152
+ - test/test_generated_site.rb
153
+ - test/test_page.rb
154
+ - test/test_pager.rb
155
+ - test/test_post.rb
156
+ - test/test_site.rb
157
+ - test/test_tags.rb
158
+ has_rdoc: true
159
+ homepage: http://github.com/lonnon/jekyll
160
+ licenses: []
161
+
162
+ post_install_message:
163
+ rdoc_options:
164
+ - --charset=UTF-8
165
+ require_paths:
166
+ - lib
167
+ required_ruby_version: !ruby/object:Gem::Requirement
168
+ requirements:
169
+ - - ">="
170
+ - !ruby/object:Gem::Version
171
+ version: "0"
172
+ version:
173
+ required_rubygems_version: !ruby/object:Gem::Requirement
174
+ requirements:
175
+ - - ">="
176
+ - !ruby/object:Gem::Version
177
+ version: "0"
178
+ version:
179
+ requirements: []
180
+
181
+ rubyforge_project: lonnon-jekyll
182
+ rubygems_version: 1.3.5
183
+ signing_key:
184
+ specification_version: 3
185
+ summary: Jekyll is a simple, blog aware, static site generator.
186
+ test_files:
187
+ - test/helper.rb
188
+ - test/suite.rb
189
+ - test/test_configuration.rb
190
+ - test/test_filters.rb
191
+ - test/test_generated_site.rb
192
+ - test/test_page.rb
193
+ - test/test_pager.rb
194
+ - test/test_post.rb
195
+ - test/test_site.rb
196
+ - test/test_tags.rb