tilt 1.4.1 → 2.0.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (91) hide show
  1. checksums.yaml +7 -0
  2. data/COPYING +1 -1
  3. data/bin/tilt +18 -8
  4. data/lib/tilt/asciidoc.rb +1 -8
  5. data/lib/tilt/babel.rb +16 -0
  6. data/lib/tilt/bluecloth.rb +24 -0
  7. data/lib/tilt/builder.rb +12 -15
  8. data/lib/tilt/coffee.rb +10 -6
  9. data/lib/tilt/commonmarker.rb +88 -0
  10. data/lib/tilt/creole.rb +25 -0
  11. data/lib/tilt/csv.rb +12 -18
  12. data/lib/tilt/dummy.rb +3 -0
  13. data/lib/tilt/erb.rb +9 -56
  14. data/lib/tilt/erubi.rb +32 -0
  15. data/lib/tilt/erubis.rb +43 -0
  16. data/lib/tilt/haml.rb +66 -44
  17. data/lib/tilt/kramdown.rb +25 -0
  18. data/lib/tilt/less.rb +30 -0
  19. data/lib/tilt/liquid.rb +9 -10
  20. data/lib/tilt/livescript.rb +23 -0
  21. data/lib/tilt/mapping.rb +293 -0
  22. data/lib/tilt/markaby.rb +1 -8
  23. data/lib/tilt/maruku.rb +22 -0
  24. data/lib/tilt/nokogiri.rb +1 -8
  25. data/lib/tilt/pandoc.rb +57 -0
  26. data/lib/tilt/plain.rb +0 -4
  27. data/lib/tilt/prawn.rb +43 -0
  28. data/lib/tilt/radius.rb +1 -8
  29. data/lib/tilt/rdiscount.rb +39 -0
  30. data/lib/tilt/rdoc.rb +3 -10
  31. data/lib/tilt/redcarpet.rb +86 -0
  32. data/lib/tilt/{textile.rb → redcloth.rb} +1 -8
  33. data/lib/tilt/rst-pandoc.rb +23 -0
  34. data/lib/tilt/sass.rb +78 -0
  35. data/lib/tilt/sigil.rb +34 -0
  36. data/lib/tilt/string.rb +1 -1
  37. data/lib/tilt/template.rb +121 -105
  38. data/lib/tilt/typescript.rb +26 -0
  39. data/lib/tilt/wikicloth.rb +22 -0
  40. data/lib/tilt/yajl.rb +1 -8
  41. data/lib/tilt.rb +118 -155
  42. metadata +38 -469
  43. data/CHANGELOG.md +0 -44
  44. data/Gemfile +0 -32
  45. data/HACKING +0 -16
  46. data/README.md +0 -232
  47. data/Rakefile +0 -104
  48. data/TEMPLATES.md +0 -516
  49. data/lib/tilt/css.rb +0 -80
  50. data/lib/tilt/markdown.rb +0 -214
  51. data/lib/tilt/wiki.rb +0 -58
  52. data/test/contest.rb +0 -68
  53. data/test/markaby/locals.mab +0 -1
  54. data/test/markaby/markaby.mab +0 -1
  55. data/test/markaby/markaby_other_static.mab +0 -1
  56. data/test/markaby/render_twice.mab +0 -1
  57. data/test/markaby/scope.mab +0 -1
  58. data/test/markaby/yielding.mab +0 -2
  59. data/test/tilt_asciidoctor_test.rb +0 -44
  60. data/test/tilt_blueclothtemplate_test.rb +0 -45
  61. data/test/tilt_buildertemplate_test.rb +0 -59
  62. data/test/tilt_cache_test.rb +0 -32
  63. data/test/tilt_coffeescripttemplate_test.rb +0 -114
  64. data/test/tilt_compilesite_test.rb +0 -51
  65. data/test/tilt_creoletemplate_test.rb +0 -28
  66. data/test/tilt_csv_test.rb +0 -69
  67. data/test/tilt_erbtemplate_test.rb +0 -239
  68. data/test/tilt_erubistemplate_test.rb +0 -151
  69. data/test/tilt_etannitemplate_test.rb +0 -173
  70. data/test/tilt_fallback_test.rb +0 -122
  71. data/test/tilt_hamltemplate_test.rb +0 -144
  72. data/test/tilt_kramdown_test.rb +0 -42
  73. data/test/tilt_lesstemplate_test.less +0 -1
  74. data/test/tilt_lesstemplate_test.rb +0 -42
  75. data/test/tilt_liquidtemplate_test.rb +0 -78
  76. data/test/tilt_markaby_test.rb +0 -88
  77. data/test/tilt_markdown_test.rb +0 -172
  78. data/test/tilt_marukutemplate_test.rb +0 -48
  79. data/test/tilt_nokogiritemplate_test.rb +0 -87
  80. data/test/tilt_radiustemplate_test.rb +0 -75
  81. data/test/tilt_rdiscounttemplate_test.rb +0 -55
  82. data/test/tilt_rdoctemplate_test.rb +0 -31
  83. data/test/tilt_redcarpettemplate_test.rb +0 -71
  84. data/test/tilt_redclothtemplate_test.rb +0 -36
  85. data/test/tilt_sasstemplate_test.rb +0 -41
  86. data/test/tilt_stringtemplate_test.rb +0 -170
  87. data/test/tilt_template_test.rb +0 -323
  88. data/test/tilt_test.rb +0 -65
  89. data/test/tilt_wikiclothtemplate_test.rb +0 -32
  90. data/test/tilt_yajltemplate_test.rb +0 -101
  91. data/tilt.gemspec +0 -120
