tilt 2.0.0 → 2.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/COPYING +2 -1
- data/bin/tilt +2 -110
- data/lib/tilt/_emacs_org.rb +2 -0
- data/lib/tilt/_handlebars.rb +2 -0
- data/lib/tilt/_jbuilder.rb +2 -0
- data/lib/tilt/_org.rb +2 -0
- data/lib/tilt/asciidoc.rb +11 -23
- data/lib/tilt/babel.rb +8 -0
- data/lib/tilt/builder.rb +23 -14
- data/lib/tilt/cli.rb +134 -0
- data/lib/tilt/coffee.rb +17 -25
- data/lib/tilt/commonmarker.rb +95 -0
- data/lib/tilt/creole.rb +9 -20
- data/lib/tilt/csv.rb +9 -21
- data/lib/tilt/erb.rb +27 -19
- data/lib/tilt/erubi.rb +55 -0
- data/lib/tilt/erubis.rb +20 -12
- data/lib/tilt/etanni.rb +5 -4
- data/lib/tilt/haml.rb +79 -42
- data/lib/tilt/kramdown.rb +8 -28
- data/lib/tilt/liquid.rb +11 -9
- data/lib/tilt/livescript.rb +11 -0
- data/lib/tilt/mapping.rb +242 -95
- data/lib/tilt/markaby.rb +5 -7
- data/lib/tilt/maruku.rb +6 -18
- data/lib/tilt/nokogiri.rb +11 -10
- data/lib/tilt/pandoc.rb +39 -0
- data/lib/tilt/pipeline.rb +19 -0
- data/lib/tilt/plain.rb +4 -19
- data/lib/tilt/prawn.rb +28 -0
- data/lib/tilt/radius.rb +15 -22
- data/lib/tilt/rdiscount.rb +17 -33
- data/lib/tilt/rdoc.rb +14 -35
- data/lib/tilt/redcarpet.rb +20 -93
- data/lib/tilt/redcloth.rb +9 -19
- data/lib/tilt/rst-pandoc.rb +10 -0
- data/lib/tilt/sass.rb +59 -22
- data/lib/tilt/slim.rb +5 -0
- data/lib/tilt/string.rb +9 -3
- data/lib/tilt/template.rb +246 -78
- data/lib/tilt/typescript.rb +19 -0
- data/lib/tilt/wikicloth.rb +8 -18
- data/lib/tilt/yajl.rb +5 -11
- data/lib/tilt.rb +91 -41
- metadata +39 -102
- data/CHANGELOG.md +0 -61
- data/Gemfile +0 -39
- data/HACKING +0 -16
- data/README.md +0 -206
- data/Rakefile +0 -95
- data/docs/TEMPLATES.md +0 -523
- data/docs/common.css +0 -14
- data/lib/tilt/bluecloth.rb +0 -24
- data/lib/tilt/less.rb +0 -38
- data/test/markaby/locals.mab +0 -1
- data/test/markaby/markaby.mab +0 -1
- data/test/markaby/markaby_other_static.mab +0 -1
- data/test/markaby/render_twice.mab +0 -1
- data/test/markaby/scope.mab +0 -1
- data/test/markaby/yielding.mab +0 -2
- data/test/test_helper.rb +0 -64
- data/test/tilt_asciidoctor_test.rb +0 -44
- data/test/tilt_blueclothtemplate_test.rb +0 -33
- data/test/tilt_buildertemplate_test.rb +0 -59
- data/test/tilt_cache_test.rb +0 -32
- data/test/tilt_coffeescripttemplate_test.rb +0 -104
- data/test/tilt_compilesite_test.rb +0 -51
- data/test/tilt_creoletemplate_test.rb +0 -24
- data/test/tilt_csv_test.rb +0 -65
- data/test/tilt_erbtemplate_test.rb +0 -239
- data/test/tilt_erubistemplate_test.rb +0 -151
- data/test/tilt_etannitemplate_test.rb +0 -174
- data/test/tilt_hamltemplate_test.rb +0 -144
- data/test/tilt_kramdown_test.rb +0 -20
- data/test/tilt_lesstemplate_test.less +0 -1
- data/test/tilt_lesstemplate_test.rb +0 -42
- data/test/tilt_liquidtemplate_test.rb +0 -78
- data/test/tilt_mapping_test.rb +0 -229
- data/test/tilt_markaby_test.rb +0 -88
- data/test/tilt_markdown_test.rb +0 -174
- data/test/tilt_marukutemplate_test.rb +0 -36
- data/test/tilt_metadata_test.rb +0 -42
- data/test/tilt_nokogiritemplate_test.rb +0 -87
- data/test/tilt_radiustemplate_test.rb +0 -75
- data/test/tilt_rdiscounttemplate_test.rb +0 -43
- data/test/tilt_rdoctemplate_test.rb +0 -29
- data/test/tilt_redcarpettemplate_test.rb +0 -59
- data/test/tilt_redclothtemplate_test.rb +0 -36
- data/test/tilt_sasstemplate_test.rb +0 -41
- data/test/tilt_stringtemplate_test.rb +0 -171
- data/test/tilt_template_test.rb +0 -316
- data/test/tilt_test.rb +0 -60
- data/test/tilt_wikiclothtemplate_test.rb +0 -32
- data/test/tilt_yajltemplate_test.rb +0 -101
- data/tilt.gemspec +0 -107
data/test/tilt_mapping_test.rb
DELETED
@@ -1,229 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
require 'tilt'
|
3
|
-
require 'tilt/mapping'
|
4
|
-
|
5
|
-
module Tilt
|
6
|
-
|
7
|
-
class MappingTest < Minitest::Test
|
8
|
-
class Stub
|
9
|
-
end
|
10
|
-
|
11
|
-
class Stub2
|
12
|
-
end
|
13
|
-
|
14
|
-
setup do
|
15
|
-
@mapping = Mapping.new
|
16
|
-
end
|
17
|
-
|
18
|
-
test "registered?" do
|
19
|
-
@mapping.register(Stub, 'foo', 'bar')
|
20
|
-
assert @mapping.registered?('foo')
|
21
|
-
assert @mapping.registered?('bar')
|
22
|
-
refute @mapping.registered?('baz')
|
23
|
-
end
|
24
|
-
|
25
|
-
test "lookups on registered" do
|
26
|
-
@mapping.register(Stub, 'foo', 'bar')
|
27
|
-
assert_equal Stub, @mapping['foo']
|
28
|
-
assert_equal Stub, @mapping['bar']
|
29
|
-
assert_equal Stub, @mapping['hello.foo']
|
30
|
-
assert_nil @mapping['foo.baz']
|
31
|
-
end
|
32
|
-
|
33
|
-
test "can be dup'd" do
|
34
|
-
@mapping.register(Stub, 'foo')
|
35
|
-
other = @mapping.dup
|
36
|
-
assert other.registered?('foo')
|
37
|
-
|
38
|
-
# @mapping doesn't leak to other
|
39
|
-
@mapping.register(Stub, 'bar')
|
40
|
-
refute other.registered?('bar')
|
41
|
-
|
42
|
-
# other doesn't leak to @mapping
|
43
|
-
other.register(Stub, 'baz')
|
44
|
-
refute @mapping.registered?('baz')
|
45
|
-
end
|
46
|
-
|
47
|
-
test "#extensions_for" do
|
48
|
-
@mapping.register(Stub, 'foo', 'bar')
|
49
|
-
assert_equal ['foo', 'bar'].sort, @mapping.extensions_for(Stub).sort
|
50
|
-
end
|
51
|
-
|
52
|
-
test "supports old-style #register" do
|
53
|
-
@mapping.register('foo', Stub)
|
54
|
-
assert_equal Stub, @mapping['foo']
|
55
|
-
end
|
56
|
-
|
57
|
-
context "lazy with one template class" do
|
58
|
-
setup do
|
59
|
-
@mapping.register_lazy('MyTemplate', 'my_template', 'mt')
|
60
|
-
end
|
61
|
-
|
62
|
-
teardown do
|
63
|
-
Object.send :remove_const, :MyTemplate if defined? ::MyTemplate
|
64
|
-
end
|
65
|
-
|
66
|
-
test "registered?" do
|
67
|
-
assert @mapping.registered?('mt')
|
68
|
-
end
|
69
|
-
|
70
|
-
test "#extensions_for" do
|
71
|
-
assert_equal ['mt'], @mapping.extensions_for('MyTemplate')
|
72
|
-
end
|
73
|
-
|
74
|
-
test "basic lookup" do
|
75
|
-
req = proc do |file|
|
76
|
-
assert_equal 'my_template', file
|
77
|
-
class ::MyTemplate; end
|
78
|
-
true
|
79
|
-
end
|
80
|
-
|
81
|
-
@mapping.stub :require, req do
|
82
|
-
klass = @mapping['hello.mt']
|
83
|
-
assert_equal ::MyTemplate, klass
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
|
-
test "doesn't require when template class is present" do
|
88
|
-
class ::MyTemplate; end
|
89
|
-
|
90
|
-
req = proc do |file|
|
91
|
-
flunk "#require shouldn't be called"
|
92
|
-
end
|
93
|
-
|
94
|
-
@mapping.stub :require, req do
|
95
|
-
klass = @mapping['hello.mt']
|
96
|
-
assert_equal ::MyTemplate, klass
|
97
|
-
end
|
98
|
-
end
|
99
|
-
|
100
|
-
test "raises NameError when the class name is defined" do
|
101
|
-
req = proc do |file|
|
102
|
-
# do nothing
|
103
|
-
end
|
104
|
-
|
105
|
-
@mapping.stub :require, req do
|
106
|
-
assert_raises(NameError) do
|
107
|
-
@mapping['hello.mt']
|
108
|
-
end
|
109
|
-
end
|
110
|
-
end
|
111
|
-
|
112
|
-
test "warns when there's multiple threads" do
|
113
|
-
Thread.new do
|
114
|
-
req = proc do |file|
|
115
|
-
class ::MyTemplate; end
|
116
|
-
end
|
117
|
-
|
118
|
-
@mapping.stub :require, req do
|
119
|
-
assert_output '', /autoloading 'my_template'/ do
|
120
|
-
@mapping['hello.mt']
|
121
|
-
end
|
122
|
-
end
|
123
|
-
end.join
|
124
|
-
end
|
125
|
-
end
|
126
|
-
|
127
|
-
context "lazy with two template classes" do
|
128
|
-
setup do
|
129
|
-
@mapping.register_lazy('MyTemplate1', 'my_template1', 'mt')
|
130
|
-
@mapping.register_lazy('MyTemplate2', 'my_template2', 'mt')
|
131
|
-
end
|
132
|
-
|
133
|
-
teardown do
|
134
|
-
Object.send :remove_const, :MyTemplate1 if defined? ::MyTemplate1
|
135
|
-
Object.send :remove_const, :MyTemplate2 if defined? ::MyTemplate2
|
136
|
-
end
|
137
|
-
|
138
|
-
test "registered?" do
|
139
|
-
assert @mapping.registered?('mt')
|
140
|
-
end
|
141
|
-
|
142
|
-
test "only attempt to load the last template" do
|
143
|
-
req = proc do |file|
|
144
|
-
assert_equal 'my_template2', file
|
145
|
-
class ::MyTemplate2; end
|
146
|
-
true
|
147
|
-
end
|
148
|
-
|
149
|
-
@mapping.stub :require, req do
|
150
|
-
klass = @mapping['hello.mt']
|
151
|
-
assert_equal ::MyTemplate2, klass
|
152
|
-
end
|
153
|
-
end
|
154
|
-
|
155
|
-
test "uses the first template if it's present" do
|
156
|
-
class ::MyTemplate1; end
|
157
|
-
|
158
|
-
req = proc do |file|
|
159
|
-
flunk
|
160
|
-
end
|
161
|
-
|
162
|
-
@mapping.stub :require, req do
|
163
|
-
klass = @mapping['hello.mt']
|
164
|
-
assert_equal ::MyTemplate1, klass
|
165
|
-
end
|
166
|
-
end
|
167
|
-
|
168
|
-
test "falls back when LoadError is thrown" do
|
169
|
-
req = proc do |file|
|
170
|
-
raise LoadError unless file == 'my_template1'
|
171
|
-
class ::MyTemplate1; end
|
172
|
-
true
|
173
|
-
end
|
174
|
-
|
175
|
-
@mapping.stub :require, req do
|
176
|
-
klass = @mapping['hello.mt']
|
177
|
-
assert_equal ::MyTemplate1, klass
|
178
|
-
end
|
179
|
-
end
|
180
|
-
|
181
|
-
test "raises the first LoadError when everything fails" do
|
182
|
-
req = proc do |file|
|
183
|
-
raise LoadError, file
|
184
|
-
end
|
185
|
-
|
186
|
-
@mapping.stub :require, req do
|
187
|
-
err = assert_raises(LoadError) do
|
188
|
-
klass = @mapping['hello.mt']
|
189
|
-
end
|
190
|
-
|
191
|
-
assert_equal 'my_template2', err.message
|
192
|
-
end
|
193
|
-
end
|
194
|
-
|
195
|
-
test "handles autoloaded constants" do
|
196
|
-
Object.autoload :MyTemplate2, 'my_template2'
|
197
|
-
class ::MyTemplate1; end
|
198
|
-
|
199
|
-
assert_equal MyTemplate1, @mapping['hello.mt']
|
200
|
-
end
|
201
|
-
end
|
202
|
-
|
203
|
-
test "raises NameError on invalid class name" do
|
204
|
-
@mapping.register_lazy '#foo', 'my_template', 'mt'
|
205
|
-
|
206
|
-
req = proc do |file|
|
207
|
-
# do nothing
|
208
|
-
end
|
209
|
-
|
210
|
-
@mapping.stub :require, req do
|
211
|
-
assert_raises(NameError) do
|
212
|
-
@mapping['hello.mt']
|
213
|
-
end
|
214
|
-
end
|
215
|
-
end
|
216
|
-
|
217
|
-
context "#templates_for" do
|
218
|
-
setup do
|
219
|
-
@mapping.register Stub, 'a'
|
220
|
-
@mapping.register Stub2, 'b'
|
221
|
-
end
|
222
|
-
|
223
|
-
test "handles multiple engines" do
|
224
|
-
assert_equal [Stub2, Stub], @mapping.templates_for('hello/world.a.b')
|
225
|
-
end
|
226
|
-
end
|
227
|
-
end
|
228
|
-
end
|
229
|
-
|
data/test/tilt_markaby_test.rb
DELETED
@@ -1,88 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
require 'tilt'
|
3
|
-
|
4
|
-
begin
|
5
|
-
require 'tilt/markaby'
|
6
|
-
|
7
|
-
class MarkabyTiltTest < Minitest::Test
|
8
|
-
def setup
|
9
|
-
@block = lambda do |t|
|
10
|
-
File.read(File.dirname(__FILE__) + "/#{t.file}")
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
test "should be able to render a markaby template with static html" do
|
15
|
-
tilt = Tilt::MarkabyTemplate.new("markaby/markaby.mab", &@block)
|
16
|
-
assert_equal "hello from markaby!", tilt.render
|
17
|
-
end
|
18
|
-
|
19
|
-
test "should use the contents of the template" do
|
20
|
-
tilt = ::Tilt::MarkabyTemplate.new("markaby/markaby_other_static.mab", &@block)
|
21
|
-
assert_equal "_why?", tilt.render
|
22
|
-
end
|
23
|
-
|
24
|
-
test "should render from a string (given as data)" do
|
25
|
-
tilt = ::Tilt::MarkabyTemplate.new { "html do; end" }
|
26
|
-
assert_equal "<html></html>", tilt.render
|
27
|
-
end
|
28
|
-
|
29
|
-
test "can be rendered more than once" do
|
30
|
-
tilt = ::Tilt::MarkabyTemplate.new { "html do; end" }
|
31
|
-
3.times { assert_equal "<html></html>", tilt.render }
|
32
|
-
end
|
33
|
-
|
34
|
-
test "should evaluate a template file in the scope given" do
|
35
|
-
scope = Object.new
|
36
|
-
def scope.foo
|
37
|
-
"bar"
|
38
|
-
end
|
39
|
-
|
40
|
-
tilt = ::Tilt::MarkabyTemplate.new("markaby/scope.mab", &@block)
|
41
|
-
assert_equal "<li>bar</li>", tilt.render(scope)
|
42
|
-
end
|
43
|
-
|
44
|
-
test "should pass locals to the template" do
|
45
|
-
tilt = ::Tilt::MarkabyTemplate.new("markaby/locals.mab", &@block)
|
46
|
-
assert_equal "<li>bar</li>", tilt.render(Object.new, { :foo => "bar" })
|
47
|
-
end
|
48
|
-
|
49
|
-
test "should yield to the block given" do
|
50
|
-
tilt = ::Tilt::MarkabyTemplate.new("markaby/yielding.mab", &@block)
|
51
|
-
eval_scope = Markaby::Builder.new
|
52
|
-
|
53
|
-
output = tilt.render(Object.new, {}) do
|
54
|
-
text("Joe")
|
55
|
-
end
|
56
|
-
|
57
|
-
assert_equal "Hey Joe", output
|
58
|
-
end
|
59
|
-
|
60
|
-
test "should be able to render two templates in a row" do
|
61
|
-
tilt = ::Tilt::MarkabyTemplate.new("markaby/render_twice.mab", &@block)
|
62
|
-
|
63
|
-
assert_equal "foo", tilt.render
|
64
|
-
assert_equal "foo", tilt.render
|
65
|
-
end
|
66
|
-
|
67
|
-
test "should retrieve a Tilt::MarkabyTemplate when calling Tilt['hello.mab']" do
|
68
|
-
assert_equal Tilt::MarkabyTemplate, ::Tilt['./markaby/markaby.mab']
|
69
|
-
end
|
70
|
-
|
71
|
-
test "should return a new instance of the implementation class (when calling Tilt.new)" do
|
72
|
-
assert ::Tilt.new(File.dirname(__FILE__) + "/markaby/markaby.mab").kind_of?(Tilt::MarkabyTemplate)
|
73
|
-
end
|
74
|
-
|
75
|
-
test "should be able to evaluate block style templates" do
|
76
|
-
tilt = Tilt::MarkabyTemplate.new { |t| lambda { h1 "Hello World!" }}
|
77
|
-
assert_equal "<h1>Hello World!</h1>", tilt.render
|
78
|
-
end
|
79
|
-
|
80
|
-
test "should pass locals to block style templates" do
|
81
|
-
tilt = Tilt::MarkabyTemplate.new { |t| lambda { h1 "Hello #{name}!" }}
|
82
|
-
assert_equal "<h1>Hello _why!</h1>", tilt.render(nil, :name => "_why")
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
rescue LoadError => boom
|
87
|
-
warn "Tilt::MarkabyTemplate (disabled)"
|
88
|
-
end
|
data/test/tilt_markdown_test.rb
DELETED
@@ -1,174 +0,0 @@
|
|
1
|
-
# coding: UTF-8
|
2
|
-
require 'tilt'
|
3
|
-
require 'test_helper'
|
4
|
-
|
5
|
-
begin
|
6
|
-
require 'nokogiri'
|
7
|
-
|
8
|
-
module MarkdownTests
|
9
|
-
def self.included(mod)
|
10
|
-
class << mod
|
11
|
-
def template(t = nil)
|
12
|
-
t.nil? ? @template : @template = t
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
def render(text, options = {})
|
18
|
-
self.class.template.new(options) { text }.render
|
19
|
-
end
|
20
|
-
|
21
|
-
def normalize(html)
|
22
|
-
Nokogiri::HTML.fragment(html).to_s.strip
|
23
|
-
end
|
24
|
-
|
25
|
-
def nrender(text, options = {})
|
26
|
-
html = render(text, options)
|
27
|
-
html.encode!("UTF-8") if html.respond_to?(:encode)
|
28
|
-
normalize(html)
|
29
|
-
end
|
30
|
-
|
31
|
-
def test_escape_html
|
32
|
-
html = nrender "Hello <b>World</b>"
|
33
|
-
assert_equal "<p>Hello <b>World</b></p>", html
|
34
|
-
end
|
35
|
-
|
36
|
-
def test_escape_html_false
|
37
|
-
html = nrender "Hello <b>World</b>", :escape_html => false
|
38
|
-
assert_equal "<p>Hello <b>World</b></p>", html
|
39
|
-
end
|
40
|
-
|
41
|
-
def test_escape_html_true
|
42
|
-
html = nrender "Hello <b>World</b>", :escape_html => true
|
43
|
-
assert_equal "<p>Hello <b>World</b></p>", html
|
44
|
-
end
|
45
|
-
|
46
|
-
def test_smart_quotes
|
47
|
-
html = nrender 'Hello "World"'
|
48
|
-
assert_equal '<p>Hello "World"</p>', html
|
49
|
-
end
|
50
|
-
|
51
|
-
def test_smart_quotes_false
|
52
|
-
html = nrender 'Hello "World"', :smartypants => false
|
53
|
-
assert_equal '<p>Hello "World"</p>', html
|
54
|
-
end
|
55
|
-
|
56
|
-
def test_smart_quotes_true
|
57
|
-
html = nrender 'Hello "World"', :smartypants => true
|
58
|
-
assert_equal '<p>Hello “World”</p>', html
|
59
|
-
end
|
60
|
-
|
61
|
-
def test_smarty_pants
|
62
|
-
html = nrender "Hello ``World'' -- This is --- a test ..."
|
63
|
-
assert_equal "<p>Hello ``World'' -- This is --- a test ...</p>", html
|
64
|
-
end
|
65
|
-
|
66
|
-
def test_smarty_pants_false
|
67
|
-
html = nrender "Hello ``World'' -- This is --- a test ...", :smartypants => false
|
68
|
-
assert_equal "<p>Hello ``World'' -- This is --- a test ...</p>", html
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
begin
|
73
|
-
require 'tilt/rdiscount'
|
74
|
-
|
75
|
-
class MarkdownRDiscountTest < Minitest::Test
|
76
|
-
include MarkdownTests
|
77
|
-
template Tilt::RDiscountTemplate
|
78
|
-
|
79
|
-
def test_smarty_pants_true
|
80
|
-
html = nrender "Hello ``World'' -- This is --- a test ...", :smartypants => true
|
81
|
-
assert_equal "<p>Hello “World” – This is — a test …</p>", html
|
82
|
-
end
|
83
|
-
end
|
84
|
-
rescue LoadError => boom
|
85
|
-
# It should already be warned in the main tests
|
86
|
-
end
|
87
|
-
|
88
|
-
begin
|
89
|
-
require 'tilt/redcarpet'
|
90
|
-
|
91
|
-
class MarkdownRedcarpetTest < Minitest::Test
|
92
|
-
include MarkdownTests
|
93
|
-
template Tilt::RedcarpetTemplate
|
94
|
-
# Doesn't support escaping
|
95
|
-
undef test_escape_html_true
|
96
|
-
|
97
|
-
def test_smarty_pants_true
|
98
|
-
# Various versions of Redcarpet support various versions of Smart pants.
|
99
|
-
html = nrender "Hello ``World'' -- This is --- a test ...", :smartypants => true
|
100
|
-
assert_match /<p>Hello “World(''|”) – This is — a test …<\/p>/, html
|
101
|
-
end
|
102
|
-
|
103
|
-
def test_fenced_code_blocks_with_lang
|
104
|
-
code = <<-COD.gsub(/^\s+/,"")
|
105
|
-
```ruby
|
106
|
-
puts "hello world"
|
107
|
-
```
|
108
|
-
COD
|
109
|
-
|
110
|
-
html = nrender code, :fenced_code_blocks => true
|
111
|
-
assert_equal %Q{<pre><code class="ruby">puts "hello world"\n</code></pre>}, html
|
112
|
-
end
|
113
|
-
end
|
114
|
-
rescue LoadError => boom
|
115
|
-
# It should already be warned in the main tests
|
116
|
-
end
|
117
|
-
|
118
|
-
begin
|
119
|
-
require 'tilt/bluecloth'
|
120
|
-
|
121
|
-
class MarkdownBlueClothTest < Minitest::Test
|
122
|
-
include MarkdownTests
|
123
|
-
template Tilt::BlueClothTemplate
|
124
|
-
|
125
|
-
def test_smarty_pants_true
|
126
|
-
html = nrender "Hello ``World'' -- This is --- a test ...", :smartypants => true
|
127
|
-
assert_equal "<p>Hello “World” — This is —– a test …</p>", html
|
128
|
-
end
|
129
|
-
end
|
130
|
-
rescue LoadError => boom
|
131
|
-
# It should already be warned in the main tests
|
132
|
-
end
|
133
|
-
|
134
|
-
begin
|
135
|
-
require 'tilt/kramdown'
|
136
|
-
|
137
|
-
class MarkdownKramdownTest < Minitest::Test
|
138
|
-
include MarkdownTests
|
139
|
-
template Tilt::KramdownTemplate
|
140
|
-
# Doesn't support escaping
|
141
|
-
undef test_escape_html_true
|
142
|
-
# Smarty Pants is *always* on, but doesn't support it fully
|
143
|
-
undef test_smarty_pants
|
144
|
-
undef test_smarty_pants_false
|
145
|
-
end
|
146
|
-
rescue LoadError => boom
|
147
|
-
# It should already be warned in the main tests
|
148
|
-
end
|
149
|
-
|
150
|
-
|
151
|
-
begin
|
152
|
-
require 'tilt/maruku'
|
153
|
-
|
154
|
-
class MarkdownMarukuTest < Minitest::Test
|
155
|
-
include MarkdownTests
|
156
|
-
template Tilt::MarukuTemplate
|
157
|
-
# Doesn't support escaping
|
158
|
-
undef test_escape_html_true
|
159
|
-
# Doesn't support Smarty Pants, and even fails on ``Foobar''
|
160
|
-
undef test_smarty_pants
|
161
|
-
undef test_smarty_pants_false
|
162
|
-
# Smart Quotes is always on
|
163
|
-
undef test_smart_quotes
|
164
|
-
undef test_smart_quotes_false
|
165
|
-
end
|
166
|
-
rescue LoadError => boom
|
167
|
-
# It should already be warned in the main tests
|
168
|
-
end
|
169
|
-
|
170
|
-
rescue LoadError
|
171
|
-
warn "Markdown tests need Nokogiri"
|
172
|
-
end
|
173
|
-
|
174
|
-
|
@@ -1,36 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
require 'tilt'
|
3
|
-
|
4
|
-
begin
|
5
|
-
require 'tilt/maruku'
|
6
|
-
|
7
|
-
class MarukuTemplateTest < Minitest::Test
|
8
|
-
test "registered below Kramdown" do
|
9
|
-
%w[md mkd markdown].each do |ext|
|
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' }
|
13
|
-
assert maru_idx > kram_idx,
|
14
|
-
"#{maru_idx} should be higher than #{kram_idx}"
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
test "preparing and evaluating templates on #render" do
|
19
|
-
template = Tilt::MarukuTemplate.new { |t| "# Hello World!" }
|
20
|
-
assert_equal "<h1 id=\"hello_world\">Hello World!</h1>", template.render.strip
|
21
|
-
end
|
22
|
-
|
23
|
-
test "can be rendered more than once" do
|
24
|
-
template = Tilt::MarukuTemplate.new { |t| "# Hello World!" }
|
25
|
-
3.times { assert_equal "<h1 id=\"hello_world\">Hello World!</h1>", template.render.strip }
|
26
|
-
end
|
27
|
-
|
28
|
-
test "removes HTML when :filter_html is set" do
|
29
|
-
template = Tilt::MarukuTemplate.new(:filter_html => true) { |t|
|
30
|
-
"HELLO <blink>WORLD</blink>" }
|
31
|
-
assert_equal "<p>HELLO </p>", template.render.strip
|
32
|
-
end
|
33
|
-
end
|
34
|
-
rescue LoadError => boom
|
35
|
-
warn "Tilt::MarukuTemplate (disabled)"
|
36
|
-
end
|
data/test/tilt_metadata_test.rb
DELETED
@@ -1,42 +0,0 @@
|
|
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,87 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
require 'tilt'
|
3
|
-
|
4
|
-
begin
|
5
|
-
require 'tilt/nokogiri'
|
6
|
-
class NokogiriTemplateTest < Minitest::Test
|
7
|
-
test "registered for '.nokogiri' files" do
|
8
|
-
assert_equal Tilt::NokogiriTemplate, Tilt['test.nokogiri']
|
9
|
-
assert_equal Tilt::NokogiriTemplate, Tilt['test.xml.nokogiri']
|
10
|
-
end
|
11
|
-
|
12
|
-
test "preparing and evaluating the template on #render" do
|
13
|
-
template = Tilt::NokogiriTemplate.new { |t| "xml.em 'Hello World!'" }
|
14
|
-
doc = Nokogiri.XML template.render
|
15
|
-
assert_equal 'Hello World!', doc.root.text
|
16
|
-
assert_equal 'em', doc.root.name
|
17
|
-
end
|
18
|
-
|
19
|
-
test "can be rendered more than once" do
|
20
|
-
template = Tilt::NokogiriTemplate.new { |t| "xml.em 'Hello World!'" }
|
21
|
-
3.times do
|
22
|
-
doc = Nokogiri.XML template.render
|
23
|
-
assert_equal 'Hello World!', doc.root.text
|
24
|
-
assert_equal 'em', doc.root.name
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
test "passing locals" do
|
29
|
-
template = Tilt::NokogiriTemplate.new { "xml.em('Hey ' + name + '!')" }
|
30
|
-
doc = Nokogiri.XML template.render(Object.new, :name => 'Joe')
|
31
|
-
assert_equal 'Hey Joe!', doc.root.text
|
32
|
-
assert_equal 'em', doc.root.name
|
33
|
-
end
|
34
|
-
|
35
|
-
test "evaluating in an object scope" do
|
36
|
-
template = Tilt::NokogiriTemplate.new { "xml.em('Hey ' + @name + '!')" }
|
37
|
-
scope = Object.new
|
38
|
-
scope.instance_variable_set :@name, 'Joe'
|
39
|
-
doc = Nokogiri.XML template.render(scope)
|
40
|
-
assert_equal 'Hey Joe!', doc.root.text
|
41
|
-
assert_equal 'em', doc.root.name
|
42
|
-
end
|
43
|
-
|
44
|
-
test "passing a block for yield" do
|
45
|
-
template = Tilt::NokogiriTemplate.new { "xml.em('Hey ' + yield + '!')" }
|
46
|
-
3.times do
|
47
|
-
doc = Nokogiri.XML template.render { 'Joe' }
|
48
|
-
assert_equal 'Hey Joe!', doc.root.text
|
49
|
-
assert_equal 'em', doc.root.name
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
test "block style templates" do
|
54
|
-
template =
|
55
|
-
Tilt::NokogiriTemplate.new do |t|
|
56
|
-
lambda { |xml| xml.em('Hey Joe!') }
|
57
|
-
end
|
58
|
-
doc = Nokogiri.XML template.render
|
59
|
-
assert_equal 'Hey Joe!', doc.root.text
|
60
|
-
assert_equal 'em', doc.root.name
|
61
|
-
end
|
62
|
-
|
63
|
-
test "allows nesting raw XML, API-compatible to Builder" do
|
64
|
-
subtemplate = Tilt::NokogiriTemplate.new { "xml.em 'Hello World!'" }
|
65
|
-
template = Tilt::NokogiriTemplate.new { "xml.strong { xml << yield }" }
|
66
|
-
3.times do
|
67
|
-
options = { :xml => Nokogiri::XML::Builder.new }
|
68
|
-
doc = Nokogiri.XML(template.render(options) { subtemplate.render(options) })
|
69
|
-
assert_equal 'Hello World!', doc.root.text.strip
|
70
|
-
assert_equal 'strong', doc.root.name
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
test "doesn't modify self when template is a string" do
|
75
|
-
template = Tilt::NokogiriTemplate.new { "xml.root { xml.child @hello }" }
|
76
|
-
scope = Object.new
|
77
|
-
scope.instance_variable_set(:@hello, "Hello World!")
|
78
|
-
|
79
|
-
3.times do
|
80
|
-
doc = Nokogiri.XML(template.render(scope))
|
81
|
-
assert_equal "Hello World!", doc.text.strip
|
82
|
-
end
|
83
|
-
end
|
84
|
-
end
|
85
|
-
rescue LoadError
|
86
|
-
warn "Tilt::NokogiriTemplate (disabled)"
|
87
|
-
end
|