elq-jekyll 0.4.2

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 (42) hide show
  1. data/History.txt +105 -0
  2. data/README.textile +490 -0
  3. data/VERSION.yml +4 -0
  4. data/bin/jekyll +137 -0
  5. data/lib/jekyll.rb +67 -0
  6. data/lib/jekyll/albino.rb +119 -0
  7. data/lib/jekyll/converters/csv.rb +26 -0
  8. data/lib/jekyll/converters/mephisto.rb +79 -0
  9. data/lib/jekyll/converters/mt.rb +59 -0
  10. data/lib/jekyll/converters/textpattern.rb +50 -0
  11. data/lib/jekyll/converters/typo.rb +49 -0
  12. data/lib/jekyll/converters/wordpress.rb +56 -0
  13. data/lib/jekyll/convertible.rb +71 -0
  14. data/lib/jekyll/core_ext.rb +22 -0
  15. data/lib/jekyll/filters.rb +43 -0
  16. data/lib/jekyll/layout.rb +33 -0
  17. data/lib/jekyll/page.rb +64 -0
  18. data/lib/jekyll/post.rb +188 -0
  19. data/lib/jekyll/site.rb +170 -0
  20. data/lib/jekyll/tags/highlight.rb +56 -0
  21. data/lib/jekyll/tags/include.rb +31 -0
  22. data/test/helper.rb +14 -0
  23. data/test/source/_includes/sig.markdown +3 -0
  24. data/test/source/_layouts/default.html +27 -0
  25. data/test/source/_layouts/simple.html +1 -0
  26. data/test/source/_posts/2008-10-18-foo-bar.textile +8 -0
  27. data/test/source/_posts/2008-11-21-complex.textile +8 -0
  28. data/test/source/_posts/2008-12-03-permalinked-post.textile +9 -0
  29. data/test/source/_posts/2008-12-13-include.markdown +8 -0
  30. data/test/source/category/_posts/2008-9-23-categories.textile +6 -0
  31. data/test/source/css/screen.css +76 -0
  32. data/test/source/foo/_posts/bar/2008-12-12-topical-post.textile +8 -0
  33. data/test/source/index.html +22 -0
  34. data/test/source/z_category/_posts/2008-9-23-categories.textile +6 -0
  35. data/test/suite.rb +9 -0
  36. data/test/test_filters.rb +41 -0
  37. data/test/test_generated_site.rb +32 -0
  38. data/test/test_jekyll.rb +0 -0
  39. data/test/test_post.rb +135 -0
  40. data/test/test_site.rb +36 -0
  41. data/test/test_tags.rb +31 -0
  42. metadata +211 -0