@@ -1,170 +0,0 @@
1
- require 'contest'
2
- require 'tilt'
3
-
4
- class StringTemplateTest < Test::Unit::TestCase
5
- test "registered for '.str' files" do
6
- assert_equal Tilt::StringTemplate, Tilt['test.str']
7
- end
8
-
9
- test "loading and evaluating templates on #render" do
10
- template = Tilt::StringTemplate.new { |t| "Hello World!" }
11
- assert_equal "Hello World!", template.render
12
- end
13
-
14
- test "can be rendered more than once" do
15
- template = Tilt::StringTemplate.new { |t| "Hello World!" }
16
- 3.times { assert_equal "Hello World!", template.render }
17
- end
18
-
19
- test "passing locals" do
20
- template = Tilt::StringTemplate.new { 'Hey #{name}!' }
21
- assert_equal "Hey Joe!", template.render(Object.new, :name => 'Joe')
22
- end
23
-
24
- test "evaluating in an object scope" do
25
- template = Tilt::StringTemplate.new { 'Hey #{@name}!' }
26
- scope = Object.new
27
- scope.instance_variable_set :@name, 'Joe'
28
- assert_equal "Hey Joe!", template.render(scope)
29
- end
30
-
31
- test "passing a block for yield" do
32
- template = Tilt::StringTemplate.new { 'Hey #{yield}!' }
33
- assert_equal "Hey Joe!", template.render { 'Joe' }
34
- assert_equal "Hey Moe!", template.render { 'Moe' }
35
- end
36
-
37
- test "multiline templates" do
38
- template = Tilt::StringTemplate.new { "Hello\nWorld!\n" }
39
- assert_equal "Hello\nWorld!\n", template.render
40
- end
41
-
42
- test "backtrace file and line reporting without locals" do
43
- data = File.read(__FILE__).split("\n__END__\n").last
44
- fail unless data[0] == ?<
45
- template = Tilt::StringTemplate.new('test.str', 11) { data }
46
- begin
47
- template.render
48
- fail 'should have raised an exception'
49
- rescue => boom
50
- assert_kind_of NameError, boom
51
- line = boom.backtrace.grep(/^test\.str:/).first
52
- assert line, "Backtrace didn't contain test.str"
53
- file, line, meth = line.split(":")
54
- assert_equal '13', line
55
- end
56
- end
57
-
58
- test "backtrace file and line reporting with locals" do
59
- data = File.read(__FILE__).split("\n__END__\n").last
60
- fail unless data[0] == ?<
61
- template = Tilt::StringTemplate.new('test.str', 1) { data }
62
- begin
63
- template.render(nil, :name => 'Joe', :foo => 'bar')
64
- fail 'should have raised an exception'
65
- rescue => boom
66
- assert_kind_of RuntimeError, boom
67
- line = boom.backtrace.first
68
- file, line, meth = line.split(":")
69
- assert_equal 'test.str', file
70
- assert_equal '6', line
71
- end
72
- end
73
- end
74
-
75
-
76
- class CompiledStringTemplateTest < Test::Unit::TestCase
77
- def teardown
78
- GC.start
79
- end
80
-
81
- class Scope
82
- end
83
-
84
- test "compiling template source to a method" do
85
- template = Tilt::StringTemplate.new { |t| "Hello World!" }
86
- template.render(Scope.new)
87
- method = template.send(:compiled_method, [])
88
- assert_kind_of UnboundMethod, method
89
- end
90
-
91
- test "loading and evaluating templates on #render" do
92
- template = Tilt::StringTemplate.new { |t| "Hello World!" }
93
- assert_equal "Hello World!", template.render(Scope.new)
94
- end
95
-
96
- test "passing locals" do
97
- template = Tilt::StringTemplate.new { 'Hey #{name}!' }
98
- assert_equal "Hey Joe!", template.render(Scope.new, :name => 'Joe')
99
- assert_equal "Hey Moe!", template.render(Scope.new, :name => 'Moe')
100
- end
101
-
102
- test "evaluating in an object scope" do
103
- template = Tilt::StringTemplate.new { 'Hey #{@name}!' }
104
- scope = Scope.new
105
- scope.instance_variable_set :@name, 'Joe'
106
- assert_equal "Hey Joe!", template.render(scope)
107
- scope.instance_variable_set :@name, 'Moe'
108
- assert_equal "Hey Moe!", template.render(scope)
109
- end
110
-
111
- test "passing a block for yield" do
112
- template = Tilt::StringTemplate.new { 'Hey #{yield}!' }
113
- assert_equal "Hey Joe!", template.render(Scope.new) { 'Joe' }
114
- assert_equal "Hey Moe!", template.render(Scope.new) { 'Moe' }
115
- end
116
-
117
- test "multiline templates" do
118
- template = Tilt::StringTemplate.new { "Hello\nWorld!\n" }
119
- assert_equal "Hello\nWorld!\n", template.render(Scope.new)
120
- end
121
-
122
-
123
- test "template with '}'" do
124
- template = Tilt::StringTemplate.new { "Hello }" }
125
- assert_equal "Hello }", template.render
126
- end
127
-
128
- test "backtrace file and line reporting without locals" do
129
- data = File.read(__FILE__).split("\n__END__\n").last
130
- fail unless data[0] == ?<
131
- template = Tilt::StringTemplate.new('test.str', 11) { data }
132
- begin
133
- template.render(Scope.new)
134
- fail 'should have raised an exception'
135
- rescue => boom
136
- assert_kind_of NameError, boom
137
- line = boom.backtrace.first
138
- line = boom.backtrace.grep(/^test\.str:/).first
139
- assert line, "Backtrace didn't contain test.str"
140
- file, line, meth = line.split(":")
141
- assert_equal '13', line
142
- end
143
- end
144
-
145
- test "backtrace file and line reporting with locals" do
146
- data = File.read(__FILE__).split("\n__END__\n").last
147
- fail unless data[0] == ?<
148
- template = Tilt::StringTemplate.new('test.str') { data }
149
- begin
150
- template.render(Scope.new, :name => 'Joe', :foo => 'bar')
151
- fail 'should have raised an exception'
152
- rescue => boom
153
- assert_kind_of RuntimeError, boom
154
- line = boom.backtrace.first
155
- file, line, meth = line.split(":")
156
- assert_equal 'test.str', file
157
- assert_equal '6', line
158
- end
159
- end
160
- end
161
-
162
- __END__
163
- <html>
164
- <body>
165
- <h1>Hey #{name}!</h1>
166
-
167
-
168
- <p>#{fail}</p>
169
- </body>
170
- </html>
@@ -1,323 +0,0 @@
1
- # coding: utf-8
2
- require 'contest'
3
- require 'tilt'
4
- require 'tempfile'
5
-
6
- class TiltTemplateTest < Test::Unit::TestCase
7
-
8
- class MockTemplate < Tilt::Template
9
- def prepare
10
- end
11
- end
12
-
13
- test "needs a file or block" do
14
- assert_raise(ArgumentError) { Tilt::Template.new }
15
- end
16
-
17
- test "initializing with a file" do
18
- inst = MockTemplate.new('foo.erb') {}
19
- assert_equal 'foo.erb', inst.file
20
- end
21
-
22
- test "initializing with a file and line" do
23
- inst = MockTemplate.new('foo.erb', 55) {}
24
- assert_equal 'foo.erb', inst.file
25
- assert_equal 55, inst.line
26
- end
27
-
28
- test "initializing with a tempfile" do
29
- tempfile = Tempfile.new('tilt_template_test')
30
- inst = MockTemplate.new(tempfile)
31
- assert_equal File.basename(tempfile.path), inst.basename
32
- end
33
-
34
- class SillyHash < Hash
35
- def path(arg)
36
- end
37
- end
38
-
39
- test "initialize with hash that implements #path" do
40
- options = SillyHash[:key => :value]
41
- inst = MockTemplate.new(options) {}
42
- assert_equal :value, inst.options[:key]
43
- end
44
-
45
- test "uses correct eval_file" do
46
- inst = MockTemplate.new('foo.erb', 55) {}
47
- assert_equal 'foo.erb', inst.eval_file
48
- end
49
-
50
- test "uses a default filename for #eval_file when no file provided" do
51
- inst = MockTemplate.new { 'Hi' }
52
- assert_not_nil inst.eval_file
53
- assert !inst.eval_file.include?("\n")
54
- end
55
-
56
- test "calculating template's #basename" do
57
- inst = MockTemplate.new('/tmp/templates/foo.html.erb') {}
58
- assert_equal 'foo.html.erb', inst.basename
59
- end
60
-
61
- test "calculating the template's #name" do
62
- inst = MockTemplate.new('/tmp/templates/foo.html.erb') {}
63
- assert_equal 'foo', inst.name
64
- end
65
-
66
- test "initializing with a data loading block" do
67
- MockTemplate.new { |template| "Hello World!" }
68
- end
69
-
70
- class InitializingMockTemplate < Tilt::Template
71
- @@initialized_count = 0
72
- def self.initialized_count
73
- @@initialized_count
74
- end
75
-
76
- def initialize_engine
77
- @@initialized_count += 1
78
- end
79
-
80
- def prepare
81
- end
82
- end
83
-
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
- class PreparingMockTemplate < Tilt::Template
97
- include Test::Unit::Assertions
98
- def prepare
99
- assert !data.nil?
100
- @prepared = true
101
- end
102
- def prepared? ; @prepared ; end
103
- end
104
-
105
- test "raises NotImplementedError when #prepare not defined" do
106
- assert_raise(NotImplementedError) { Tilt::Template.new { |template| "Hello World!" } }
107
- end
108
-
109
- test "raises NotImplementedError when #evaluate or #template_source not defined" do
110
- inst = PreparingMockTemplate.new { |t| "Hello World!" }
111
- assert_raise(NotImplementedError) { inst.render }
112
- assert inst.prepared?
113
- end
114
-
115
- class SimpleMockTemplate < PreparingMockTemplate
116
- include Test::Unit::Assertions
117
- def evaluate(scope, locals, &block)
118
- assert prepared?
119
- assert !scope.nil?
120
- assert !locals.nil?
121
- "<em>#{@data}</em>"
122
- end
123
- end
124
-
125
- test "prepares and evaluates the template on #render" do
126
- inst = SimpleMockTemplate.new { |t| "Hello World!" }
127
- assert_equal "<em>Hello World!</em>", inst.render
128
- assert inst.prepared?
129
- end
130
-
131
- class SourceGeneratingMockTemplate < PreparingMockTemplate
132
- def precompiled_template(locals)
133
- "foo = [] ; foo << %Q{#{data}} ; foo.join"
134
- end
135
- end
136
-
137
- test "template_source with locals" do
138
- inst = SourceGeneratingMockTemplate.new { |t| 'Hey #{name}!' }
139
- assert_equal "Hey Joe!", inst.render(Object.new, :name => 'Joe')
140
- assert inst.prepared?
141
- end
142
-
143
- test "template_source with locals of strings" do
144
- inst = SourceGeneratingMockTemplate.new { |t| 'Hey #{name}!' }
145
- assert_equal "Hey Joe!", inst.render(Object.new, 'name' => 'Joe')
146
- assert inst.prepared?
147
- end
148
-
149
- test "template_source with locals having non-variable keys raises error" do
150
- inst = SourceGeneratingMockTemplate.new { |t| '1 + 2 = #{_answer}' }
151
- err = assert_raise(RuntimeError) { inst.render(Object.new, 'ANSWER' => 3) }
152
- assert_equal "invalid locals key: \"ANSWER\" (keys must be variable names)", err.message
153
- assert_equal "1 + 2 = 3", inst.render(Object.new, '_answer' => 3)
154
- end
155
-
156
- class CustomGeneratingMockTemplate < PreparingMockTemplate
157
- def precompiled_template(locals)
158
- data
159
- end
160
-
161
- def precompiled_preamble(locals)
162
- options.fetch(:preamble)
163
- end
164
-
165
- def precompiled_postamble(locals)
166
- options.fetch(:postamble)
167
- end
168
- end
169
-
170
- test "supports pre/postamble" do
171
- inst = CustomGeneratingMockTemplate.new(
172
- :preamble => 'buf = []',
173
- :postamble => 'buf.join'
174
- ) { 'buf << 1' }
175
-
176
- assert_equal "1", inst.render
177
- end
178
-
179
- # Special-case for Haml
180
- # https://github.com/rtomayko/tilt/issues/193
181
- test "supports Array pre/postambles" do
182
- inst = CustomGeneratingMockTemplate.new(
183
- :preamble => ['buf = ', '[]'],
184
- :postamble => ['buf.', 'join']
185
- ) { 'buf << 1' }
186
-
187
- # TODO: Use assert_output when we swicth to MiniTest
188
- warns = <<-EOF
189
- precompiled_preamble should return String (not Array)
190
- precompiled_postamble should return String (not Array)
191
- EOF
192
-
193
- begin
194
- require 'stringio'
195
- $stderr = StringIO.new
196
- assert_equal "1", inst.render
197
- assert_equal warns, $stderr.string
198
- ensure
199
- $stderr = STDERR
200
- end
201
- end
202
-
203
- class Person
204
- CONSTANT = "Bob"
205
-
206
- attr_accessor :name
207
- def initialize(name)
208
- @name = name
209
- end
210
- end
211
-
212
- test "template_source with an object scope" do
213
- inst = SourceGeneratingMockTemplate.new { |t| 'Hey #{@name}!' }
214
- scope = Person.new('Joe')
215
- assert_equal "Hey Joe!", inst.render(scope)
216
- end
217
-
218
- test "template_source with a block for yield" do
219
- inst = SourceGeneratingMockTemplate.new { |t| 'Hey #{yield}!' }
220
- assert_equal "Hey Joe!", inst.render(Object.new){ 'Joe' }
221
- end
222
-
223
- test "template which accesses a constant" do
224
- inst = SourceGeneratingMockTemplate.new { |t| 'Hey #{CONSTANT}!' }
225
- assert_equal "Hey Bob!", inst.render(Person.new("Joe"))
226
- end
227
-
228
- ##
229
- # Encodings
230
-
231
- class DynamicMockTemplate < MockTemplate
232
- def precompiled_template(locals)
233
- options[:code]
234
- end
235
- end
236
-
237
- class UTF8Template < MockTemplate
238
- def default_encoding
239
- Encoding::UTF_8
240
- end
241
- end
242
-
243
- if ''.respond_to?(:encoding)
244
- original_encoding = Encoding.default_external
245
-
246
- setup do
247
- @file = Tempfile.open('template')
248
- @file.puts "stuff"
249
- @file.close
250
- @template = @file.path
251
- end
252
-
253
- teardown do
254
- Encoding.default_external = original_encoding
255
- Encoding.default_internal = nil
256
- @file.delete
257
- end
258
-
259
- test "reading from file assumes default external encoding" do
260
- Encoding.default_external = 'Big5'
261
- inst = MockTemplate.new(@template)
262
- assert_equal 'Big5', inst.data.encoding.to_s
263
- end
264
-
265
- test "reading from file with a :default_encoding overrides default external" do
266
- Encoding.default_external = 'Big5'
267
- inst = MockTemplate.new(@template, :default_encoding => 'GBK')
268
- assert_equal 'GBK', inst.data.encoding.to_s
269
- end
270
-
271
- test "reading from file with default_internal set does no transcoding" do
272
- Encoding.default_internal = 'utf-8'
273
- Encoding.default_external = 'Big5'
274
- inst = MockTemplate.new(@template)
275
- assert_equal 'Big5', inst.data.encoding.to_s
276
- end
277
-
278
- test "using provided template data verbatim when given as string" do
279
- Encoding.default_internal = 'Big5'
280
- inst = MockTemplate.new(@template) { "blah".force_encoding('GBK') }
281
- assert_equal 'GBK', inst.data.encoding.to_s
282
- end
283
-
284
- test "uses the template from the generated source code" do
285
- tmpl = "ふが"
286
- code = tmpl.inspect.encode('Shift_JIS')
287
- inst = DynamicMockTemplate.new(:code => code) { '' }
288
- res = inst.render
289
- assert_equal 'Shift_JIS', res.encoding.to_s
290
- assert_equal tmpl, res.encode(tmpl.encoding)
291
- end
292
-
293
- test "uses the magic comment from the generated source code" do
294
- tmpl = "ふが"
295
- code = ("# coding: Shift_JIS\n" + tmpl.inspect).encode('Shift_JIS')
296
- # Set it to an incorrect encoding
297
- code.force_encoding('UTF-8')
298
-
299
- inst = DynamicMockTemplate.new(:code => code) { '' }
300
- res = inst.render
301
- assert_equal 'Shift_JIS', res.encoding.to_s
302
- assert_equal tmpl, res.encode(tmpl.encoding)
303
- end
304
-
305
- test "uses #default_encoding instead of default_external" do
306
- Encoding.default_external = 'Big5'
307
- inst = UTF8Template.new(@template)
308
- assert_equal 'UTF-8', inst.data.encoding.to_s
309
- end
310
-
311
- test "uses #default_encoding instead of current encoding" do
312
- tmpl = "".force_encoding('Big5')
313
- inst = UTF8Template.new(@template) { tmpl }
314
- assert_equal 'UTF-8', inst.data.encoding.to_s
315
- end
316
-
317
- test "raises error if the encoding is not valid" do
318
- assert_raises(Encoding::InvalidByteSequenceError) do
319
- UTF8Template.new(@template) { "\xe4" }
320
- end
321
- end
322
- end
323
- end
data/test/tilt_test.rb DELETED
@@ -1,65 +0,0 @@
1
- require 'contest'
2
- require 'tilt'
3
-
4
- class TiltTest < Test::Unit::TestCase
5
- class MockTemplate
6
- attr_reader :args, :block
7
- def initialize(*args, &block)
8
- @args = args
9
- @block = block
10
- end
11
- end
12
-
13
- test "registering template implementation classes by file extension" do
14
- Tilt.register('mock', MockTemplate)
15
- end
16
-
17
- test "an extension is registered if explicit handle is found" do
18
- Tilt.register('mock', MockTemplate)
19
- assert Tilt.registered?('mock')
20
- end
21
-
22
- test "registering template classes by symbol file extension" do
23
- Tilt.register(:mock, MockTemplate)
24
- end
25
-
26
- test "looking up template classes by exact file extension" do
27
- Tilt.register('mock', MockTemplate)
28
- impl = Tilt['mock']
29
- assert_equal MockTemplate, impl
30
- end
31
-
32
- test "looking up template classes by implicit file extension" do
33
- Tilt.register('mock', MockTemplate)
34
- impl = Tilt['.mock']
35
- assert_equal MockTemplate, impl
36
- end
37
-
38
- test "looking up template classes with multiple file extensions" do
39
- Tilt.register('mock', MockTemplate)
40
- impl = Tilt['index.html.mock']
41
- assert_equal MockTemplate, impl
42
- end
43
-
44
- test "looking up template classes by file name" do
45
- Tilt.register('mock', MockTemplate)
46
- impl = Tilt['templates/test.mock']
47
- assert_equal MockTemplate, impl
48
- end
49
-
50
- test "looking up non-existant template class" do
51
- assert_nil Tilt['none']
52
- end
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
- test "creating new template instance with a filename" do
60
- Tilt.register('mock', MockTemplate)
61
- template = Tilt.new('foo.mock', 1, :key => 'val') { 'Hello World!' }
62
- assert_equal ['foo.mock', 1, {:key => 'val'}], template.args
63
- assert_equal 'Hello World!', template.block.call
64
- end
65
- end
@@ -1,32 +0,0 @@
1
- require 'contest'
2
- require 'tilt'
3
-
4
- begin
5
- require 'wikicloth'
6
-
7
- class WikiClothTemplateTest < Test::Unit::TestCase
8
- test "is registered for '.mediawiki' files" do
9
- assert_equal Tilt::WikiClothTemplate, Tilt['test.mediawiki']
10
- end
11
-
12
- test "is registered for '.mw' files" do
13
- assert_equal Tilt::WikiClothTemplate, Tilt['test.mw']
14
- end
15
-
16
- test "is registered for '.wiki' files" do
17
- assert_equal Tilt::WikiClothTemplate, Tilt['test.wiki']
18
- end
19
-
20
- test "compiles and evaluates the template on #render" do
21
- template = Tilt::WikiClothTemplate.new { |t| "= Hello World! =" }
22
- assert_match /<h1>.*Hello World!.*<\/h1>/, template.render
23
- end
24
-
25
- test "can be rendered more than once" do
26
- template = Tilt::WikiClothTemplate.new { |t| "= Hello World! =" }
27
- 3.times { assert_match /<h1>.*Hello World!.*<\/h1>/, template.render }
28
- end
29
- end
30
- rescue LoadError => boom
31
- warn "Tilt::WikiClothTemplate (disabled)"
32
- end
@@ -1,101 +0,0 @@
1
- require 'contest'
2
- require 'tilt'
3
-
4
- begin
5
- require 'yajl'
6
-
7
- class YajlTemplateTest < Test::Unit::TestCase
8
- test "is registered for '.yajl' files" do
9
- assert_equal Tilt::YajlTemplate, Tilt['test.yajl']
10
- end
11
-
12
- test "compiles and evaluates the template on #render" do
13
- template = Tilt::YajlTemplate.new { "json = { :integer => 3, :string => 'hello' }" }
14
- output = template.render
15
- result = Yajl::Parser.parse(output)
16
- expect = {"integer" => 3,"string" => "hello"}
17
- assert_equal expect, result
18
- end
19
-
20
- test "can be rendered more than once" do
21
- template = Tilt::YajlTemplate.new { "json = { :integer => 3, :string => 'hello' }" }
22
- expect = {"integer" => 3,"string" => "hello"}
23
- 3.times do
24
- output = template.render
25
- result = Yajl::Parser.parse(output)
26
- assert_equal expect, result
27
- end
28
- end
29
-
30
- test "evaluating ruby code" do
31
- template = Tilt::YajlTemplate.new { "json = { :integer => (3 * 2) }" }
32
- assert_equal '{"integer":6}', template.render
33
- end
34
-
35
- test "evaluating in an object scope" do
36
- template = Tilt::YajlTemplate.new { "json = { :string => 'Hey ' + @name + '!' }" }
37
- scope = Object.new
38
- scope.instance_variable_set :@name, 'Joe'
39
- assert_equal '{"string":"Hey Joe!"}', template.render(scope)
40
- end
41
-
42
- test "passing locals" do
43
- template = Tilt::YajlTemplate.new { "json = { :string => 'Hey ' + name + '!' }" }
44
- assert_equal '{"string":"Hey Joe!"}', template.render(Object.new, :name => 'Joe')
45
- end
46
-
47
- test "passing a block for yield" do
48
- template = Tilt::YajlTemplate.new { "json = { :string => 'Hey ' + yield + '!' }" }
49
- assert_equal '{"string":"Hey Joe!"}', template.render { 'Joe' }
50
- assert_equal '{"string":"Hey Moe!"}', template.render { 'Moe' }
51
- end
52
-
53
- test "template multiline" do
54
- template = Tilt::YajlTemplate.new { %Q{
55
- json = {
56
- :string => "hello"
57
- }
58
- } }
59
- assert_equal '{"string":"hello"}', template.render
60
- end
61
-
62
- test "template can reuse existing json buffer" do
63
- template = Tilt::YajlTemplate.new { "json.merge! :string => 'hello'" }
64
- assert_equal '{"string":"hello"}', template.render
65
- end
66
-
67
- test "template can end with any statement" do
68
- template = Tilt::YajlTemplate.new { %Q{
69
- json = {
70
- :string => "hello"
71
- }
72
- four = 2 * 2
73
- json[:integer] = four
74
- nil
75
- } }
76
- result = template.render
77
- assert( (result == '{"string":"hello","integer":4}') || (result == '{"integer":4,"string":"hello"}') )
78
- end
79
-
80
- test "option callback" do
81
- options = { :callback => 'foo' }
82
- template = Tilt::YajlTemplate.new(nil, options) { "json = { :string => 'hello' }" }
83
- assert_equal 'foo({"string":"hello"});', template.render
84
- end
85
-
86
- test "option variable" do
87
- options = { :variable => 'output' }
88
- template = Tilt::YajlTemplate.new(nil, options) { "json = { :string => 'hello' }" }
89
- assert_equal 'var output = {"string":"hello"};', template.render
90
- end
91
-
92
- test "option callback and variable" do
93
- options = { :callback => 'foo', :variable => 'output' }
94
- template = Tilt::YajlTemplate.new(nil, options) { "json = { :string => 'hello' }" }
95
- assert_equal 'var output = {"string":"hello"}; foo(output);', template.render
96
- end
97
-
98
- end
99
- rescue LoadError
100
- warn "Tilt::YajlTemplateTest (disabled)"
101
- end