tilt 1.4.0 → 2.0.0.beta1
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/CHANGELOG.md +12 -0
- data/Gemfile +33 -26
- data/README.md +21 -48
- data/Rakefile +21 -30
- data/{TEMPLATES.md → docs/TEMPLATES.md} +12 -6
- data/docs/common.css +14 -0
- data/lib/tilt/asciidoc.rb +1 -8
- data/lib/tilt/bluecloth.rb +24 -0
- data/lib/tilt/builder.rb +1 -8
- data/lib/tilt/coffee.rb +1 -8
- data/lib/tilt/creole.rb +25 -0
- data/lib/tilt/csv.rb +7 -13
- data/lib/tilt/erb.rb +2 -55
- data/lib/tilt/erubis.rb +43 -0
- data/lib/tilt/haml.rb +1 -8
- data/lib/tilt/kramdown.rb +33 -0
- data/lib/tilt/less.rb +38 -0
- data/lib/tilt/liquid.rb +1 -8
- data/lib/tilt/mapping.rb +247 -0
- data/lib/tilt/markaby.rb +1 -8
- data/lib/tilt/maruku.rb +22 -0
- data/lib/tilt/nokogiri.rb +1 -8
- data/lib/tilt/radius.rb +1 -8
- data/lib/tilt/rdiscount.rb +39 -0
- data/lib/tilt/rdoc.rb +3 -10
- data/lib/tilt/redcarpet.rb +104 -0
- data/lib/tilt/{textile.rb → redcloth.rb} +1 -8
- data/lib/tilt/sass.rb +41 -0
- data/lib/tilt/template.rb +84 -88
- data/lib/tilt/wikicloth.rb +22 -0
- data/lib/tilt/yajl.rb +1 -8
- data/lib/tilt.rb +85 -154
- data/test/{contest.rb → test_helper.rb} +5 -11
- data/test/tilt_asciidoctor_test.rb +6 -6
- data/test/tilt_blueclothtemplate_test.rb +3 -15
- data/test/tilt_buildertemplate_test.rb +3 -3
- data/test/tilt_cache_test.rb +2 -2
- data/test/tilt_coffeescripttemplate_test.rb +8 -18
- data/test/tilt_compilesite_test.rb +2 -2
- data/test/tilt_creoletemplate_test.rb +3 -7
- data/test/tilt_csv_test.rb +5 -9
- data/test/tilt_erbtemplate_test.rb +7 -7
- data/test/tilt_erubistemplate_test.rb +7 -7
- data/test/tilt_etannitemplate_test.rb +4 -3
- data/test/tilt_hamltemplate_test.rb +4 -4
- data/test/tilt_kramdown_test.rb +5 -27
- data/test/tilt_lesstemplate_test.rb +3 -3
- data/test/tilt_liquidtemplate_test.rb +3 -3
- data/test/tilt_mapping.rb +215 -0
- data/test/tilt_markaby_test.rb +4 -4
- data/test/tilt_markdown_test.rb +13 -14
- data/test/tilt_marukutemplate_test.rb +6 -18
- data/test/tilt_metadata_test.rb +42 -0
- data/test/tilt_nokogiritemplate_test.rb +3 -3
- data/test/tilt_radiustemplate_test.rb +3 -3
- data/test/tilt_rdiscounttemplate_test.rb +6 -18
- data/test/tilt_rdoctemplate_test.rb +3 -5
- data/test/tilt_redcarpettemplate_test.rb +11 -23
- data/test/tilt_redclothtemplate_test.rb +3 -3
- data/test/tilt_sasstemplate_test.rb +4 -4
- data/test/tilt_stringtemplate_test.rb +4 -3
- data/test/tilt_template_test.rb +58 -25
- data/test/tilt_test.rb +10 -15
- data/test/tilt_wikiclothtemplate_test.rb +3 -3
- data/test/tilt_yajltemplate_test.rb +3 -3
- data/tilt.gemspec +19 -32
- metadata +27 -386
- data/lib/tilt/css.rb +0 -80
- data/lib/tilt/markdown.rb +0 -214
- data/lib/tilt/wiki.rb +0 -58
- data/test/tilt_fallback_test.rb +0 -122
data/test/tilt_markdown_test.rb
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
# coding: UTF-8
|
|
2
2
|
require 'tilt'
|
|
3
|
+
require 'test_helper'
|
|
3
4
|
|
|
4
5
|
begin
|
|
5
6
|
require 'nokogiri'
|
|
@@ -38,9 +39,6 @@ module MarkdownTests
|
|
|
38
39
|
end
|
|
39
40
|
|
|
40
41
|
def test_escape_html_true
|
|
41
|
-
if self.class.template == Tilt::RedcarpetTemplate
|
|
42
|
-
flunk "redcarpet doesn't support :escape_html yet"
|
|
43
|
-
end
|
|
44
42
|
html = nrender "Hello <b>World</b>", :escape_html => true
|
|
45
43
|
assert_equal "<p>Hello <b>World</b></p>", html
|
|
46
44
|
end
|
|
@@ -77,9 +75,9 @@ module MarkdownTests
|
|
|
77
75
|
end
|
|
78
76
|
|
|
79
77
|
begin
|
|
80
|
-
require 'rdiscount'
|
|
78
|
+
require 'tilt/rdiscount'
|
|
81
79
|
|
|
82
|
-
class MarkdownRDiscountTest < Test
|
|
80
|
+
class MarkdownRDiscountTest < Minitest::Test
|
|
83
81
|
include MarkdownTests
|
|
84
82
|
template Tilt::RDiscountTemplate
|
|
85
83
|
end
|
|
@@ -88,17 +86,18 @@ rescue LoadError => boom
|
|
|
88
86
|
end
|
|
89
87
|
|
|
90
88
|
begin
|
|
91
|
-
require 'redcarpet'
|
|
89
|
+
require 'tilt/redcarpet'
|
|
92
90
|
|
|
93
|
-
class MarkdownRedcarpetTest < Test
|
|
91
|
+
class MarkdownRedcarpetTest < Minitest::Test
|
|
94
92
|
include MarkdownTests
|
|
95
93
|
template Tilt::RedcarpetTemplate
|
|
96
94
|
# Doesn't support escaping
|
|
97
95
|
undef test_escape_html_true
|
|
98
96
|
|
|
99
97
|
def test_smarty_pants_true
|
|
98
|
+
# Various versions of Redcarpet support various versions of Smart pants.
|
|
100
99
|
html = nrender "Hello ``World'' -- This is --- a test ...", :smartypants => true
|
|
101
|
-
|
|
100
|
+
assert_match /<p>Hello “World(''|”) – This is — a test …<\/p>/, html
|
|
102
101
|
end
|
|
103
102
|
|
|
104
103
|
def test_fenced_code_blocks_with_lang
|
|
@@ -117,9 +116,9 @@ rescue LoadError => boom
|
|
|
117
116
|
end
|
|
118
117
|
|
|
119
118
|
begin
|
|
120
|
-
require 'bluecloth'
|
|
119
|
+
require 'tilt/bluecloth'
|
|
121
120
|
|
|
122
|
-
class MarkdownBlueClothTest < Test
|
|
121
|
+
class MarkdownBlueClothTest < Minitest::Test
|
|
123
122
|
include MarkdownTests
|
|
124
123
|
template Tilt::BlueClothTemplate
|
|
125
124
|
end
|
|
@@ -128,9 +127,9 @@ rescue LoadError => boom
|
|
|
128
127
|
end
|
|
129
128
|
|
|
130
129
|
begin
|
|
131
|
-
require 'kramdown'
|
|
130
|
+
require 'tilt/kramdown'
|
|
132
131
|
|
|
133
|
-
class MarkdownKramdownTest < Test
|
|
132
|
+
class MarkdownKramdownTest < Minitest::Test
|
|
134
133
|
include MarkdownTests
|
|
135
134
|
template Tilt::KramdownTemplate
|
|
136
135
|
# Doesn't support escaping
|
|
@@ -146,9 +145,9 @@ end
|
|
|
146
145
|
|
|
147
146
|
|
|
148
147
|
begin
|
|
149
|
-
require 'maruku'
|
|
148
|
+
require 'tilt/maruku'
|
|
150
149
|
|
|
151
|
-
class MarkdownMarukuTest < Test
|
|
150
|
+
class MarkdownMarukuTest < Minitest::Test
|
|
152
151
|
include MarkdownTests
|
|
153
152
|
template Tilt::MarukuTemplate
|
|
154
153
|
# Doesn't support escaping
|
|
@@ -1,27 +1,15 @@
|
|
|
1
|
-
require '
|
|
1
|
+
require 'test_helper'
|
|
2
2
|
require 'tilt'
|
|
3
3
|
|
|
4
4
|
begin
|
|
5
|
-
require 'maruku'
|
|
6
|
-
|
|
7
|
-
class MarukuTemplateTest < Test::Unit::TestCase
|
|
8
|
-
test "registered for '.md' files" do
|
|
9
|
-
assert Tilt.mappings['md'].include?(Tilt::MarukuTemplate)
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
test "registered for '.mkd' files" do
|
|
13
|
-
assert Tilt.mappings['mkd'].include?(Tilt::MarukuTemplate)
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
test "registered for '.markdown' files" do
|
|
17
|
-
assert Tilt.mappings['markdown'].include?(Tilt::MarukuTemplate)
|
|
18
|
-
end
|
|
5
|
+
require 'tilt/maruku'
|
|
19
6
|
|
|
7
|
+
class MarukuTemplateTest < Minitest::Test
|
|
20
8
|
test "registered below Kramdown" do
|
|
21
9
|
%w[md mkd markdown].each do |ext|
|
|
22
|
-
|
|
23
|
-
kram_idx =
|
|
24
|
-
maru_idx =
|
|
10
|
+
lazy = Tilt.lazy_map[ext]
|
|
11
|
+
kram_idx = lazy.index { |klass, file| klass == 'Tilt::KramdownTemplate' }
|
|
12
|
+
maru_idx = lazy.index { |klass, file| klass == 'Tilt::MarukuTemplate' }
|
|
25
13
|
assert maru_idx > kram_idx,
|
|
26
14
|
"#{maru_idx} should be higher than #{kram_idx}"
|
|
27
15
|
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
require 'tilt/template'
|
|
3
|
+
|
|
4
|
+
module Tilt
|
|
5
|
+
class TemplateMetadataTest < Minitest::Test
|
|
6
|
+
class MyTemplate < Template
|
|
7
|
+
metadata[:global] = 1
|
|
8
|
+
self.default_mime_type = 'text/html'
|
|
9
|
+
|
|
10
|
+
def prepare
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def allows_script?
|
|
14
|
+
true
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
test "global metadata" do
|
|
19
|
+
assert MyTemplate.metadata
|
|
20
|
+
assert_equal 1, MyTemplate.metadata[:global]
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
test "instance metadata" do
|
|
24
|
+
tmpl = MyTemplate.new { '' }
|
|
25
|
+
assert_equal 1, tmpl.metadata[:global]
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
test "gracefully handles default_mime_type" do
|
|
29
|
+
assert_equal 'text/html', MyTemplate.metadata[:mime_type]
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
test "still allows .default_mime_type" do
|
|
33
|
+
assert_equal 'text/html', MyTemplate.default_mime_type
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
test "gracefully handles allows_script?" do
|
|
37
|
+
tmpl = MyTemplate.new { '' }
|
|
38
|
+
assert_equal true, tmpl.metadata[:allows_script]
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
require '
|
|
1
|
+
require 'test_helper'
|
|
2
2
|
require 'tilt'
|
|
3
3
|
|
|
4
4
|
begin
|
|
5
|
-
require 'nokogiri'
|
|
6
|
-
class NokogiriTemplateTest < Test
|
|
5
|
+
require 'tilt/nokogiri'
|
|
6
|
+
class NokogiriTemplateTest < Minitest::Test
|
|
7
7
|
test "registered for '.nokogiri' files" do
|
|
8
8
|
assert_equal Tilt::NokogiriTemplate, Tilt['test.nokogiri']
|
|
9
9
|
assert_equal Tilt::NokogiriTemplate, Tilt['test.xml.nokogiri']
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
require '
|
|
1
|
+
require 'test_helper'
|
|
2
2
|
require 'tilt'
|
|
3
3
|
|
|
4
4
|
begin
|
|
5
|
-
require 'radius'
|
|
5
|
+
require 'tilt/radius'
|
|
6
6
|
|
|
7
7
|
# Disable radius tests under Ruby versions >= 1.9.1 since it's still buggy.
|
|
8
8
|
# Remove when fixed upstream.
|
|
9
9
|
raise LoadError if RUBY_VERSION >= "1.9.1" and Radius.version < "0.7"
|
|
10
10
|
|
|
11
|
-
class RadiusTemplateTest < Test
|
|
11
|
+
class RadiusTemplateTest < Minitest::Test
|
|
12
12
|
test "registered for '.radius' files" do
|
|
13
13
|
assert_equal Tilt::RadiusTemplate, Tilt['test.radius']
|
|
14
14
|
end
|
|
@@ -1,27 +1,15 @@
|
|
|
1
|
-
require '
|
|
1
|
+
require 'test_helper'
|
|
2
2
|
require 'tilt'
|
|
3
3
|
|
|
4
4
|
begin
|
|
5
|
-
require 'rdiscount'
|
|
6
|
-
|
|
7
|
-
class RDiscountTemplateTest < Test::Unit::TestCase
|
|
8
|
-
test "registered for '.md' files" do
|
|
9
|
-
assert Tilt.mappings['md'].include?(Tilt::RDiscountTemplate)
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
test "registered for '.mkd' files" do
|
|
13
|
-
assert Tilt.mappings['mkd'].include?(Tilt::RDiscountTemplate)
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
test "registered for '.markdown' files" do
|
|
17
|
-
assert Tilt.mappings['markdown'].include?(Tilt::RDiscountTemplate)
|
|
18
|
-
end
|
|
5
|
+
require 'tilt/rdiscount'
|
|
19
6
|
|
|
7
|
+
class RDiscountTemplateTest < Minitest::Test
|
|
20
8
|
test "registered above BlueCloth" do
|
|
21
9
|
%w[md mkd markdown].each do |ext|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
10
|
+
lazy = Tilt.lazy_map[ext]
|
|
11
|
+
rdis_idx = lazy.index { |klass, file| klass == 'Tilt::RDiscountTemplate' }
|
|
12
|
+
blue_idx = lazy.index { |klass, file| klass == 'Tilt::BlueClothTemplate' }
|
|
25
13
|
assert rdis_idx < blue_idx,
|
|
26
14
|
"#{rdis_idx} should be lower than #{blue_idx}"
|
|
27
15
|
end
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
require '
|
|
1
|
+
require 'test_helper'
|
|
2
2
|
require 'tilt'
|
|
3
3
|
|
|
4
4
|
begin
|
|
5
|
-
require 'rdoc'
|
|
6
|
-
|
|
7
|
-
require 'rdoc/markup/to_html'
|
|
8
|
-
class RDocTemplateTest < Test::Unit::TestCase
|
|
5
|
+
require 'tilt/rdoc'
|
|
6
|
+
class RDocTemplateTest < Minitest::Test
|
|
9
7
|
test "is registered for '.rdoc' files" do
|
|
10
8
|
assert_equal Tilt::RDocTemplate, Tilt['test.rdoc']
|
|
11
9
|
end
|
|
@@ -1,27 +1,15 @@
|
|
|
1
|
-
require '
|
|
1
|
+
require 'test_helper'
|
|
2
2
|
require 'tilt'
|
|
3
3
|
|
|
4
4
|
begin
|
|
5
|
-
require 'redcarpet'
|
|
6
|
-
|
|
7
|
-
class RedcarpetTemplateTest < Test::Unit::TestCase
|
|
8
|
-
test "registered for '.md' files" do
|
|
9
|
-
assert Tilt.mappings['md'].include?(Tilt::RedcarpetTemplate)
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
test "registered for '.mkd' files" do
|
|
13
|
-
assert Tilt.mappings['mkd'].include?(Tilt::RedcarpetTemplate)
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
test "registered for '.markdown' files" do
|
|
17
|
-
assert Tilt.mappings['markdown'].include?(Tilt::RedcarpetTemplate)
|
|
18
|
-
end
|
|
5
|
+
require 'tilt/redcarpet'
|
|
19
6
|
|
|
7
|
+
class RedcarpetTemplateTest < Minitest::Test
|
|
20
8
|
test "registered above BlueCloth" do
|
|
21
9
|
%w[md mkd markdown].each do |ext|
|
|
22
|
-
|
|
23
|
-
blue_idx =
|
|
24
|
-
redc_idx =
|
|
10
|
+
lazy = Tilt.lazy_map[ext]
|
|
11
|
+
blue_idx = lazy.index { |klass, file| klass == 'Tilt::BlueClothTemplate' }
|
|
12
|
+
redc_idx = lazy.index { |klass, file| klass == 'Tilt::RedcarpetTemplate' }
|
|
25
13
|
assert redc_idx < blue_idx,
|
|
26
14
|
"#{redc_idx} should be lower than #{blue_idx}"
|
|
27
15
|
end
|
|
@@ -29,9 +17,9 @@ begin
|
|
|
29
17
|
|
|
30
18
|
test "registered above RDiscount" do
|
|
31
19
|
%w[md mkd markdown].each do |ext|
|
|
32
|
-
|
|
33
|
-
rdis_idx =
|
|
34
|
-
redc_idx =
|
|
20
|
+
lazy = Tilt.lazy_map[ext]
|
|
21
|
+
rdis_idx = lazy.index { |klass, file| klass == 'Tilt::RDiscountTemplate' }
|
|
22
|
+
redc_idx = lazy.index { |klass, file| klass == 'Tilt::RedcarpetTemplate' }
|
|
35
23
|
assert redc_idx < rdis_idx,
|
|
36
24
|
"#{redc_idx} should be lower than #{rdis_idx}"
|
|
37
25
|
end
|
|
@@ -55,14 +43,14 @@ begin
|
|
|
55
43
|
test "smartypants when :smart is set" do
|
|
56
44
|
template = Tilt::RedcarpetTemplate.new(:smartypants => true) { |t|
|
|
57
45
|
"OKAY -- 'Smarty Pants'" }
|
|
58
|
-
assert_match /<p>OKAY – 'Smarty Pants'
|
|
46
|
+
assert_match /<p>OKAY – ('|‘)Smarty Pants('|’)<\/p>/,
|
|
59
47
|
template.render
|
|
60
48
|
end
|
|
61
49
|
|
|
62
50
|
test "smartypants with a rendererer instance" do
|
|
63
51
|
template = Tilt::RedcarpetTemplate.new(:renderer => Redcarpet::Render::HTML.new(:hard_wrap => true), :smartypants => true) { |t|
|
|
64
52
|
"OKAY -- 'Smarty Pants'" }
|
|
65
|
-
assert_match /<p>OKAY – 'Smarty Pants'
|
|
53
|
+
assert_match /<p>OKAY – ('|‘)Smarty Pants('|’)<\/p>/,
|
|
66
54
|
template.render
|
|
67
55
|
end
|
|
68
56
|
end
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
require '
|
|
1
|
+
require 'test_helper'
|
|
2
2
|
require 'tilt'
|
|
3
3
|
|
|
4
4
|
begin
|
|
5
|
-
require 'redcloth'
|
|
5
|
+
require 'tilt/redcloth'
|
|
6
6
|
|
|
7
|
-
class RedClothTemplateTest < Test
|
|
7
|
+
class RedClothTemplateTest < Minitest::Test
|
|
8
8
|
test "is registered for '.textile' files" do
|
|
9
9
|
assert_equal Tilt::RedClothTemplate, Tilt['test.textile']
|
|
10
10
|
end
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
require '
|
|
1
|
+
require 'test_helper'
|
|
2
2
|
require 'tilt'
|
|
3
3
|
|
|
4
4
|
begin
|
|
5
|
-
require 'sass'
|
|
5
|
+
require 'tilt/sass'
|
|
6
6
|
|
|
7
|
-
class SassTemplateTest < Test
|
|
7
|
+
class SassTemplateTest < Minitest::Test
|
|
8
8
|
test "is registered for '.sass' files" do
|
|
9
9
|
assert_equal Tilt::SassTemplate, Tilt['test.sass']
|
|
10
10
|
end
|
|
@@ -20,7 +20,7 @@ begin
|
|
|
20
20
|
end
|
|
21
21
|
end
|
|
22
22
|
|
|
23
|
-
class ScssTemplateTest < Test
|
|
23
|
+
class ScssTemplateTest < Minitest::Test
|
|
24
24
|
test "is registered for '.scss' files" do
|
|
25
25
|
assert_equal Tilt::ScssTemplate, Tilt['test.scss']
|
|
26
26
|
end
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
require '
|
|
1
|
+
require 'test_helper'
|
|
2
2
|
require 'tilt'
|
|
3
|
+
require 'tilt/string'
|
|
3
4
|
|
|
4
|
-
class StringTemplateTest < Test
|
|
5
|
+
class StringTemplateTest < Minitest::Test
|
|
5
6
|
test "registered for '.str' files" do
|
|
6
7
|
assert_equal Tilt::StringTemplate, Tilt['test.str']
|
|
7
8
|
end
|
|
@@ -73,7 +74,7 @@ class StringTemplateTest < Test::Unit::TestCase
|
|
|
73
74
|
end
|
|
74
75
|
|
|
75
76
|
|
|
76
|
-
class CompiledStringTemplateTest < Test
|
|
77
|
+
class CompiledStringTemplateTest < Minitest::Test
|
|
77
78
|
def teardown
|
|
78
79
|
GC.start
|
|
79
80
|
end
|
data/test/tilt_template_test.rb
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
# coding: utf-8
|
|
2
|
-
require '
|
|
2
|
+
require 'test_helper'
|
|
3
3
|
require 'tilt'
|
|
4
|
+
require 'tilt/template'
|
|
4
5
|
require 'tempfile'
|
|
5
6
|
|
|
6
|
-
class TiltTemplateTest < Test
|
|
7
|
+
class TiltTemplateTest < Minitest::Test
|
|
7
8
|
|
|
8
9
|
class MockTemplate < Tilt::Template
|
|
9
10
|
def prepare
|
|
@@ -11,7 +12,7 @@ class TiltTemplateTest < Test::Unit::TestCase
|
|
|
11
12
|
end
|
|
12
13
|
|
|
13
14
|
test "needs a file or block" do
|
|
14
|
-
|
|
15
|
+
assert_raises(ArgumentError) { Tilt::Template.new }
|
|
15
16
|
end
|
|
16
17
|
|
|
17
18
|
test "initializing with a file" do
|
|
@@ -49,7 +50,7 @@ class TiltTemplateTest < Test::Unit::TestCase
|
|
|
49
50
|
|
|
50
51
|
test "uses a default filename for #eval_file when no file provided" do
|
|
51
52
|
inst = MockTemplate.new { 'Hi' }
|
|
52
|
-
|
|
53
|
+
refute_nil inst.eval_file
|
|
53
54
|
assert !inst.eval_file.include?("\n")
|
|
54
55
|
end
|
|
55
56
|
|
|
@@ -81,43 +82,29 @@ class TiltTemplateTest < Test::Unit::TestCase
|
|
|
81
82
|
end
|
|
82
83
|
end
|
|
83
84
|
|
|
84
|
-
test "one-time template engine initialization" do
|
|
85
|
-
assert_nil InitializingMockTemplate.engine_initialized
|
|
86
|
-
assert_equal 0, InitializingMockTemplate.initialized_count
|
|
87
|
-
|
|
88
|
-
InitializingMockTemplate.new { "Hello World!" }
|
|
89
|
-
assert InitializingMockTemplate.engine_initialized
|
|
90
|
-
assert_equal 1, InitializingMockTemplate.initialized_count
|
|
91
|
-
|
|
92
|
-
InitializingMockTemplate.new { "Hello World!" }
|
|
93
|
-
assert_equal 1, InitializingMockTemplate.initialized_count
|
|
94
|
-
end
|
|
95
|
-
|
|
96
85
|
class PreparingMockTemplate < Tilt::Template
|
|
97
|
-
include Test::Unit::Assertions
|
|
98
86
|
def prepare
|
|
99
|
-
|
|
87
|
+
raise "data must be set" if data.nil?
|
|
100
88
|
@prepared = true
|
|
101
89
|
end
|
|
102
90
|
def prepared? ; @prepared ; end
|
|
103
91
|
end
|
|
104
92
|
|
|
105
93
|
test "raises NotImplementedError when #prepare not defined" do
|
|
106
|
-
|
|
94
|
+
assert_raises(NotImplementedError) { Tilt::Template.new { |template| "Hello World!" } }
|
|
107
95
|
end
|
|
108
96
|
|
|
109
97
|
test "raises NotImplementedError when #evaluate or #template_source not defined" do
|
|
110
98
|
inst = PreparingMockTemplate.new { |t| "Hello World!" }
|
|
111
|
-
|
|
99
|
+
assert_raises(NotImplementedError) { inst.render }
|
|
112
100
|
assert inst.prepared?
|
|
113
101
|
end
|
|
114
102
|
|
|
115
103
|
class SimpleMockTemplate < PreparingMockTemplate
|
|
116
|
-
include Test::Unit::Assertions
|
|
117
104
|
def evaluate(scope, locals, &block)
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
105
|
+
raise "should be prepared" unless prepared?
|
|
106
|
+
raise "scope should be present" if scope.nil?
|
|
107
|
+
raise "locals should be present" if locals.nil?
|
|
121
108
|
"<em>#{@data}</em>"
|
|
122
109
|
end
|
|
123
110
|
end
|
|
@@ -148,11 +135,40 @@ class TiltTemplateTest < Test::Unit::TestCase
|
|
|
148
135
|
|
|
149
136
|
test "template_source with locals having non-variable keys raises error" do
|
|
150
137
|
inst = SourceGeneratingMockTemplate.new { |t| '1 + 2 = #{_answer}' }
|
|
151
|
-
err =
|
|
138
|
+
err = assert_raises(RuntimeError) { inst.render(Object.new, 'ANSWER' => 3) }
|
|
152
139
|
assert_equal "invalid locals key: \"ANSWER\" (keys must be variable names)", err.message
|
|
153
140
|
assert_equal "1 + 2 = 3", inst.render(Object.new, '_answer' => 3)
|
|
154
141
|
end
|
|
155
142
|
|
|
143
|
+
test "template_source with nil locals" do
|
|
144
|
+
inst = SourceGeneratingMockTemplate.new { |t| 'Hey' }
|
|
145
|
+
assert_equal 'Hey', inst.render(Object.new, nil)
|
|
146
|
+
assert inst.prepared?
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
class CustomGeneratingMockTemplate < PreparingMockTemplate
|
|
150
|
+
def precompiled_template(locals)
|
|
151
|
+
data
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
def precompiled_preamble(locals)
|
|
155
|
+
options.fetch(:preamble)
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
def precompiled_postamble(locals)
|
|
159
|
+
options.fetch(:postamble)
|
|
160
|
+
end
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
test "supports pre/postamble" do
|
|
164
|
+
inst = CustomGeneratingMockTemplate.new(
|
|
165
|
+
:preamble => 'buf = []',
|
|
166
|
+
:postamble => 'buf.join'
|
|
167
|
+
) { 'buf << 1' }
|
|
168
|
+
|
|
169
|
+
assert_equal "1", inst.render
|
|
170
|
+
end
|
|
171
|
+
|
|
156
172
|
class Person
|
|
157
173
|
CONSTANT = "Bob"
|
|
158
174
|
|
|
@@ -178,6 +194,23 @@ class TiltTemplateTest < Test::Unit::TestCase
|
|
|
178
194
|
assert_equal "Hey Bob!", inst.render(Person.new("Joe"))
|
|
179
195
|
end
|
|
180
196
|
|
|
197
|
+
test "populates Tilt.current_template during rendering" do
|
|
198
|
+
inst = SourceGeneratingMockTemplate.new { '#{$inst = Tilt.current_template}' }
|
|
199
|
+
inst.render
|
|
200
|
+
assert_equal inst, $inst
|
|
201
|
+
assert_nil Tilt.current_template
|
|
202
|
+
end
|
|
203
|
+
|
|
204
|
+
test "populates Tilt.current_template in nested rendering" do
|
|
205
|
+
inst1 = SourceGeneratingMockTemplate.new { '#{$inst.render; $inst1 = Tilt.current_template}' }
|
|
206
|
+
inst2 = SourceGeneratingMockTemplate.new { '#{$inst2 = Tilt.current_template}' }
|
|
207
|
+
$inst = inst2
|
|
208
|
+
inst1.render
|
|
209
|
+
assert_equal inst1, $inst1
|
|
210
|
+
assert_equal inst2, $inst2
|
|
211
|
+
assert_nil Tilt.current_template
|
|
212
|
+
end
|
|
213
|
+
|
|
181
214
|
##
|
|
182
215
|
# Encodings
|
|
183
216
|
|
data/test/tilt_test.rb
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
require '
|
|
1
|
+
require 'test_helper'
|
|
2
2
|
require 'tilt'
|
|
3
3
|
|
|
4
|
-
class TiltTest < Test
|
|
4
|
+
class TiltTest < Minitest::Test
|
|
5
5
|
class MockTemplate
|
|
6
6
|
attr_reader :args, :block
|
|
7
7
|
def initialize(*args, &block)
|
|
@@ -11,38 +11,38 @@ class TiltTest < Test::Unit::TestCase
|
|
|
11
11
|
end
|
|
12
12
|
|
|
13
13
|
test "registering template implementation classes by file extension" do
|
|
14
|
-
Tilt.register('mock'
|
|
14
|
+
Tilt.register(MockTemplate, 'mock')
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
test "an extension is registered if explicit handle is found" do
|
|
18
|
-
Tilt.register('mock'
|
|
18
|
+
Tilt.register(MockTemplate, 'mock')
|
|
19
19
|
assert Tilt.registered?('mock')
|
|
20
20
|
end
|
|
21
21
|
|
|
22
22
|
test "registering template classes by symbol file extension" do
|
|
23
|
-
Tilt.register(:mock
|
|
23
|
+
Tilt.register(MockTemplate, :mock)
|
|
24
24
|
end
|
|
25
25
|
|
|
26
26
|
test "looking up template classes by exact file extension" do
|
|
27
|
-
Tilt.register('mock'
|
|
27
|
+
Tilt.register(MockTemplate, 'mock')
|
|
28
28
|
impl = Tilt['mock']
|
|
29
29
|
assert_equal MockTemplate, impl
|
|
30
30
|
end
|
|
31
31
|
|
|
32
32
|
test "looking up template classes by implicit file extension" do
|
|
33
|
-
Tilt.register('mock'
|
|
33
|
+
Tilt.register(MockTemplate, 'mock')
|
|
34
34
|
impl = Tilt['.mock']
|
|
35
35
|
assert_equal MockTemplate, impl
|
|
36
36
|
end
|
|
37
37
|
|
|
38
38
|
test "looking up template classes with multiple file extensions" do
|
|
39
|
-
Tilt.register('mock'
|
|
39
|
+
Tilt.register(MockTemplate, 'mock')
|
|
40
40
|
impl = Tilt['index.html.mock']
|
|
41
41
|
assert_equal MockTemplate, impl
|
|
42
42
|
end
|
|
43
43
|
|
|
44
44
|
test "looking up template classes by file name" do
|
|
45
|
-
Tilt.register('mock'
|
|
45
|
+
Tilt.register(MockTemplate, 'mock')
|
|
46
46
|
impl = Tilt['templates/test.mock']
|
|
47
47
|
assert_equal MockTemplate, impl
|
|
48
48
|
end
|
|
@@ -51,13 +51,8 @@ class TiltTest < Test::Unit::TestCase
|
|
|
51
51
|
assert_nil Tilt['none']
|
|
52
52
|
end
|
|
53
53
|
|
|
54
|
-
test "accessing template class mappings at Tilt::mappings" do
|
|
55
|
-
assert Tilt.respond_to?(:mappings)
|
|
56
|
-
assert Tilt.mappings.respond_to?(:[])
|
|
57
|
-
end
|
|
58
|
-
|
|
59
54
|
test "creating new template instance with a filename" do
|
|
60
|
-
Tilt.register('mock'
|
|
55
|
+
Tilt.register(MockTemplate, 'mock')
|
|
61
56
|
template = Tilt.new('foo.mock', 1, :key => 'val') { 'Hello World!' }
|
|
62
57
|
assert_equal ['foo.mock', 1, {:key => 'val'}], template.args
|
|
63
58
|
assert_equal 'Hello World!', template.block.call
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
require '
|
|
1
|
+
require 'test_helper'
|
|
2
2
|
require 'tilt'
|
|
3
3
|
|
|
4
4
|
begin
|
|
5
|
-
require 'wikicloth'
|
|
5
|
+
require 'tilt/wikicloth'
|
|
6
6
|
|
|
7
|
-
class WikiClothTemplateTest < Test
|
|
7
|
+
class WikiClothTemplateTest < Minitest::Test
|
|
8
8
|
test "is registered for '.mediawiki' files" do
|
|
9
9
|
assert_equal Tilt::WikiClothTemplate, Tilt['test.mediawiki']
|
|
10
10
|
end
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
require '
|
|
1
|
+
require 'test_helper'
|
|
2
2
|
require 'tilt'
|
|
3
3
|
|
|
4
4
|
begin
|
|
5
|
-
require 'yajl'
|
|
5
|
+
require 'tilt/yajl'
|
|
6
6
|
|
|
7
|
-
class YajlTemplateTest < Test
|
|
7
|
+
class YajlTemplateTest < Minitest::Test
|
|
8
8
|
test "is registered for '.yajl' files" do
|
|
9
9
|
assert_equal Tilt::YajlTemplate, Tilt['test.yajl']
|
|
10
10
|
end
|