@@ -0,0 +1,22 @@
1
+ ---
2
+ layout: default
3
+ title: Tom Preston-Werner
4
+ ---
5
+
6
+ h1. Welcome to my site
7
+
8
+ h2. Please read our {{ site.posts | size }} Posts
9
+
10
+ <ul>
11
+ {% for post in site.posts %}
12
+ <li>{{ post.date }} <a href="{{ post.url }}">{{ post.title }}</a></li>
13
+ {% endfor %}
14
+ </ul>
15
+
16
+ {% assign first_post = site.posts.first %}
17
+ <div id="first_post">
18
+ <h1>{{ first_post.title }}</h1>
19
+ <div>
20
+ {{ first_post.content }}
21
+ </div>
22
+ </div>
@@ -0,0 +1,6 @@
1
+ ---
2
+ layout: default
3
+ title: Categories
4
+ ---
5
+
6
+ Categories _should_ work. Even if ordered after index.
data/test/suite.rb ADDED
@@ -0,0 +1,9 @@
1
+ require 'test/unit'
2
+
3
+ # for some reason these tests fail when run via TextMate
4
+ # but succeed when run on the command line.
5
+
6
+ tests = Dir["#{File.dirname(__FILE__)}/test_*.rb"]
7
+ tests.each do |file|
8
+ require file
9
+ end
@@ -0,0 +1,41 @@
1
+ require File.dirname(__FILE__) + '/helper'
2
+
3
+ class TestFilters < Test::Unit::TestCase
4
+
5
+ class JekyllFilter
6
+ include Jekyll::Filters
7
+ end
8
+
9
+ def setup
10
+ @filter = JekyllFilter.new
11
+ end
12
+
13
+ def test_textilize_with_simple_string
14
+ assert_equal "<p>something <strong>really</strong> simple</p>", @filter.textilize("something *really* simple")
15
+ end
16
+
17
+ def test_array_to_sentence_string_with_no_args
18
+ assert_equal "", @filter.array_to_sentence_string([])
19
+ end
20
+
21
+ def test_array_to_sentence_string_with_one_arg
22
+ assert_equal "1", @filter.array_to_sentence_string([1])
23
+ assert_equal "chunky", @filter.array_to_sentence_string(["chunky"])
24
+ end
25
+
26
+ def test_array_to_sentence_string_with_two_args
27
+ assert_equal "1 and 2", @filter.array_to_sentence_string([1, 2])
28
+ assert_equal "chunky and bacon", @filter.array_to_sentence_string(["chunky", "bacon"])
29
+ end
30
+
31
+ def test_array_to_sentence_string_with_multiple_args
32
+ assert_equal "1, 2, 3, and 4", @filter.array_to_sentence_string([1, 2, 3, 4])
33
+ assert_equal "chunky, bacon, bits, and pieces", @filter.array_to_sentence_string(["chunky", "bacon", "bits", "pieces"])
34
+ end
35
+
36
+ def test_xml_escape_with_ampersands
37
+ assert_equal "AT&amp;T", @filter.xml_escape("AT&T")
38
+ assert_equal "&lt;code&gt;command &amp;lt;filename&amp;gt;&lt;/code&gt;", @filter.xml_escape("<code>command &lt;filename&gt;</code>")
39
+ end
40
+
41
+ end
@@ -0,0 +1,32 @@
1
+ require File.dirname(__FILE__) + '/helper'
2
+
3
+ class TestGeneratedSite < Test::Unit::TestCase
4
+ def setup
5
+ clear_dest
6
+ @source = File.join(File.dirname(__FILE__), *%w[source])
7
+ @s = Site.new(@source, dest_dir)
8
+ @s.process
9
+ @index = File.read(File.join(dest_dir, 'index.html'))
10
+ end
11
+
12
+ def test_site_posts_in_index
13
+ # confirm that {{ site.posts }} is working
14
+ assert @index.include?("#{@s.posts.size} Posts")
15
+ end
16
+
17
+ def test_post_content_in_index
18
+ # confirm that the {{ post.content }} is rendered OK
19
+ latest_post = Dir[File.join(@source, '_posts/*')].last
20
+ post = Post.new(@source, '', File.basename(latest_post))
21
+ Jekyll.content_type = post.determine_content_type
22
+ post.transform
23
+ assert @index.include?(post.content)
24
+ end
25
+
26
+ def test_unpublished_posts_are_hidden
27
+ published = Dir[File.join(dest_dir, 'publish_test/2008/02/02/*.html')].map {|f| File.basename(f)}
28
+
29
+ assert_equal 1, published.size
30
+ assert_equal "published.html", published.first
31
+ end
32
+ end
File without changes
data/test/test_post.rb ADDED
@@ -0,0 +1,135 @@
1
+ require File.dirname(__FILE__) + '/helper'
2
+
3
+ class TestPost < Test::Unit::TestCase
4
+ def setup
5
+
6
+ end
7
+
8
+ def test_valid
9
+ assert Post.valid?("2008-10-19-foo-bar.textile")
10
+ assert Post.valid?("foo/bar/2008-10-19-foo-bar.textile")
11
+
12
+ assert !Post.valid?("lol2008-10-19-foo-bar.textile")
13
+ assert !Post.valid?("blah")
14
+ end
15
+
16
+ def test_process
17
+ p = Post.allocate
18
+ p.process("2008-10-19-foo-bar.textile")
19
+
20
+ assert_equal Time.parse("2008-10-19"), p.date
21
+ assert_equal "foo-bar", p.slug
22
+ assert_equal ".textile", p.ext
23
+ end
24
+
25
+ def test_url
26
+ p = Post.allocate
27
+ p.categories = []
28
+ p.process("2008-10-19-foo-bar.textile")
29
+
30
+ assert_equal "/2008/10/19/foo-bar.html", p.url
31
+ end
32
+
33
+ def test_permalink
34
+ p = Post.allocate
35
+ p.process("2008-12-03-permalinked-post.textile")
36
+ p.read_yaml(File.join(File.dirname(__FILE__), *%w[source _posts]), "2008-12-03-permalinked-post.textile")
37
+
38
+ assert_equal "my_category/permalinked-post", p.permalink
39
+ end
40
+
41
+ def test_dir_respects_permalink
42
+ p = Post.allocate
43
+ p.process("2008-12-03-permalinked-post.textile")
44
+ p.read_yaml(File.join(File.dirname(__FILE__), *%w[source _posts]), "2008-12-03-permalinked-post.textile")
45
+
46
+ assert_equal "my_category/", p.dir
47
+ end
48
+
49
+ def test_url_respects_permalink
50
+ p = Post.allocate
51
+ p.process("2008-12-03-permalinked-post.textile")
52
+ p.read_yaml(File.join(File.dirname(__FILE__), *%w[source _posts]), "2008-12-03-permalinked-post.textile")
53
+
54
+ assert_equal "my_category/permalinked-post", p.url
55
+ end
56
+
57
+ def test_read_yaml
58
+ p = Post.allocate
59
+ p.read_yaml(File.join(File.dirname(__FILE__), *%w[source _posts]), "2008-10-18-foo-bar.textile")
60
+
61
+ assert_equal({"title" => "Foo Bar", "layout" => "default"}, p.data)
62
+ assert_equal "\nh1. {{ page.title }}\n\nBest *post* ever", p.content
63
+ end
64
+
65
+ def test_transform
66
+ p = Post.allocate
67
+ p.process("2008-10-18-foo-bar.textile")
68
+ p.read_yaml(File.join(File.dirname(__FILE__), *%w[source _posts]), "2008-10-18-foo-bar.textile")
69
+ p.transform
70
+
71
+ assert_equal "<h1>{{ page.title }}</h1>\n<p>Best <strong>post</strong> ever</p>", p.content
72
+ end
73
+
74
+ def test_published
75
+ p = Post.new(File.join(File.dirname(__FILE__), *%w[source]), '', "2008-02-02-published.textile")
76
+ assert_equal true, p.published
77
+ end
78
+
79
+ def test_not_published
80
+ p = Post.new(File.join(File.dirname(__FILE__), *%w[source]), '', "2008-02-02-not-published.textile")
81
+ assert_equal false, p.published
82
+ end
83
+
84
+ def test_yaml_category
85
+ p = Post.new(File.join(File.dirname(__FILE__), *%w[source]), '', "2009-01-27-category.textile")
86
+ assert p.categories.include?('foo')
87
+ end
88
+
89
+ def test_yaml_categories
90
+ p = Post.new(File.join(File.dirname(__FILE__), *%w[source]), '', "2009-01-27-categories.textile")
91
+ assert p.categories.include?('foo')
92
+ assert p.categories.include?('bar')
93
+ assert p.categories.include?('baz')
94
+ end
95
+
96
+ def test_render
97
+ p = Post.new(File.join(File.dirname(__FILE__), *%w[source]), '', "2008-10-18-foo-bar.textile")
98
+ layouts = {"default" => Layout.new(File.join(File.dirname(__FILE__), *%w[source _layouts]), "simple.html")}
99
+ p.render(layouts, {"site" => {"posts" => []}})
100
+
101
+ assert_equal "<<< <h1>Foo Bar</h1>\n<p>Best <strong>post</strong> ever</p> >>>", p.output
102
+ end
103
+
104
+ def test_write
105
+ clear_dest
106
+
107
+ p = Post.new(File.join(File.dirname(__FILE__), *%w[source]), '', "2008-10-18-foo-bar.textile")
108
+ layouts = {"default" => Layout.new(File.join(File.dirname(__FILE__), *%w[source _layouts]), "simple.html")}
109
+ p.render(layouts, {"site" => {"posts" => []}})
110
+ p.write(dest_dir)
111
+ end
112
+
113
+ def test_data
114
+ p = Post.new(File.join(File.dirname(__FILE__), *%w[source]), '', "2008-11-21-complex.textile")
115
+ layouts = {"default" => Layout.new(File.join(File.dirname(__FILE__), *%w[source _layouts]), "simple.html")}
116
+ p.render(layouts, {"site" => {"posts" => []}})
117
+
118
+ assert_equal "<<< <p>url: /2008/11/21/complex.html<br />\ndate: #{Time.parse("2008-11-21")}<br />\nid: /2008/11/21/complex</p> >>>", p.output
119
+ end
120
+
121
+ def test_categories_and_topics
122
+ p = Post.new(File.join(File.dirname(__FILE__), *%w[source]), 'foo', 'bar/2008-12-12-topical-post.textile')
123
+ assert_equal ['foo'], p.categories
124
+ assert_equal ['bar'], p.topics
125
+ end
126
+
127
+ def test_include
128
+ Jekyll.source = File.join(File.dirname(__FILE__), *%w[source])
129
+ p = Post.new(File.join(File.dirname(__FILE__), *%w[source]), '', "2008-12-13-include.markdown")
130
+ layouts = {"default" => Layout.new(File.join(File.dirname(__FILE__), *%w[source _layouts]), "simple.html")}
131
+ p.render(layouts, {"site" => {"posts" => []}})
132
+
133
+ assert_equal "<<< <hr />\n<p>Tom Preston-Werner github.com/mojombo</p>\n\n<p>This <em>is</em> cool</p> >>>", p.output
134
+ end
135
+ end
data/test/test_site.rb ADDED
@@ -0,0 +1,36 @@
1
+ require File.dirname(__FILE__) + '/helper'
2
+
3
+ class TestSite < Test::Unit::TestCase
4
+ def setup
5
+ @source = File.join(File.dirname(__FILE__), *%w[source])
6
+ @s = Site.new(@source, dest_dir)
7
+ end
8
+
9
+ def test_site_init
10
+
11
+ end
12
+
13
+ def test_read_layouts
14
+ @s.read_layouts
15
+
16
+ assert_equal ["default", "simple"].sort, @s.layouts.keys.sort
17
+ end
18
+
19
+ def test_read_posts
20
+ @s.read_posts('')
21
+ posts = Dir[File.join(@source, '_posts/*')]
22
+ assert_equal posts.size - 1, @s.posts.size
23
+ end
24
+
25
+ def test_site_payload
26
+ clear_dest
27
+ @s.process
28
+
29
+ posts = Dir[File.join(@source, "**", "_posts/*")]
30
+ categories = %w(bar baz category foo z_category publish_test).sort
31
+
32
+ assert_equal posts.size - 1, @s.posts.size
33
+ assert_equal categories, @s.categories.keys.sort
34
+ assert_equal 3, @s.categories['foo'].size
35
+ end
36
+ end
data/test/test_tags.rb ADDED
@@ -0,0 +1,31 @@
1
+ require File.dirname(__FILE__) + '/helper'
2
+
3
+ class TestTags < Test::Unit::TestCase
4
+
5
+ def setup
6
+ @content = <<CONTENT
7
+ ---
8
+ layout: post
9
+ title: This is a test
10
+
11
+ ---
12
+ This document results in a markdown error with maruku
13
+ {% highlight ruby %}
14
+ puts "hi"
15
+
16
+ puts "bye"
17
+ {% endhighlight %}
18
+
19
+ CONTENT
20
+ end
21
+
22
+ def test_markdown_with_pygments_line_handling
23
+ Jekyll.pygments = true
24
+ Jekyll.content_type = :markdown
25
+
26
+ result = Liquid::Template.parse(@content).render({}, [Jekyll::Filters])
27
+ result = Jekyll.markdown_proc.call(result)
28
+ assert_no_match(/markdown\-html\-error/,result)
29
+ end
30
+
31
+ end
metadata ADDED
@@ -0,0 +1,211 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: elq-jekyll
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.4.2
5
+ platform: ruby
6
+ authors:
7
+ - Eric Lucas
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-02-10 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.0.4
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: eric@whoop.as
77
+ executables:
78
+ - jekyll
79
+ extensions: []
80
+
81
+ extra_rdoc_files: []
82
+
83
+ files:
84
+ - History.txt
85
+ - README.textile
86
+ - VERSION.yml
87
+ - bin/jekyll
88
+ - lib/jekyll
89
+ - lib/jekyll/albino.rb
90
+ - lib/jekyll/converters
91
+ - lib/jekyll/converters/csv.rb
92
+ - lib/jekyll/converters/mephisto.rb
93
+ - lib/jekyll/converters/mt.rb
94
+ - lib/jekyll/converters/textpattern.rb
95
+ - lib/jekyll/converters/typo.rb
96
+ - lib/jekyll/converters/wordpress.rb
97
+ - lib/jekyll/convertible.rb
98
+ - lib/jekyll/core_ext.rb
99
+ - lib/jekyll/filters.rb
100
+ - lib/jekyll/layout.rb
101
+ - lib/jekyll/page.rb
102
+ - lib/jekyll/post.rb
103
+ - lib/jekyll/site.rb
104
+ - lib/jekyll/tags
105
+ - lib/jekyll/tags/highlight.rb
106
+ - lib/jekyll/tags/include.rb
107
+ - lib/jekyll.rb
108
+ - test/dest
109
+ - test/dest/2008
110
+ - test/dest/2008/10
111
+ - test/dest/2008/10/18
112
+ - test/dest/2008/10/18/foo-bar.html
113
+ - test/dest/2008/11
114
+ - test/dest/2008/11/21
115
+ - test/dest/2008/11/21/complex.html
116
+ - test/dest/2008/12
117
+ - test/dest/2008/12/13
118
+ - test/dest/2008/12/13/include.html
119
+ - test/dest/_posts
120
+ - test/dest/_posts/2008-10-18-foo-bar.html
121
+ - test/dest/_posts/2008-11-21-complex.html
122
+ - test/dest/_posts/2008-12-03-permalinked-post.html
123
+ - test/dest/_posts/2008-12-13-include.html
124
+ - test/dest/category
125
+ - test/dest/category/2008
126
+ - test/dest/category/2008/09
127
+ - test/dest/category/2008/09/23
128
+ - test/dest/category/2008/09/23/categories.html
129
+ - test/dest/category/_posts
130
+ - test/dest/category/_posts/2008-9-23-categories.html
131
+ - test/dest/css
132
+ - test/dest/css/screen.css
133
+ - test/dest/foo
134
+ - test/dest/foo/2008
135
+ - test/dest/foo/2008/12
136
+ - test/dest/foo/2008/12/12
137
+ - test/dest/foo/2008/12/12/topical-post.html
138
+ - test/dest/foo/_posts
139
+ - test/dest/foo/_posts/bar
140
+ - test/dest/foo/_posts/bar/2008-12-12-topical-post.html
141
+ - test/dest/index.html
142
+ - test/dest/my_category
143
+ - test/dest/my_category/permalinked-post
144
+ - test/dest/z_category
145
+ - test/dest/z_category/2008
146
+ - test/dest/z_category/2008/09
147
+ - test/dest/z_category/2008/09/23
148
+ - test/dest/z_category/2008/09/23/categories.html
149
+ - test/dest/z_category/_posts
150
+ - test/dest/z_category/_posts/2008-9-23-categories.html
151
+ - test/helper.rb
152
+ - test/source
153
+ - test/source/_includes
154
+ - test/source/_includes/sig.markdown
155
+ - test/source/_layouts
156
+ - test/source/_layouts/default.html
157
+ - test/source/_layouts/simple.html
158
+ - test/source/_posts
159
+ - test/source/_posts/2008-10-18-foo-bar.textile
160
+ - test/source/_posts/2008-11-21-complex.textile
161
+ - test/source/_posts/2008-12-03-permalinked-post.textile
162
+ - test/source/_posts/2008-12-13-include.markdown
163
+ - test/source/category
164
+ - test/source/category/_posts
165
+ - test/source/category/_posts/2008-9-23-categories.textile
166
+ - test/source/css
167
+ - test/source/css/screen.css
168
+ - test/source/foo
169
+ - test/source/foo/_posts
170
+ - test/source/foo/_posts/bar
171
+ - test/source/foo/_posts/bar/2008-12-12-topical-post.textile
172
+ - test/source/index.html
173
+ - test/source/z_category
174
+ - test/source/z_category/_posts
175
+ - test/source/z_category/_posts/2008-9-23-categories.textile
176
+ - test/suite.rb
177
+ - test/test_filters.rb
178
+ - test/test_generated_site.rb
179
+ - test/test_jekyll.rb
180
+ - test/test_post.rb
181
+ - test/test_site.rb
182
+ - test/test_tags.rb
183
+ has_rdoc: true
184
+ homepage: http://github.com/elq/jekyll
185
+ post_install_message:
186
+ rdoc_options:
187
+ - --inline-source
188
+ - --charset=UTF-8
189
+ require_paths:
190
+ - lib
191
+ required_ruby_version: !ruby/object:Gem::Requirement
192
+ requirements:
193
+ - - ">="
194
+ - !ruby/object:Gem::Version
195
+ version: "0"
196
+ version:
197
+ required_rubygems_version: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - ">="
200
+ - !ruby/object:Gem::Version
201
+ version: "0"
202
+ version:
203
+ requirements: []
204
+
205
+ rubyforge_project: jekyll
206
+ rubygems_version: 1.2.0
207
+ signing_key:
208
+ specification_version: 2
209
+ summary: Jekyll is a simple, blog aware, static site generator.
210
+ test_files: []
211
+