Feature: Include tags
In order to share their content across several pages
As a hacker who likes to blog
I want to be able to include files in my blog posts
Scenario: Include a file with parameters
Given I have an _includes directory
And I have an "_includes/header.html" file that contains "My awesome blog header: {{include.param}}"
And I have an "_includes/params.html" file that contains "Parameters:
{% for param in include %}- {{param[0]}} = {{param[1]}}
{% endfor %}
"
And I have an "_includes/ignore.html" file that contains ""
And I have a _posts directory
And I have the following post:
| title | date | layout | content |
| Include Files | 2013-03-21 | default | {% include header.html param="myparam" %} |
| Ignore params if unused | 2013-03-21 | default | {% include ignore.html date="today" %} |
| List multiple parameters | 2013-03-21 | default | {% include params.html date="today" start="tomorrow" %} |
| Dont keep parameters | 2013-03-21 | default | {% include ignore.html param="test" %}\n{% include header.html %} |
| Allow params with spaces and quotes | 2013-04-07 | default | {% include params.html cool="param with spaces" super="\"quoted\"" single='has "quotes"' escaped='\'single\' quotes' %} |
| Parameter syntax | 2013-04-12 | default | {% include params.html param1_or_2="value" %} |
| Pass a variable | 2013-06-22 | default | {% assign var = 'some text' %}{% include params.html local=var layout=page.layout %} |
When I run jekyll
Then the _site directory should exist
And I should see "My awesome blog header: myparam" in "_site/2013/03/21/include-files.html"
And I should not see "myparam" in "_site/2013/03/21/ignore-params-if-unused.html"
And I should see "date = today" in "_site/2013/03/21/list-multiple-parameters.html"
And I should see "start = tomorrow" in "_site/2013/03/21/list-multiple-parameters.html"
And I should not see "My awesome blog header: myparam" in "_site/2013/03/21/dont-keep-parameters.html"
But I should see "" in "_site/2013/03/21/dont-keep-parameters.html"
And I should see "cool = param with spaces" in "_site/2013/04/07/allow-params-with-spaces-and-quotes.html"
And I should see "super = “quoted”" in "_site/2013/04/07/allow-params-with-spaces-and-quotes.html"
And I should see "single = has “quotes”" in "_site/2013/04/07/allow-params-with-spaces-and-quotes.html"
And I should see "escaped = ‘single’ quotes" in "_site/2013/04/07/allow-params-with-spaces-and-quotes.html"
And I should see "param1_or_2 = value" in "_site/2013/04/12/parameter-syntax.html"
And I should see "local = some text" in "_site/2013/06/22/pass-a-variable.html"
And I should see "layout = default" in "_site/2013/06/22/pass-a-variable.html"