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.
Files changed (72) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +12 -0
  3. data/Gemfile +33 -26
  4. data/README.md +21 -48
  5. data/Rakefile +21 -30
  6. data/{TEMPLATES.md → docs/TEMPLATES.md} +12 -6
  7. data/docs/common.css +14 -0
  8. data/lib/tilt/asciidoc.rb +1 -8
  9. data/lib/tilt/bluecloth.rb +24 -0
  10. data/lib/tilt/builder.rb +1 -8
  11. data/lib/tilt/coffee.rb +1 -8
  12. data/lib/tilt/creole.rb +25 -0
  13. data/lib/tilt/csv.rb +7 -13
  14. data/lib/tilt/erb.rb +2 -55
  15. data/lib/tilt/erubis.rb +43 -0
  16. data/lib/tilt/haml.rb +1 -8
  17. data/lib/tilt/kramdown.rb +33 -0
  18. data/lib/tilt/less.rb +38 -0
  19. data/lib/tilt/liquid.rb +1 -8
  20. data/lib/tilt/mapping.rb +247 -0
  21. data/lib/tilt/markaby.rb +1 -8
  22. data/lib/tilt/maruku.rb +22 -0
  23. data/lib/tilt/nokogiri.rb +1 -8
  24. data/lib/tilt/radius.rb +1 -8
  25. data/lib/tilt/rdiscount.rb +39 -0
  26. data/lib/tilt/rdoc.rb +3 -10
  27. data/lib/tilt/redcarpet.rb +104 -0
  28. data/lib/tilt/{textile.rb → redcloth.rb} +1 -8
  29. data/lib/tilt/sass.rb +41 -0
  30. data/lib/tilt/template.rb +84 -88
  31. data/lib/tilt/wikicloth.rb +22 -0
  32. data/lib/tilt/yajl.rb +1 -8
  33. data/lib/tilt.rb +85 -154
  34. data/test/{contest.rb → test_helper.rb} +5 -11
  35. data/test/tilt_asciidoctor_test.rb +6 -6
  36. data/test/tilt_blueclothtemplate_test.rb +3 -15
  37. data/test/tilt_buildertemplate_test.rb +3 -3
  38. data/test/tilt_cache_test.rb +2 -2
  39. data/test/tilt_coffeescripttemplate_test.rb +8 -18
  40. data/test/tilt_compilesite_test.rb +2 -2
  41. data/test/tilt_creoletemplate_test.rb +3 -7
  42. data/test/tilt_csv_test.rb +5 -9
  43. data/test/tilt_erbtemplate_test.rb +7 -7
  44. data/test/tilt_erubistemplate_test.rb +7 -7
  45. data/test/tilt_etannitemplate_test.rb +4 -3
  46. data/test/tilt_hamltemplate_test.rb +4 -4
  47. data/test/tilt_kramdown_test.rb +5 -27
  48. data/test/tilt_lesstemplate_test.rb +3 -3
  49. data/test/tilt_liquidtemplate_test.rb +3 -3
  50. data/test/tilt_mapping.rb +215 -0
  51. data/test/tilt_markaby_test.rb +4 -4
  52. data/test/tilt_markdown_test.rb +13 -14
  53. data/test/tilt_marukutemplate_test.rb +6 -18
  54. data/test/tilt_metadata_test.rb +42 -0
  55. data/test/tilt_nokogiritemplate_test.rb +3 -3
  56. data/test/tilt_radiustemplate_test.rb +3 -3
  57. data/test/tilt_rdiscounttemplate_test.rb +6 -18
  58. data/test/tilt_rdoctemplate_test.rb +3 -5
  59. data/test/tilt_redcarpettemplate_test.rb +11 -23
  60. data/test/tilt_redclothtemplate_test.rb +3 -3
  61. data/test/tilt_sasstemplate_test.rb +4 -4
  62. data/test/tilt_stringtemplate_test.rb +4 -3
  63. data/test/tilt_template_test.rb +58 -25
  64. data/test/tilt_test.rb +10 -15
  65. data/test/tilt_wikiclothtemplate_test.rb +3 -3
  66. data/test/tilt_yajltemplate_test.rb +3 -3
  67. data/tilt.gemspec +19 -32
  68. metadata +27 -386
  69. data/lib/tilt/css.rb +0 -80
  70. data/lib/tilt/markdown.rb +0 -214
  71. data/lib/tilt/wiki.rb +0 -58
  72. data/test/tilt_fallback_test.rb +0 -122
