lonnon-jekyll 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
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