realityforge-jekyll 0.7.1-java
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.
- data/History.txt +255 -0
- data/LICENSE +21 -0
- data/README.textile +41 -0
- data/Rakefile +159 -0
- data/bin/jekyll +178 -0
- data/cucumber.yml +1 -0
- data/features/create_sites.feature +94 -0
- data/features/embed_filters.feature +60 -0
- data/features/markdown.feature +30 -0
- data/features/pagination.feature +27 -0
- data/features/permalinks.feature +65 -0
- data/features/post_data.feature +153 -0
- data/features/site_configuration.feature +103 -0
- data/features/site_data.feature +82 -0
- data/features/step_definitions/jekyll_steps.rb +145 -0
- data/features/support/env.rb +16 -0
- data/jekyll.gemspec +135 -0
- data/lib/jekyll.rb +109 -0
- data/lib/jekyll/albino.rb +120 -0
- data/lib/jekyll/converter.rb +50 -0
- data/lib/jekyll/converters/identity.rb +22 -0
- data/lib/jekyll/converters/markdown.rb +80 -0
- data/lib/jekyll/converters/textile.rb +33 -0
- data/lib/jekyll/convertible.rb +82 -0
- data/lib/jekyll/core_ext.rb +52 -0
- data/lib/jekyll/errors.rb +6 -0
- data/lib/jekyll/filters.rb +47 -0
- data/lib/jekyll/generator.rb +7 -0
- data/lib/jekyll/generators/pagination.rb +87 -0
- data/lib/jekyll/layout.rb +36 -0
- data/lib/jekyll/migrators/csv.rb +26 -0
- data/lib/jekyll/migrators/mephisto.rb +79 -0
- data/lib/jekyll/migrators/mt.rb +59 -0
- data/lib/jekyll/migrators/textpattern.rb +50 -0
- data/lib/jekyll/migrators/typo.rb +49 -0
- data/lib/jekyll/migrators/wordpress.rb +55 -0
- data/lib/jekyll/page.rb +133 -0
- data/lib/jekyll/plugin.rb +76 -0
- data/lib/jekyll/post.rb +242 -0
- data/lib/jekyll/site.rb +235 -0
- data/lib/jekyll/static_file.rb +76 -0
- data/lib/jekyll/tags/highlight.rb +73 -0
- data/lib/jekyll/tags/include.rb +31 -0
- data/test/helper.rb +33 -0
- data/test/source/_includes/sig.markdown +3 -0
- data/test/source/_layouts/default.html +27 -0
- data/test/source/_layouts/simple.html +1 -0
- data/test/source/_posts/2008-02-02-not-published.textile +8 -0
- data/test/source/_posts/2008-02-02-published.textile +8 -0
- data/test/source/_posts/2008-10-18-foo-bar.textile +8 -0
- data/test/source/_posts/2008-11-21-complex.textile +8 -0
- data/test/source/_posts/2008-12-03-permalinked-post.textile +9 -0
- data/test/source/_posts/2008-12-13-include.markdown +8 -0
- data/test/source/_posts/2009-01-27-array-categories.textile +10 -0
- data/test/source/_posts/2009-01-27-categories.textile +7 -0
- data/test/source/_posts/2009-01-27-category.textile +7 -0
- data/test/source/_posts/2009-01-27-empty-categories.textile +7 -0
- data/test/source/_posts/2009-01-27-empty-category.textile +7 -0
- data/test/source/_posts/2009-03-12-hash-#1.markdown +6 -0
- data/test/source/_posts/2009-05-18-empty-tag.textile +6 -0
- data/test/source/_posts/2009-05-18-empty-tags.textile +6 -0
- data/test/source/_posts/2009-05-18-tag.textile +6 -0
- data/test/source/_posts/2009-05-18-tags.textile +9 -0
- data/test/source/_posts/2009-06-22-empty-yaml.textile +3 -0
- data/test/source/_posts/2009-06-22-no-yaml.textile +1 -0
- data/test/source/_posts/2010-01-08-triple-dash.markdown +5 -0
- data/test/source/_posts/2010-01-09-date-override.textile +7 -0
- data/test/source/_posts/2010-01-09-time-override.textile +7 -0
- data/test/source/_posts/2010-01-09-timezone-override.textile +7 -0
- data/test/source/_posts/2010-01-16-override-data.textile +4 -0
- data/test/source/about.html +6 -0
- data/test/source/category/_posts/2008-9-23-categories.textile +6 -0
- data/test/source/contacts.html +5 -0
- data/test/source/css/screen.css +76 -0
- data/test/source/foo/_posts/bar/2008-12-12-topical-post.textile +8 -0
- data/test/source/index.html +22 -0
- data/test/source/sitemap.xml +32 -0
- data/test/source/win/_posts/2009-05-24-yaml-linebreak.markdown +7 -0
- data/test/source/z_category/_posts/2008-9-23-categories.textile +6 -0
- data/test/suite.rb +9 -0
- data/test/test_configuration.rb +29 -0
- data/test/test_core_ext.rb +66 -0
- data/test/test_filters.rb +49 -0
- data/test/test_generated_site.rb +44 -0
- data/test/test_page.rb +98 -0
- data/test/test_pager.rb +113 -0
- data/test/test_post.rb +396 -0
- data/test/test_rdiscount.rb +18 -0
- data/test/test_site.rb +153 -0
- data/test/test_tags.rb +116 -0
- metadata +282 -0
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/*****************************************************************************/
|
|
2
|
+
/*
|
|
3
|
+
/* Common
|
|
4
|
+
/*
|
|
5
|
+
/*****************************************************************************/
|
|
6
|
+
|
|
7
|
+
/* Global Reset */
|
|
8
|
+
|
|
9
|
+
* {
|
|
10
|
+
margin: 0;
|
|
11
|
+
padding: 0;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
html, body {
|
|
15
|
+
height: 100%;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
body {
|
|
19
|
+
background-color: white;
|
|
20
|
+
font: 13.34px helvetica, arial, clean, sans-serif;
|
|
21
|
+
*font-size: small;
|
|
22
|
+
text-align: center;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
h1, h2, h3, h4, h5, h6 {
|
|
26
|
+
font-size: 100%;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
h1 {
|
|
30
|
+
margin-bottom: 1em;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
p {
|
|
34
|
+
margin: 1em 0;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
a {
|
|
38
|
+
color: #00a;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
a:hover {
|
|
42
|
+
color: black;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
a:visited {
|
|
46
|
+
color: #a0a;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
table {
|
|
50
|
+
font-size: inherit;
|
|
51
|
+
font: 100%;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/*****************************************************************************/
|
|
55
|
+
/*
|
|
56
|
+
/* Site
|
|
57
|
+
/*
|
|
58
|
+
/*****************************************************************************/
|
|
59
|
+
|
|
60
|
+
.site {
|
|
61
|
+
font-size: 110%;
|
|
62
|
+
text-align: justify;
|
|
63
|
+
width: 40em;
|
|
64
|
+
margin: 3em auto 2em auto;
|
|
65
|
+
line-height: 1.5em;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.title {
|
|
69
|
+
color: #a00;
|
|
70
|
+
font-weight: bold;
|
|
71
|
+
margin-bottom: 2em;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.site .meta {
|
|
75
|
+
color: #aaa;
|
|
76
|
+
}
|
|
@@ -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,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
layout: nil
|
|
3
|
+
---
|
|
4
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
5
|
+
<urlset
|
|
6
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
|
7
|
+
|
|
8
|
+
<url>
|
|
9
|
+
<loc>http://example.com</loc>
|
|
10
|
+
<lastmod>{{ site.time | date: "%Y-%m-%d" }}</lastmod>
|
|
11
|
+
<changefreq>daily</changefreq>
|
|
12
|
+
<priority>1.0</priority>
|
|
13
|
+
</url>
|
|
14
|
+
|
|
15
|
+
{% for post in site.posts %}
|
|
16
|
+
<url>
|
|
17
|
+
<loc>http://example.com{{ post.url }}/</loc>
|
|
18
|
+
<lastmod>{{ post.date | date: "%Y-%m-%d" }}</lastmod>
|
|
19
|
+
<changefreq>monthly</changefreq>
|
|
20
|
+
<priority>0.2</priority>
|
|
21
|
+
</url>
|
|
22
|
+
{% endfor %}
|
|
23
|
+
|
|
24
|
+
{% for page in site.html_pages %}
|
|
25
|
+
<url>
|
|
26
|
+
<loc>http://example.com{{ page.url }}</loc>
|
|
27
|
+
<lastmod>{{ site.time | date: "%Y-%m-%d" }}</lastmod>
|
|
28
|
+
{% if page.changefreq %}<changefreq>{{ page.changefreq }}</changefreq>{% endif %}
|
|
29
|
+
{% if page.priority %}<priority>{{ page.priority }}</priority>{% endif %}
|
|
30
|
+
</url>
|
|
31
|
+
{% endfor %}
|
|
32
|
+
</urlset>
|
data/test/suite.rb
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/helper'
|
|
2
|
+
|
|
3
|
+
class TestConfiguration < Test::Unit::TestCase
|
|
4
|
+
context "loading configuration" do
|
|
5
|
+
setup do
|
|
6
|
+
@path = File.join(Dir.pwd, '_config.yml')
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
should "fire warning with no _config.yml" do
|
|
10
|
+
mock(YAML).load_file(@path) { raise "No such file or directory - #{@path}" }
|
|
11
|
+
mock($stderr).puts("WARNING: Could not read configuration. Using defaults (and options).")
|
|
12
|
+
mock($stderr).puts("\tNo such file or directory - #{@path}")
|
|
13
|
+
assert_equal Jekyll::DEFAULTS, Jekyll.configuration({})
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
should "load configuration as hash" do
|
|
17
|
+
mock(YAML).load_file(@path) { Hash.new }
|
|
18
|
+
mock($stdout).puts("Configuration from #{@path}")
|
|
19
|
+
assert_equal Jekyll::DEFAULTS, Jekyll.configuration({})
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
should "fire warning with bad config" do
|
|
23
|
+
mock(YAML).load_file(@path) { Array.new }
|
|
24
|
+
mock($stderr).puts("WARNING: Could not read configuration. Using defaults (and options).")
|
|
25
|
+
mock($stderr).puts("\tInvalid configuration - #{@path}")
|
|
26
|
+
assert_equal Jekyll::DEFAULTS, Jekyll.configuration({})
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/helper'
|
|
2
|
+
|
|
3
|
+
class TestCoreExt < Test::Unit::TestCase
|
|
4
|
+
context "hash" do
|
|
5
|
+
|
|
6
|
+
context "pluralized_array" do
|
|
7
|
+
|
|
8
|
+
should "return empty array with no values" do
|
|
9
|
+
data = {}
|
|
10
|
+
assert_equal [], data.pluralized_array('tag', 'tags')
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
should "return empty array with no matching values" do
|
|
14
|
+
data = { 'foo' => 'bar' }
|
|
15
|
+
assert_equal [], data.pluralized_array('tag', 'tags')
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
should "return empty array with matching nil singular" do
|
|
19
|
+
data = { 'foo' => 'bar', 'tag' => nil, 'tags' => ['dog', 'cat'] }
|
|
20
|
+
assert_equal [], data.pluralized_array('tag', 'tags')
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
should "return single value array with matching singular" do
|
|
24
|
+
data = { 'foo' => 'bar', 'tag' => 'dog', 'tags' => ['dog', 'cat'] }
|
|
25
|
+
assert_equal ['dog'], data.pluralized_array('tag', 'tags')
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
should "return single value array with matching singular with spaces" do
|
|
29
|
+
data = { 'foo' => 'bar', 'tag' => 'dog cat', 'tags' => ['dog', 'cat'] }
|
|
30
|
+
assert_equal ['dog cat'], data.pluralized_array('tag', 'tags')
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
should "return empty array with matching nil plural" do
|
|
34
|
+
data = { 'foo' => 'bar', 'tags' => nil }
|
|
35
|
+
assert_equal [], data.pluralized_array('tag', 'tags')
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
should "return empty array with matching empty array" do
|
|
39
|
+
data = { 'foo' => 'bar', 'tags' => [] }
|
|
40
|
+
assert_equal [], data.pluralized_array('tag', 'tags')
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
should "return single value array with matching plural with single string value" do
|
|
44
|
+
data = { 'foo' => 'bar', 'tags' => 'dog' }
|
|
45
|
+
assert_equal ['dog'], data.pluralized_array('tag', 'tags')
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
should "return multiple value array with matching plural with single string value with spaces" do
|
|
49
|
+
data = { 'foo' => 'bar', 'tags' => 'dog cat' }
|
|
50
|
+
assert_equal ['dog', 'cat'], data.pluralized_array('tag', 'tags')
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
should "return single value array with matching plural with single value array" do
|
|
54
|
+
data = { 'foo' => 'bar', 'tags' => ['dog'] }
|
|
55
|
+
assert_equal ['dog'], data.pluralized_array('tag', 'tags')
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
should "return multiple value array with matching plural with multiple value array" do
|
|
59
|
+
data = { 'foo' => 'bar', 'tags' => ['dog', 'cat'] }
|
|
60
|
+
assert_equal ['dog', 'cat'], data.pluralized_array('tag', 'tags')
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
end
|
|
66
|
+
end
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/helper'
|
|
2
|
+
|
|
3
|
+
class TestFilters < Test::Unit::TestCase
|
|
4
|
+
class JekyllFilter
|
|
5
|
+
include Jekyll::Filters
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
context "filters" do
|
|
9
|
+
setup do
|
|
10
|
+
@filter = JekyllFilter.new
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
should "textilize with simple string" do
|
|
14
|
+
assert_equal "<p>something <strong>really</strong> simple</p>", @filter.textilize("something *really* simple")
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
should "convert array to sentence string with no args" do
|
|
18
|
+
assert_equal "", @filter.array_to_sentence_string([])
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
should "convert array to sentence string with one arg" do
|
|
22
|
+
assert_equal "1", @filter.array_to_sentence_string([1])
|
|
23
|
+
assert_equal "chunky", @filter.array_to_sentence_string(["chunky"])
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
should "convert array to sentence string with two args" do
|
|
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
|
+
should "convert array to sentence string with multiple args" do
|
|
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
|
+
should "escape xml with ampersands" do
|
|
37
|
+
assert_equal "AT&T", @filter.xml_escape("AT&T")
|
|
38
|
+
assert_equal "<code>command &lt;filename&gt;</code>", @filter.xml_escape("<code>command <filename></code>")
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
should "escape space as plus" do
|
|
42
|
+
assert_equal "my+things", @filter.cgi_escape("my things")
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
should "escape special characters" do
|
|
46
|
+
assert_equal "hey%21", @filter.cgi_escape("hey!")
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/helper'
|
|
2
|
+
|
|
3
|
+
class TestGeneratedSite < Test::Unit::TestCase
|
|
4
|
+
context "generated sites" do
|
|
5
|
+
setup do
|
|
6
|
+
clear_dest
|
|
7
|
+
stub(Jekyll).configuration do
|
|
8
|
+
Jekyll::DEFAULTS.merge({'source' => source_dir, 'destination' => dest_dir})
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
@site = Site.new(Jekyll.configuration)
|
|
12
|
+
@site.process
|
|
13
|
+
@index = File.read(dest_dir('index.html'))
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
should "ensure post count is as expected" do
|
|
17
|
+
assert_equal 26, @site.posts.size
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
should "insert site.posts into the index" do
|
|
21
|
+
assert @index.include?("#{@site.posts.size} Posts")
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
should "render latest post's content" do
|
|
25
|
+
assert @index.include?(@site.posts.last.content)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
should "hide unpublished posts" do
|
|
29
|
+
published = Dir[dest_dir('publish_test/2008/02/02/*.html')].map {|f| File.basename(f)}
|
|
30
|
+
|
|
31
|
+
assert_equal 1, published.size
|
|
32
|
+
assert_equal "published.html", published.first
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
should "not copy _posts directory" do
|
|
36
|
+
assert !File.exist?(dest_dir('_posts'))
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
should "process other static files and generate correct permalinks" do
|
|
40
|
+
assert File.exists?(dest_dir('/about/index.html'))
|
|
41
|
+
assert File.exists?(dest_dir('/contacts.html'))
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
data/test/test_page.rb
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/helper'
|
|
2
|
+
|
|
3
|
+
class TestPage < Test::Unit::TestCase
|
|
4
|
+
def setup_page(file)
|
|
5
|
+
@page = Page.new(@site, source_dir, '', file)
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def do_render(page)
|
|
9
|
+
layouts = { "default" => Layout.new(@site, source_dir('_layouts'), "simple.html")}
|
|
10
|
+
page.render(layouts, {"site" => {"posts" => []}})
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
context "A Page" do
|
|
14
|
+
setup do
|
|
15
|
+
clear_dest
|
|
16
|
+
stub(Jekyll).configuration { Jekyll::DEFAULTS }
|
|
17
|
+
@site = Site.new(Jekyll.configuration)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
context "processing pages" do
|
|
21
|
+
should "create url based on filename" do
|
|
22
|
+
@page = setup_page('contacts.html')
|
|
23
|
+
assert_equal "/contacts.html", @page.url
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
context "with pretty url style" do
|
|
27
|
+
setup do
|
|
28
|
+
@site.permalink_style = :pretty
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
should "return dir correctly" do
|
|
32
|
+
@page = setup_page('contacts.html')
|
|
33
|
+
assert_equal '/contacts/', @page.dir
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
should "return dir correctly for index page" do
|
|
37
|
+
@page = setup_page('index.html')
|
|
38
|
+
assert_equal '/', @page.dir
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
context "with any other url style" do
|
|
43
|
+
should "return dir correctly" do
|
|
44
|
+
@site.permalink_style = nil
|
|
45
|
+
@page = setup_page('contacts.html')
|
|
46
|
+
assert_equal '/', @page.dir
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
should "respect permalink in yaml front matter" do
|
|
51
|
+
file = "about.html"
|
|
52
|
+
@page = setup_page(file)
|
|
53
|
+
|
|
54
|
+
assert_equal "/about/", @page.permalink
|
|
55
|
+
assert_equal @page.permalink, @page.url
|
|
56
|
+
assert_equal "/about/", @page.dir
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
context "rendering" do
|
|
61
|
+
setup do
|
|
62
|
+
clear_dest
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
should "write properly" do
|
|
66
|
+
page = setup_page('contacts.html')
|
|
67
|
+
do_render(page)
|
|
68
|
+
page.write(dest_dir)
|
|
69
|
+
|
|
70
|
+
assert File.directory?(dest_dir)
|
|
71
|
+
assert File.exists?(File.join(dest_dir, 'contacts.html'))
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
should "write properly without html extension" do
|
|
75
|
+
page = setup_page('contacts.html')
|
|
76
|
+
page.site.permalink_style = :pretty
|
|
77
|
+
do_render(page)
|
|
78
|
+
page.write(dest_dir)
|
|
79
|
+
|
|
80
|
+
assert File.directory?(dest_dir)
|
|
81
|
+
assert File.exists?(File.join(dest_dir, 'contacts', 'index.html'))
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
should "write properly with extension different from html" do
|
|
85
|
+
page = setup_page("sitemap.xml")
|
|
86
|
+
page.site.permalink_style = :pretty
|
|
87
|
+
do_render(page)
|
|
88
|
+
page.write(dest_dir)
|
|
89
|
+
|
|
90
|
+
assert_equal("/sitemap.xml", page.url)
|
|
91
|
+
assert_nil(page.url[/\.html$/])
|
|
92
|
+
assert File.directory?(dest_dir)
|
|
93
|
+
assert File.exists?(File.join(dest_dir,'sitemap.xml'))
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
end
|
|
98
|
+
end
|