@@ -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 &lt;b&gt;World&lt;/b&gt;</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::Unit::TestCase
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::Unit::TestCase
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
- assert_equal "<p>Hello “World'' – This is — a test …</p>", html
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::Unit::TestCase
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::Unit::TestCase
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::Unit::TestCase
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 'contest'
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
- mappings = Tilt.mappings[ext]
23
- kram_idx = mappings.index(Tilt::KramdownTemplate)
24
- maru_idx = mappings.index(Tilt::MarukuTemplate)
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 'contest'
1
+ require 'test_helper'
2
2
  require 'tilt'
3
3
 
4
4
  begin
5
- require 'nokogiri'
6
- class NokogiriTemplateTest < Test::Unit::TestCase
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 'contest'
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::Unit::TestCase
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 'contest'
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
- mappings = Tilt.mappings[ext]
23
- blue_idx = mappings.index(Tilt::BlueClothTemplate)
24
- rdis_idx = mappings.index(Tilt::RDiscountTemplate)
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 'contest'
1
+ require 'test_helper'
2
2
  require 'tilt'
3
3
 
4
4
  begin
5
- require 'rdoc'
6
- require 'rdoc/markup'
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 'contest'
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
- mappings = Tilt.mappings[ext]
23
- blue_idx = mappings.index(Tilt::BlueClothTemplate)
24
- redc_idx = mappings.index(Tilt::RedcarpetTemplate)
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
- mappings = Tilt.mappings[ext]
33
- rdis_idx = mappings.index(Tilt::RDiscountTemplate)
34
- redc_idx = mappings.index(Tilt::RedcarpetTemplate)
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 &ndash; &#39;Smarty Pants&#39;<\/p>/,
46
+ assert_match /<p>OKAY &ndash; (&#39;|&lsquo;)Smarty Pants(&#39;|&rsquo;)<\/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 &ndash; &#39;Smarty Pants&#39;<\/p>/,
53
+ assert_match /<p>OKAY &ndash; (&#39;|&lsquo;)Smarty Pants(&#39;|&rsquo;)<\/p>/,
66
54
  template.render
67
55
  end
68
56
  end
@@ -1,10 +1,10 @@
1
- require 'contest'
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::Unit::TestCase
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 'contest'
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::Unit::TestCase
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::Unit::TestCase
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 'contest'
1
+ require 'test_helper'
2
2
  require 'tilt'
3
+ require 'tilt/string'
3
4
 
4
- class StringTemplateTest < Test::Unit::TestCase
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::Unit::TestCase
77
+ class CompiledStringTemplateTest < Minitest::Test
77
78
  def teardown
78
79
  GC.start
79
80
  end
@@ -1,9 +1,10 @@
1
1
  # coding: utf-8
2
- require 'contest'
2
+ require 'test_helper'
3
3
  require 'tilt'
4
+ require 'tilt/template'
4
5
  require 'tempfile'
5
6
 
6
- class TiltTemplateTest < Test::Unit::TestCase
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
- assert_raise(ArgumentError) { Tilt::Template.new }
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
- assert_not_nil inst.eval_file
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
- assert !data.nil?
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
- assert_raise(NotImplementedError) { Tilt::Template.new { |template| "Hello World!" } }
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
- assert_raise(NotImplementedError) { inst.render }
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
- assert prepared?
119
- assert !scope.nil?
120
- assert !locals.nil?
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 = assert_raise(RuntimeError) { inst.render(Object.new, 'ANSWER' => 3) }
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 'contest'
1
+ require 'test_helper'
2
2
  require 'tilt'
3
3
 
4
- class TiltTest < Test::Unit::TestCase
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', MockTemplate)
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', MockTemplate)
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, MockTemplate)
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', MockTemplate)
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', MockTemplate)
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', MockTemplate)
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', MockTemplate)
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', MockTemplate)
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 'contest'
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::Unit::TestCase
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 'contest'
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::Unit::TestCase
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