monad 0.0.2 → 0.0.3
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.
- checksums.yaml +7 -0
- data/CONTRIBUTING.markdown +91 -0
- data/Gemfile +1 -1
- data/History.markdown +772 -0
- data/{README.md → README.markdown} +5 -2
- data/Rakefile +163 -1
- data/bin/monad +86 -30
- data/features/create_sites.feature +54 -25
- data/features/data.feature +65 -0
- data/features/data_sources.feature +10 -10
- data/features/drafts.feature +5 -5
- data/features/embed_filters.feature +10 -10
- data/features/include_tag.feature +48 -0
- data/features/markdown.feature +5 -5
- data/features/pagination.feature +38 -10
- data/features/permalinks.feature +31 -11
- data/features/post_data.feature +41 -41
- data/features/post_excerpts.feature +50 -0
- data/features/site_configuration.feature +47 -26
- data/features/site_data.feature +30 -24
- data/features/step_definitions/{monad_steps.rb → jekyll_steps.rb} +66 -52
- data/features/support/env.rb +27 -8
- data/lib/jekyll.rb +99 -0
- data/lib/jekyll/cleaner.rb +73 -0
- data/lib/{monad → jekyll}/command.rb +6 -6
- data/lib/{monad → jekyll}/commands/build.rb +9 -9
- data/lib/jekyll/commands/doctor.rb +67 -0
- data/lib/jekyll/commands/new.rb +67 -0
- data/lib/jekyll/commands/serve.rb +65 -0
- data/lib/{monad → jekyll}/configuration.rb +60 -18
- data/lib/{monad → jekyll}/converter.rb +1 -1
- data/lib/{monad → jekyll}/converters/identity.rb +1 -1
- data/lib/{monad → jekyll}/converters/markdown.rb +2 -2
- data/lib/jekyll/converters/markdown/kramdown_parser.rb +29 -0
- data/lib/{monad → jekyll}/converters/markdown/maruku_parser.rb +12 -8
- data/lib/{monad → jekyll}/converters/markdown/rdiscount_parser.rb +4 -2
- data/lib/{monad → jekyll}/converters/markdown/redcarpet_parser.rb +1 -1
- data/lib/{monad → jekyll}/converters/textile.rb +1 -1
- data/lib/{monad → jekyll}/convertible.rb +39 -17
- data/lib/{monad → jekyll}/core_ext.rb +22 -4
- data/lib/jekyll/deprecator.rb +36 -0
- data/lib/{monad → jekyll}/draft.rb +1 -1
- data/lib/{monad → jekyll}/drivers/json_driver.rb +1 -1
- data/lib/{monad → jekyll}/drivers/yaml_driver.rb +1 -1
- data/lib/{monad → jekyll}/errors.rb +1 -1
- data/lib/jekyll/excerpt.rb +113 -0
- data/lib/{monad → jekyll}/filters.rb +16 -6
- data/lib/{monad → jekyll}/generator.rb +1 -1
- data/lib/jekyll/generators/pagination.rb +214 -0
- data/lib/{monad → jekyll}/layout.rb +4 -1
- data/lib/{monad → jekyll}/mime.types +0 -0
- data/lib/{monad → jekyll}/page.rb +36 -39
- data/lib/{monad → jekyll}/plugin.rb +1 -1
- data/lib/{monad → jekyll}/post.rb +58 -123
- data/lib/jekyll/related_posts.rb +59 -0
- data/lib/{monad → jekyll}/site.rb +120 -123
- data/lib/{monad → jekyll}/static_file.rb +1 -1
- data/lib/jekyll/stevenson.rb +89 -0
- data/lib/jekyll/tags/gist.rb +48 -0
- data/lib/{monad → jekyll}/tags/highlight.rb +3 -3
- data/lib/jekyll/tags/include.rb +135 -0
- data/lib/{monad → jekyll}/tags/post_url.rb +8 -6
- data/lib/jekyll/url.rb +67 -0
- data/lib/monad.rb +36 -27
- data/lib/site_template/_config.yml +2 -1
- data/lib/site_template/_layouts/default.html +21 -23
- data/lib/site_template/_layouts/post.html +1 -1
- data/lib/site_template/_posts/{0000-00-00-welcome-to-monad.markdown.erb → 0000-00-00-welcome-to-jekyll.markdown.erb} +6 -6
- data/lib/site_template/css/main.css +22 -27
- data/lib/site_template/index.html +2 -2
- data/monad.gemspec +153 -52
- data/site/.gitignore +4 -0
- data/site/CNAME +1 -0
- data/site/README +1 -0
- data/site/_config.yml +6 -0
- data/site/_includes/analytics.html +32 -0
- data/site/_includes/docs_contents.html +16 -0
- data/site/_includes/docs_contents_mobile.html +23 -0
- data/site/_includes/docs_option.html +11 -0
- data/site/_includes/docs_ul.html +20 -0
- data/site/_includes/footer.html +15 -0
- data/site/_includes/header.html +18 -0
- data/site/_includes/news_contents.html +23 -0
- data/site/_includes/news_contents_mobile.html +11 -0
- data/site/_includes/news_item.html +24 -0
- data/site/_includes/primary-nav-items.html +14 -0
- data/site/_includes/section_nav.html +22 -0
- data/site/_includes/top.html +17 -0
- data/site/_layouts/default.html +12 -0
- data/site/_layouts/docs.html +23 -0
- data/site/_layouts/news.html +19 -0
- data/site/_layouts/news_item.html +27 -0
- data/site/_posts/2013-05-06-jekyll-1-0-0-released.markdown +23 -0
- data/site/_posts/2013-05-08-jekyll-1-0-1-released.markdown +27 -0
- data/site/_posts/2013-05-12-jekyll-1-0-2-released.markdown +28 -0
- data/site/_posts/2013-06-07-jekyll-1-0-3-released.markdown +25 -0
- data/site/_posts/2013-07-14-jekyll-1-1-0-released.markdown +27 -0
- data/site/_posts/2013-07-24-jekyll-1-1-1-released.markdown +31 -0
- data/site/_posts/2013-07-25-jekyll-1-0-4-released.markdown +20 -0
- data/site/_posts/2013-07-25-jekyll-1-1-2-released.markdown +20 -0
- data/site/_posts/2013-09-06-jekyll-1-2-0-released.markdown +23 -0
- data/site/_posts/2013-09-14-jekyll-1-2-1-released.markdown +19 -0
- data/site/css/gridism.css +110 -0
- data/site/css/normalize.css +1 -0
- data/site/css/pygments.css +70 -0
- data/site/css/style.css +946 -0
- data/site/docs/configuration.md +373 -0
- data/site/docs/contributing.md +128 -0
- data/site/docs/datafiles.md +63 -0
- data/site/docs/deployment-methods.md +109 -0
- data/site/docs/drafts.md +20 -0
- data/site/docs/extras.md +56 -0
- data/site/docs/frontmatter.md +180 -0
- data/site/docs/github-pages.md +91 -0
- data/site/docs/heroku.md +9 -0
- data/site/docs/history.md +722 -0
- data/site/docs/index.md +52 -0
- data/site/docs/installation.md +76 -0
- data/site/docs/migrations.md +257 -0
- data/site/docs/pages.md +86 -0
- data/site/docs/pagination.md +211 -0
- data/site/docs/permalinks.md +180 -0
- data/site/docs/plugins.md +508 -0
- data/site/docs/posts.md +181 -0
- data/site/docs/quickstart.md +32 -0
- data/site/docs/resources.md +46 -0
- data/site/docs/sites.md +29 -0
- data/site/docs/structure.md +190 -0
- data/site/docs/templates.md +319 -0
- data/site/docs/troubleshooting.md +150 -0
- data/site/docs/upgrading.md +146 -0
- data/site/docs/usage.md +63 -0
- data/site/docs/variables.md +322 -0
- data/site/favicon.png +0 -0
- data/site/feed.xml +36 -0
- data/site/freenode.txt +1 -0
- data/site/img/article-footer.png +0 -0
- data/site/img/footer-arrow.png +0 -0
- data/site/img/footer-logo.png +0 -0
- data/site/img/logo-2x.png +0 -0
- data/site/img/octojekyll.png +0 -0
- data/site/img/tube.png +0 -0
- data/site/img/tube1x.png +0 -0
- data/site/index.html +90 -0
- data/site/js/modernizr-2.5.3.min.js +4 -0
- data/site/news/index.html +10 -0
- data/site/news/releases/index.html +10 -0
- data/test/helper.rb +6 -3
- data/test/source/+/foo.md +7 -0
- data/test/source/_data/languages.yml +2 -0
- data/test/source/_data/members.yaml +7 -0
- data/test/source/_data/products.yml +4 -0
- data/test/source/_includes/params.html +7 -0
- data/test/source/_layouts/default.html +1 -1
- data/test/source/_layouts/post/simple.html +1 -0
- data/test/source/_plugins/dummy.rb +1 -1
- data/test/source/_posts/2013-01-02-post-excerpt.markdown +1 -1
- data/test/source/_posts/2013-07-22-post-excerpt-with-layout.markdown +23 -0
- data/test/source/_posts/2013-08-01-mkdn-extension.mkdn +0 -0
- data/test/source/deal.with.dots.html +1 -1
- data/test/source/products.yml +4 -0
- data/test/test_configuration.rb +46 -11
- data/test/test_convertible.rb +2 -2
- data/test/test_excerpt.rb +78 -0
- data/test/test_filters.rb +4 -4
- data/test/test_generated_site.rb +13 -13
- data/test/test_json_driver.rb +9 -9
- data/test/test_kramdown.rb +32 -5
- data/test/test_new_command.rb +8 -8
- data/test/test_page.rb +12 -3
- data/test/test_pager.rb +34 -33
- data/test/test_post.rb +34 -26
- data/test/test_redcloth.rb +3 -3
- data/test/test_related_posts.rb +47 -0
- data/test/test_site.rb +102 -44
- data/test/test_tags.rb +168 -23
- data/test/test_url.rb +28 -0
- data/test/test_yaml_driver.rb +6 -6
- metadata +215 -137
- data/lib/monad/commands/doctor.rb +0 -29
- data/lib/monad/commands/new.rb +0 -50
- data/lib/monad/commands/serve.rb +0 -33
- data/lib/monad/converters/markdown/kramdown_parser.rb +0 -44
- data/lib/monad/deprecator.rb +0 -32
- data/lib/monad/generators/pagination.rb +0 -143
- data/lib/monad/logger.rb +0 -54
- data/lib/monad/tags/gist.rb +0 -30
- data/lib/monad/tags/include.rb +0 -37
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
Feature: Post excerpts
|
|
2
|
+
As a hacker who likes to blog
|
|
3
|
+
I want to be able to make a static site
|
|
4
|
+
In order to share my awesome ideas with the interwebs
|
|
5
|
+
But some people can only focus for a few moments
|
|
6
|
+
So just give them a taste
|
|
7
|
+
|
|
8
|
+
Scenario: An excerpt without a layout
|
|
9
|
+
Given I have an "index.html" page that contains "{% for post in site.posts %}{{ post.excerpt }}{% endfor %}"
|
|
10
|
+
And I have a _posts directory
|
|
11
|
+
And I have the following posts:
|
|
12
|
+
| title | date | layout | content |
|
|
13
|
+
| entry1 | 2007-12-31 | post | content for entry1. |
|
|
14
|
+
When I run jekyll
|
|
15
|
+
Then the _site directory should exist
|
|
16
|
+
And I should see exactly "<p>content for entry1.</p>" in "_site/index.html"
|
|
17
|
+
|
|
18
|
+
Scenario: An excerpt from a post with a layout
|
|
19
|
+
Given I have an "index.html" page that contains "{% for post in site.posts %}{{ post.excerpt }}{% endfor %}"
|
|
20
|
+
And I have a _posts directory
|
|
21
|
+
And I have a _layouts directory
|
|
22
|
+
And I have a post layout that contains "{{ page.excerpt }}"
|
|
23
|
+
And I have the following posts:
|
|
24
|
+
| title | date | layout | content |
|
|
25
|
+
| entry1 | 2007-12-31 | post | content for entry1. |
|
|
26
|
+
When I run jekyll
|
|
27
|
+
Then the _site directory should exist
|
|
28
|
+
And the _site/2007 directory should exist
|
|
29
|
+
And the _site/2007/12 directory should exist
|
|
30
|
+
And the _site/2007/12/31 directory should exist
|
|
31
|
+
And the "_site/2007/12/31/entry1.html" file should exist
|
|
32
|
+
And I should see exactly "<p>content for entry1.</p>" in "_site/2007/12/31/entry1.html"
|
|
33
|
+
And I should see exactly "<p>content for entry1.</p>" in "_site/index.html"
|
|
34
|
+
|
|
35
|
+
Scenario: An excerpt from a post with a layout which has context
|
|
36
|
+
Given I have an "index.html" page that contains "{% for post in site.posts %}{{ post.excerpt }}{% endfor %}"
|
|
37
|
+
And I have a _posts directory
|
|
38
|
+
And I have a _layouts directory
|
|
39
|
+
And I have a post layout that contains "<html><head></head><body>{{ page.excerpt }}</body></html>"
|
|
40
|
+
And I have the following posts:
|
|
41
|
+
| title | date | layout | content |
|
|
42
|
+
| entry1 | 2007-12-31 | post | content for entry1. |
|
|
43
|
+
When I run jekyll
|
|
44
|
+
Then the _site directory should exist
|
|
45
|
+
And the _site/2007 directory should exist
|
|
46
|
+
And the _site/2007/12 directory should exist
|
|
47
|
+
And the _site/2007/12/31 directory should exist
|
|
48
|
+
And the "_site/2007/12/31/entry1.html" file should exist
|
|
49
|
+
And I should see exactly "<p>content for entry1.</p>" in "_site/index.html"
|
|
50
|
+
And I should see exactly "<html><head></head><body><p>content for entry1.</p></body></html>" in "_site/2007/12/31/entry1.html"
|
|
@@ -1,29 +1,50 @@
|
|
|
1
1
|
Feature: Site configuration
|
|
2
2
|
As a hacker who likes to blog
|
|
3
|
-
I want to be able to configure
|
|
3
|
+
I want to be able to configure jekyll
|
|
4
4
|
In order to make setting up a site easier
|
|
5
5
|
|
|
6
6
|
Scenario: Change source directory
|
|
7
7
|
Given I have a blank site in "_sourcedir"
|
|
8
8
|
And I have an "_sourcedir/index.html" file that contains "Changing source directory"
|
|
9
9
|
And I have a configuration file with "source" set to "_sourcedir"
|
|
10
|
-
When I run
|
|
10
|
+
When I run jekyll
|
|
11
11
|
Then the _site directory should exist
|
|
12
12
|
And I should see "Changing source directory" in "_site/index.html"
|
|
13
13
|
|
|
14
14
|
Scenario: Change destination directory
|
|
15
15
|
Given I have an "index.html" file that contains "Changing destination directory"
|
|
16
16
|
And I have a configuration file with "destination" set to "_mysite"
|
|
17
|
-
When I run
|
|
17
|
+
When I run jekyll
|
|
18
18
|
Then the _mysite directory should exist
|
|
19
19
|
And I should see "Changing destination directory" in "_mysite/index.html"
|
|
20
20
|
|
|
21
|
+
Scenario Outline: Similarly named source and destination
|
|
22
|
+
Given I have a blank site in "<source>"
|
|
23
|
+
And I have an "<source>/index.md" page that contains "markdown"
|
|
24
|
+
And I have a configuration file with:
|
|
25
|
+
| key | value |
|
|
26
|
+
| source | <source> |
|
|
27
|
+
| destination | <dest> |
|
|
28
|
+
When I run jekyll
|
|
29
|
+
Then the <source> directory should exist
|
|
30
|
+
And the "<dest>/index.html" file should <file_exist> exist
|
|
31
|
+
And I should see "markdown" in "<source>/index.md"
|
|
32
|
+
|
|
33
|
+
Examples:
|
|
34
|
+
| source | dest | file_exist |
|
|
35
|
+
| mysite_source | mysite | |
|
|
36
|
+
| mysite | mysite_dest | |
|
|
37
|
+
| mysite/ | mysite | not |
|
|
38
|
+
| mysite | ./mysite | not |
|
|
39
|
+
| mysite/source | mysite | not |
|
|
40
|
+
| mysite | mysite/dest | |
|
|
41
|
+
|
|
21
42
|
Scenario: Exclude files inline
|
|
22
43
|
Given I have an "Rakefile" file that contains "I want to be excluded"
|
|
23
44
|
And I have an "README" file that contains "I want to be excluded"
|
|
24
45
|
And I have an "index.html" file that contains "I want to be included"
|
|
25
46
|
And I have a configuration file with "exclude" set to "['Rakefile', 'README']"
|
|
26
|
-
When I run
|
|
47
|
+
When I run jekyll
|
|
27
48
|
Then I should see "I want to be included" in "_site/index.html"
|
|
28
49
|
And the "_site/Rakefile" file should not exist
|
|
29
50
|
And the "_site/README" file should not exist
|
|
@@ -36,7 +57,7 @@ Feature: Site configuration
|
|
|
36
57
|
| value |
|
|
37
58
|
| README |
|
|
38
59
|
| Rakefile |
|
|
39
|
-
When I run
|
|
60
|
+
When I run jekyll
|
|
40
61
|
Then I should see "I want to be included" in "_site/index.html"
|
|
41
62
|
And the "_site/Rakefile" file should not exist
|
|
42
63
|
And the "_site/README" file should not exist
|
|
@@ -44,35 +65,35 @@ Feature: Site configuration
|
|
|
44
65
|
Scenario: Use RDiscount for markup
|
|
45
66
|
Given I have an "index.markdown" page that contains "[Google](http://google.com)"
|
|
46
67
|
And I have a configuration file with "markdown" set to "rdiscount"
|
|
47
|
-
When I run
|
|
68
|
+
When I run jekyll
|
|
48
69
|
Then the _site directory should exist
|
|
49
70
|
And I should see "<a href="http://google.com">Google</a>" in "_site/index.html"
|
|
50
71
|
|
|
51
72
|
Scenario: Use Kramdown for markup
|
|
52
73
|
Given I have an "index.markdown" page that contains "[Google](http://google.com)"
|
|
53
74
|
And I have a configuration file with "markdown" set to "kramdown"
|
|
54
|
-
When I run
|
|
75
|
+
When I run jekyll
|
|
55
76
|
Then the _site directory should exist
|
|
56
77
|
And I should see "<a href="http://google.com">Google</a>" in "_site/index.html"
|
|
57
78
|
|
|
58
79
|
Scenario: Use Redcarpet for markup
|
|
59
80
|
Given I have an "index.markdown" page that contains "[Google](http://google.com)"
|
|
60
81
|
And I have a configuration file with "markdown" set to "redcarpet"
|
|
61
|
-
When I run
|
|
82
|
+
When I run jekyll
|
|
62
83
|
Then the _site directory should exist
|
|
63
84
|
And I should see "<a href="http://google.com">Google</a>" in "_site/index.html"
|
|
64
85
|
|
|
65
86
|
Scenario: Use Maruku for markup
|
|
66
87
|
Given I have an "index.markdown" page that contains "[Google](http://google.com)"
|
|
67
88
|
And I have a configuration file with "markdown" set to "maruku"
|
|
68
|
-
When I run
|
|
89
|
+
When I run jekyll
|
|
69
90
|
Then the _site directory should exist
|
|
70
91
|
And I should see "<a href='http://google.com'>Google</a>" in "_site/index.html"
|
|
71
92
|
|
|
72
93
|
Scenario: Highlight code with pygments
|
|
73
94
|
Given I have an "index.html" file that contains "{% highlight ruby %} puts 'Hello world!' {% endhighlight %}"
|
|
74
95
|
And I have a configuration file with "pygments" set to "true"
|
|
75
|
-
When I run
|
|
96
|
+
When I run jekyll
|
|
76
97
|
Then the _site directory should exist
|
|
77
98
|
And I should see "puts 'Hello world!'" in "_site/index.html"
|
|
78
99
|
|
|
@@ -88,9 +109,9 @@ Feature: Site configuration
|
|
|
88
109
|
And I have a _posts directory
|
|
89
110
|
And I have the following posts:
|
|
90
111
|
| title | date | layout | content |
|
|
91
|
-
| entry1 | 12
|
|
92
|
-
| entry2 | 01
|
|
93
|
-
When I run
|
|
112
|
+
| entry1 | 2007-12-31 | post | content for entry1. |
|
|
113
|
+
| entry2 | 2020-01-31 | post | content for entry2. |
|
|
114
|
+
When I run jekyll
|
|
94
115
|
Then the _site directory should exist
|
|
95
116
|
And I should see "Page Layout: 1 on 2010-01-01" in "_site/index.html"
|
|
96
117
|
And I should see "Post Layout: <p>content for entry1.</p>" in "_site/2007/12/31/entry1.html"
|
|
@@ -108,9 +129,9 @@ Feature: Site configuration
|
|
|
108
129
|
And I have a _posts directory
|
|
109
130
|
And I have the following posts:
|
|
110
131
|
| title | date | layout | content |
|
|
111
|
-
| entry1 | 12
|
|
112
|
-
| entry2 | 01
|
|
113
|
-
When I run
|
|
132
|
+
| entry1 | 2007-12-31 | post | content for entry1. |
|
|
133
|
+
| entry2 | 2020-01-31 | post | content for entry2. |
|
|
134
|
+
When I run jekyll
|
|
114
135
|
Then the _site directory should exist
|
|
115
136
|
And I should see "Page Layout: 2 on 2010-01-01" in "_site/index.html"
|
|
116
137
|
And I should see "Post Layout: <p>content for entry1.</p>" in "_site/2007/12/31/entry1.html"
|
|
@@ -129,7 +150,7 @@ Feature: Site configuration
|
|
|
129
150
|
| title | date | layout | content |
|
|
130
151
|
| entry1 | 2013-04-09 23:22 -0400 | post | content for entry1. |
|
|
131
152
|
| entry2 | 2013-04-10 03:14 -0400 | post | content for entry2. |
|
|
132
|
-
When I run
|
|
153
|
+
When I run jekyll
|
|
133
154
|
Then the _site directory should exist
|
|
134
155
|
And I should see "Page Layout: 2" in "_site/index.html"
|
|
135
156
|
And I should see "Post Layout: <p>content for entry1.</p> built at 2013-04-09T23:22:00-04:00" in "_site/2013/04/09/entry1.html"
|
|
@@ -148,7 +169,7 @@ Feature: Site configuration
|
|
|
148
169
|
| title | date | layout | content |
|
|
149
170
|
| entry1 | 2013-04-09 23:22 -0400 | post | content for entry1. |
|
|
150
171
|
| entry2 | 2013-04-10 03:14 -0400 | post | content for entry2. |
|
|
151
|
-
When I run
|
|
172
|
+
When I run jekyll
|
|
152
173
|
Then the _site directory should exist
|
|
153
174
|
And I should see "Page Layout: 2" in "_site/index.html"
|
|
154
175
|
And the "_site/2013/04/10/entry1.html" file should exist
|
|
@@ -163,10 +184,10 @@ Feature: Site configuration
|
|
|
163
184
|
| limit_posts | 2 |
|
|
164
185
|
And I have the following posts:
|
|
165
186
|
| title | date | content |
|
|
166
|
-
| Apples |
|
|
167
|
-
| Oranges |
|
|
168
|
-
| Bananas |
|
|
169
|
-
When I run
|
|
187
|
+
| Apples | 2009-03-27 | An article about apples |
|
|
188
|
+
| Oranges | 2009-04-01 | An article about oranges |
|
|
189
|
+
| Bananas | 2009-04-05 | An article about bananas |
|
|
190
|
+
When I run jekyll
|
|
170
191
|
Then the _site directory should exist
|
|
171
192
|
And the "_site/2009/04/05/bananas.html" file should exist
|
|
172
193
|
And the "_site/2009/04/01/oranges.html" file should exist
|
|
@@ -179,7 +200,7 @@ Feature: Site configuration
|
|
|
179
200
|
| value |
|
|
180
201
|
| .gitignore |
|
|
181
202
|
| .foo |
|
|
182
|
-
When I run
|
|
203
|
+
When I run jekyll
|
|
183
204
|
Then the _site directory should exist
|
|
184
205
|
And I should see ".DS_Store" in "_site/.gitignore"
|
|
185
206
|
And the "_site/.htaccess" file should not exist
|
|
@@ -197,9 +218,9 @@ Feature: Site configuration
|
|
|
197
218
|
And I have a _posts directory
|
|
198
219
|
And I have the following posts:
|
|
199
220
|
| title | date | layout | content |
|
|
200
|
-
| entry1 | 12
|
|
201
|
-
| entry2 | 01
|
|
202
|
-
When I run
|
|
221
|
+
| entry1 | 2007-12-31 | post | content for entry1. |
|
|
222
|
+
| entry2 | 2020-01-31 | post | content for entry2. |
|
|
223
|
+
When I run jekyll
|
|
203
224
|
Then the _site directory should exist
|
|
204
225
|
And I should see "Page Layout: 2 on 2010-01-01" in "_site/index.html"
|
|
205
226
|
And I should see "Post Layout: <p>content for entry1.</p>" in "_site/2007/12/31/entry1.html"
|
data/features/site_data.feature
CHANGED
|
@@ -5,14 +5,14 @@ Feature: Site data
|
|
|
5
5
|
|
|
6
6
|
Scenario: Use page variable in a page
|
|
7
7
|
Given I have an "contact.html" page with title "Contact" that contains "{{ page.title }}: email@me.com"
|
|
8
|
-
When I run
|
|
8
|
+
When I run jekyll
|
|
9
9
|
Then the _site directory should exist
|
|
10
10
|
And I should see "Contact: email@me.com" in "_site/contact.html"
|
|
11
11
|
|
|
12
12
|
Scenario Outline: Use page.path variable in a page
|
|
13
13
|
Given I have a <dir> directory
|
|
14
14
|
And I have a "<path>" page that contains "Source path: {{ page.path }}"
|
|
15
|
-
When I run
|
|
15
|
+
When I run jekyll
|
|
16
16
|
Then the _site directory should exist
|
|
17
17
|
And I should see "Source path: <path>" in "_site/<path>"
|
|
18
18
|
|
|
@@ -24,13 +24,13 @@ Feature: Site data
|
|
|
24
24
|
|
|
25
25
|
Scenario: Override page.path
|
|
26
26
|
Given I have an "override.html" page with path "custom-override.html" that contains "Custom path: {{ page.path }}"
|
|
27
|
-
When I run
|
|
27
|
+
When I run jekyll
|
|
28
28
|
Then the _site directory should exist
|
|
29
29
|
And I should see "Custom path: custom-override.html" in "_site/override.html"
|
|
30
30
|
|
|
31
31
|
Scenario: Use site.time variable
|
|
32
32
|
Given I have an "index.html" page that contains "{{ site.time }}"
|
|
33
|
-
When I run
|
|
33
|
+
When I run jekyll
|
|
34
34
|
Then the _site directory should exist
|
|
35
35
|
And I should see today's time in "_site/index.html"
|
|
36
36
|
|
|
@@ -39,10 +39,10 @@ Feature: Site data
|
|
|
39
39
|
And I have an "index.html" page that contains "{{ site.posts.first.title }}: {{ site.posts.first.url }}"
|
|
40
40
|
And I have the following posts:
|
|
41
41
|
| title | date | content |
|
|
42
|
-
| First Post |
|
|
43
|
-
| Second Post |
|
|
44
|
-
| Third Post |
|
|
45
|
-
When I run
|
|
42
|
+
| First Post | 2009-03-25 | My First Post |
|
|
43
|
+
| Second Post | 2009-03-26 | My Second Post |
|
|
44
|
+
| Third Post | 2009-03-27 | My Third Post |
|
|
45
|
+
When I run jekyll
|
|
46
46
|
Then the _site directory should exist
|
|
47
47
|
And I should see "Third Post: /2009/03/27/third-post.html" in "_site/index.html"
|
|
48
48
|
|
|
@@ -51,10 +51,10 @@ Feature: Site data
|
|
|
51
51
|
And I have an "index.html" page that contains "{% for post in site.posts %} {{ post.title }} {% endfor %}"
|
|
52
52
|
And I have the following posts:
|
|
53
53
|
| title | date | content |
|
|
54
|
-
| First Post |
|
|
55
|
-
| Second Post |
|
|
56
|
-
| Third Post |
|
|
57
|
-
When I run
|
|
54
|
+
| First Post | 2009-03-25 | My First Post |
|
|
55
|
+
| Second Post | 2009-03-26 | My Second Post |
|
|
56
|
+
| Third Post | 2009-03-27 | My Third Post |
|
|
57
|
+
When I run jekyll
|
|
58
58
|
Then the _site directory should exist
|
|
59
59
|
And I should see "Third Post Second Post First Post" in "_site/index.html"
|
|
60
60
|
|
|
@@ -63,9 +63,9 @@ Feature: Site data
|
|
|
63
63
|
And I have an "index.html" page that contains "{% for post in site.categories.code %} {{ post.title }} {% endfor %}"
|
|
64
64
|
And I have the following posts:
|
|
65
65
|
| title | date | category | content |
|
|
66
|
-
| Awesome Hack |
|
|
67
|
-
| Delicious Beer |
|
|
68
|
-
When I run
|
|
66
|
+
| Awesome Hack | 2009-03-26 | code | puts 'Hello World' |
|
|
67
|
+
| Delicious Beer | 2009-03-26 | food | 1) Yuengling |
|
|
68
|
+
When I run jekyll
|
|
69
69
|
Then the _site directory should exist
|
|
70
70
|
And I should see "Awesome Hack" in "_site/index.html"
|
|
71
71
|
|
|
@@ -74,8 +74,8 @@ Feature: Site data
|
|
|
74
74
|
And I have an "index.html" page that contains "{% for post in site.tags.beer %} {{ post.content }} {% endfor %}"
|
|
75
75
|
And I have the following posts:
|
|
76
76
|
| title | date | tag | content |
|
|
77
|
-
| Delicious Beer |
|
|
78
|
-
When I run
|
|
77
|
+
| Delicious Beer | 2009-03-26 | beer | 1) Yuengling |
|
|
78
|
+
When I run jekyll
|
|
79
79
|
Then the _site directory should exist
|
|
80
80
|
And I should see "Yuengling" in "_site/index.html"
|
|
81
81
|
|
|
@@ -84,18 +84,24 @@ Feature: Site data
|
|
|
84
84
|
And I have an "index.html" page that contains "{% for post in site.posts %}{{ post.title }}:{{ post.previous.title}},{{ post.next.title}} {% endfor %}"
|
|
85
85
|
And I have the following posts:
|
|
86
86
|
| title | date | content |
|
|
87
|
-
| first |
|
|
88
|
-
| A |
|
|
89
|
-
| B |
|
|
90
|
-
| C |
|
|
91
|
-
| last |
|
|
92
|
-
When I run
|
|
87
|
+
| first | 2009-02-26 | first |
|
|
88
|
+
| A | 2009-03-26 | A |
|
|
89
|
+
| B | 2009-03-26 | B |
|
|
90
|
+
| C | 2009-03-26 | C |
|
|
91
|
+
| last | 2009-04-26 | last |
|
|
92
|
+
When I run jekyll
|
|
93
93
|
Then the _site directory should exist
|
|
94
94
|
And I should see "last:C, C:B,last B:A,C A:first,B first:,A" in "_site/index.html"
|
|
95
95
|
|
|
96
96
|
Scenario: Use configuration date in site payload
|
|
97
97
|
Given I have an "index.html" page that contains "{{ site.url }}"
|
|
98
98
|
And I have a configuration file with "url" set to "http://mysite.com"
|
|
99
|
-
When I run
|
|
99
|
+
When I run jekyll
|
|
100
100
|
Then the _site directory should exist
|
|
101
101
|
And I should see "http://mysite.com" in "_site/index.html"
|
|
102
|
+
|
|
103
|
+
Scenario: Access Jekyll version via jekyll.version
|
|
104
|
+
Given I have an "index.html" page that contains "{{ jekyll.version }}"
|
|
105
|
+
When I run jekyll
|
|
106
|
+
Then the _site directory should exist
|
|
107
|
+
And I should see "\d+\.\d+\.\d+" in "_site/index.html"
|
|
@@ -4,16 +4,17 @@ Before do
|
|
|
4
4
|
Dir.chdir(TEST_DIR)
|
|
5
5
|
end
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
Dir.chdir(File.expand_path("..", TEST_DIR))
|
|
9
|
-
FileUtils.rm_rf(TEST_DIR)
|
|
10
|
-
end
|
|
7
|
+
World(Test::Unit::Assertions)
|
|
11
8
|
|
|
12
9
|
Given /^I have a blank site in "(.*)"$/ do |path|
|
|
13
|
-
FileUtils.
|
|
10
|
+
FileUtils.mkdir_p(path)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
Given /^I do not have a "(.*)" directory$/ do |path|
|
|
14
|
+
File.directory?("#{TEST_DIR}/#{path}")
|
|
14
15
|
end
|
|
15
16
|
|
|
16
|
-
# Like "I have a foo file" but gives a yaml front matter so
|
|
17
|
+
# Like "I have a foo file" but gives a yaml front matter so jekyll actually processes it
|
|
17
18
|
Given /^I have an? "(.*)" page(?: with (.*) "(.*)")? that contains "(.*)"$/ do |file, key, value, text|
|
|
18
19
|
File.open(file, 'w') do |f|
|
|
19
20
|
f.write <<EOF
|
|
@@ -31,20 +32,24 @@ Given /^I have an? "(.*)" file that contains "(.*)"$/ do |file, text|
|
|
|
31
32
|
end
|
|
32
33
|
end
|
|
33
34
|
|
|
34
|
-
Given /^I have an?
|
|
35
|
-
|
|
36
|
-
|
|
35
|
+
Given /^I have an? (.*) (layout|theme) that contains "(.*)"$/ do |name, type, text|
|
|
36
|
+
folder = if type == 'layout'
|
|
37
|
+
'_layouts'
|
|
38
|
+
else
|
|
39
|
+
'_theme'
|
|
37
40
|
end
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
41
|
+
destination_file = File.join(folder, name + '.html')
|
|
42
|
+
destination_path = File.dirname(destination_file)
|
|
43
|
+
unless File.exist?(destination_path)
|
|
44
|
+
FileUtils.mkdir_p(destination_path)
|
|
45
|
+
end
|
|
46
|
+
File.open(destination_file, 'w') do |f|
|
|
42
47
|
f.write(text)
|
|
43
48
|
end
|
|
44
49
|
end
|
|
45
50
|
|
|
46
|
-
Given /^I have
|
|
47
|
-
File.open(
|
|
51
|
+
Given /^I have an? "(.*)" file with content:$/ do |file, text|
|
|
52
|
+
File.open(file, 'w') do |f|
|
|
48
53
|
f.write(text)
|
|
49
54
|
end
|
|
50
55
|
end
|
|
@@ -53,44 +58,33 @@ Given /^I have an? (.*) directory$/ do |dir|
|
|
|
53
58
|
FileUtils.mkdir_p(dir)
|
|
54
59
|
end
|
|
55
60
|
|
|
56
|
-
Given /^I have the following (draft|post)s?(?: (
|
|
61
|
+
Given /^I have the following (draft|post)s?(?: (in|under) "([^"]+)")?:$/ do |status, direction, folder, table|
|
|
57
62
|
table.hashes.each do |post|
|
|
58
|
-
title = post['title']
|
|
59
|
-
|
|
60
|
-
if direction && direction == "in"
|
|
61
|
-
before = folder || '.'
|
|
62
|
-
elsif direction && direction == "under"
|
|
63
|
-
after = folder || '.'
|
|
64
|
-
end
|
|
65
|
-
|
|
63
|
+
title = slug(post['title'])
|
|
66
64
|
ext = post['type'] || 'textile'
|
|
65
|
+
before, after = location(folder, direction)
|
|
67
66
|
|
|
68
67
|
if "draft" == status
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
end
|
|
76
|
-
parsed_date = DateTime.strptime(post['date'], format)
|
|
77
|
-
post['date'] = parsed_date.to_s
|
|
78
|
-
date = parsed_date.strftime('%Y-%m-%d')
|
|
79
|
-
path = File.join(before || '.', '_posts', after || '.', "#{date}-#{title}.#{ext}")
|
|
68
|
+
folder_post = '_drafts'
|
|
69
|
+
filename = "#{title}.#{ext}"
|
|
70
|
+
elsif "post" == status
|
|
71
|
+
parsed_date = Time.xmlschema(post['date']) rescue Time.parse(post['date'])
|
|
72
|
+
folder_post = '_posts'
|
|
73
|
+
filename = "#{parsed_date.strftime('%Y-%m-%d')}-#{title}.#{ext}"
|
|
80
74
|
end
|
|
81
75
|
|
|
76
|
+
path = File.join(before, folder_post, after, filename)
|
|
77
|
+
|
|
82
78
|
matter_hash = {}
|
|
83
|
-
%w(title layout tag tags category categories published author path).each do |key|
|
|
79
|
+
%w(title layout tag tags category categories published author path date permalink).each do |key|
|
|
84
80
|
matter_hash[key] = post[key] if post[key]
|
|
85
81
|
end
|
|
86
|
-
if "post" == status
|
|
87
|
-
matter_hash["date"] = post["date"] if post["date"]
|
|
88
|
-
end
|
|
89
82
|
matter = matter_hash.map { |k, v| "#{k}: #{v}\n" }.join.chomp
|
|
90
83
|
|
|
91
|
-
content = post['
|
|
92
|
-
|
|
93
|
-
|
|
84
|
+
content = if post['input'] && post['filter']
|
|
85
|
+
"{{ #{post['input']} | #{post['filter']} }}"
|
|
86
|
+
else
|
|
87
|
+
post['content']
|
|
94
88
|
end
|
|
95
89
|
|
|
96
90
|
File.open(path, 'w') do |f|
|
|
@@ -128,16 +122,20 @@ Given /^I have a configuration file with "([^\"]*)" set to:$/ do |key, table|
|
|
|
128
122
|
end
|
|
129
123
|
|
|
130
124
|
|
|
131
|
-
When /^I run
|
|
132
|
-
|
|
125
|
+
When /^I run jekyll$/ do
|
|
126
|
+
run_jekyll
|
|
133
127
|
end
|
|
134
128
|
|
|
135
|
-
When /^I run
|
|
136
|
-
|
|
129
|
+
When /^I run jekyll with drafts$/ do
|
|
130
|
+
run_jekyll(:drafts => true)
|
|
137
131
|
end
|
|
138
132
|
|
|
139
|
-
When /^I
|
|
140
|
-
|
|
133
|
+
When /^I call jekyll new with test_blank --blank$/ do
|
|
134
|
+
call_jekyll_new(:path => "test_blank", :blank => true)
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
When /^I debug jekyll$/ do
|
|
138
|
+
run_jekyll(:debug => true)
|
|
141
139
|
end
|
|
142
140
|
|
|
143
141
|
When /^I change "(.*)" to contain "(.*)"$/ do |file, text|
|
|
@@ -146,24 +144,40 @@ When /^I change "(.*)" to contain "(.*)"$/ do |file, text|
|
|
|
146
144
|
end
|
|
147
145
|
end
|
|
148
146
|
|
|
149
|
-
|
|
147
|
+
When /^I delete the file "(.*)"$/ do |file|
|
|
148
|
+
File.delete(file)
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
Then /^the (.*) directory should +exist$/ do |dir|
|
|
150
152
|
assert File.directory?(dir), "The directory \"#{dir}\" does not exist"
|
|
151
153
|
end
|
|
152
154
|
|
|
155
|
+
Then /^the (.*) directory should not exist$/ do |dir|
|
|
156
|
+
assert !File.directory?(dir), "The directory \"#{dir}\" exists"
|
|
157
|
+
end
|
|
158
|
+
|
|
153
159
|
Then /^I should see "(.*)" in "(.*)"$/ do |text, file|
|
|
154
160
|
assert Regexp.new(text).match(File.open(file).readlines.join)
|
|
155
161
|
end
|
|
156
162
|
|
|
163
|
+
Then /^I should see exactly "(.*)" in "(.*)"$/ do |text, file|
|
|
164
|
+
assert_equal text, File.open(file).readlines.join.strip
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
Then /^I should not see "(.*)" in "(.*)"$/ do |text, file|
|
|
168
|
+
assert_no_match Regexp.new(text), File.read(file)
|
|
169
|
+
end
|
|
170
|
+
|
|
157
171
|
Then /^I should see escaped "(.*)" in "(.*)"$/ do |text, file|
|
|
158
172
|
assert Regexp.new(Regexp.escape(text)).match(File.open(file).readlines.join)
|
|
159
173
|
end
|
|
160
174
|
|
|
161
|
-
Then /^the "(.*)" file should exist$/ do |file|
|
|
162
|
-
assert File.file?(file)
|
|
175
|
+
Then /^the "(.*)" file should +exist$/ do |file|
|
|
176
|
+
assert File.file?(file), "The file \"#{file}\" does not exist"
|
|
163
177
|
end
|
|
164
178
|
|
|
165
179
|
Then /^the "(.*)" file should not exist$/ do |file|
|
|
166
|
-
assert !File.exists?(file)
|
|
180
|
+
assert !File.exists?(file), "The file \"#{file}\" exists"
|
|
167
181
|
end
|
|
168
182
|
|
|
169
183
|
Then /^I should see today's time in "(.*)"$/ do |file|
|