tilt 1.4.1 → 2.0.11

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 (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
data/lib/tilt/markdown.rb DELETED
@@ -1,214 +0,0 @@
1
- require 'tilt/template'
2
-
3
- module Tilt
4
- # Discount Markdown implementation. See:
5
- # http://github.com/rtomayko/rdiscount
6
- #
7
- # RDiscount is a simple text filter. It does not support +scope+ or
8
- # +locals+. The +:smart+ and +:filter_html+ options may be set true
9
- # to enable those flags on the underlying RDiscount object.
10
- class RDiscountTemplate < Template
11
- self.default_mime_type = 'text/html'
12
-
13
- ALIAS = {
14
- :escape_html => :filter_html,
15
- :smartypants => :smart
16
- }
17
-
18
- FLAGS = [:smart, :filter_html, :smartypants, :escape_html]
19
-
20
- def flags
21
- FLAGS.select { |flag| options[flag] }.map { |flag| ALIAS[flag] || flag }
22
- end
23
-
24
- def self.engine_initialized?
25
- defined? ::RDiscount
26
- end
27
-
28
- def initialize_engine
29
- require_template_library 'rdiscount'
30
- end
31
-
32
- def prepare
33
- @engine = RDiscount.new(data, *flags)
34
- @output = nil
35
- end
36
-
37
- def evaluate(scope, locals, &block)
38
- @output ||= @engine.to_html
39
- end
40
-
41
- def allows_script?
42
- false
43
- end
44
- end
45
-
46
- # Upskirt Markdown implementation. See:
47
- # https://github.com/tanoku/redcarpet
48
- #
49
- # Supports both Redcarpet 1.x and 2.x
50
- class RedcarpetTemplate < Template
51
- def self.engine_initialized?
52
- defined? ::Redcarpet
53
- end
54
-
55
- def initialize_engine
56
- require_template_library 'redcarpet'
57
- end
58
-
59
- def prepare
60
- klass = [Redcarpet2, Redcarpet1].detect { |e| e.engine_initialized? }
61
- @engine = klass.new(file, line, options) { data }
62
- end
63
-
64
- def evaluate(scope, locals, &block)
65
- @engine.evaluate(scope, locals, &block)
66
- end
67
-
68
- def allows_script?
69
- false
70
- end
71
-
72
- # Compatibility mode for Redcarpet 1.x
73
- class Redcarpet1 < RDiscountTemplate
74
- self.default_mime_type = 'text/html'
75
-
76
- def self.engine_initialized?
77
- defined? ::RedcarpetCompat
78
- end
79
-
80
- def prepare
81
- @engine = RedcarpetCompat.new(data, *flags)
82
- @output = nil
83
- end
84
- end
85
-
86
- # Future proof mode for Redcarpet 2.x (not yet released)
87
- class Redcarpet2 < Template
88
- self.default_mime_type = 'text/html'
89
-
90
- def self.engine_initialized?
91
- defined? ::Redcarpet::Render and defined? ::Redcarpet::Markdown
92
- end
93
-
94
- def generate_renderer
95
- renderer = options.delete(:renderer) || ::Redcarpet::Render::HTML
96
- return renderer unless options.delete(:smartypants)
97
- return renderer if renderer.is_a?(Class) && renderer <= ::Redcarpet::Render::SmartyPants
98
-
99
- if renderer == ::Redcarpet::Render::XHTML
100
- ::Redcarpet::Render::SmartyHTML.new(:xhtml => true)
101
- elsif renderer == ::Redcarpet::Render::HTML
102
- ::Redcarpet::Render::SmartyHTML
103
- elsif renderer.is_a? Class
104
- Class.new(renderer) { include ::Redcarpet::Render::SmartyPants }
105
- else
106
- renderer.extend ::Redcarpet::Render::SmartyPants
107
- end
108
- end
109
-
110
- def prepare
111
- # try to support the same aliases
112
- RDiscountTemplate::ALIAS.each do |opt, aka|
113
- next if options.key? opt or not options.key? aka
114
- options[opt] = options.delete(aka)
115
- end
116
-
117
- # only raise an exception if someone is trying to enable :escape_html
118
- options.delete(:escape_html) unless options[:escape_html]
119
-
120
- @engine = ::Redcarpet::Markdown.new(generate_renderer, options)
121
- @output = nil
122
- end
123
-
124
- def evaluate(scope, locals, &block)
125
- @output ||= @engine.render(data)
126
- end
127
-
128
- def allows_script?
129
- false
130
- end
131
- end
132
- end
133
-
134
- # BlueCloth Markdown implementation. See:
135
- # http://deveiate.org/projects/BlueCloth/
136
- class BlueClothTemplate < Template
137
- self.default_mime_type = 'text/html'
138
-
139
- def self.engine_initialized?
140
- defined? ::BlueCloth
141
- end
142
-
143
- def initialize_engine
144
- require_template_library 'bluecloth'
145
- end
146
-
147
- def prepare
148
- @engine = BlueCloth.new(data, options)
149
- @output = nil
150
- end
151
-
152
- def evaluate(scope, locals, &block)
153
- @output ||= @engine.to_html
154
- end
155
-
156
- def allows_script?
157
- false
158
- end
159
- end
160
-
161
- # Maruku markdown implementation. See:
162
- # http://maruku.rubyforge.org/
163
- class MarukuTemplate < Template
164
- def self.engine_initialized?
165
- defined? ::Maruku
166
- end
167
-
168
- def initialize_engine
169
- require_template_library 'maruku'
170
- end
171
-
172
- def prepare
173
- @engine = Maruku.new(data, options)
174
- @output = nil
175
- end
176
-
177
- def evaluate(scope, locals, &block)
178
- @output ||= @engine.to_html
179
- end
180
-
181
- def allows_script?
182
- false
183
- end
184
- end
185
-
186
- # Kramdown Markdown implementation. See:
187
- # http://kramdown.rubyforge.org/
188
- class KramdownTemplate < Template
189
- DUMB_QUOTES = [39, 39, 34, 34]
190
-
191
- def self.engine_initialized?
192
- defined? ::Kramdown
193
- end
194
-
195
- def initialize_engine
196
- require_template_library 'kramdown'
197
- end
198
-
199
- def prepare
200
- options[:smart_quotes] = DUMB_QUOTES unless options[:smartypants]
201
- @engine = Kramdown::Document.new(data, options)
202
- @output = nil
203
- end
204
-
205
- def evaluate(scope, locals, &block)
206
- @output ||= @engine.to_html
207
- end
208
-
209
- def allows_script?
210
- false
211
- end
212
- end
213
- end
214
-
data/lib/tilt/wiki.rb DELETED
@@ -1,58 +0,0 @@
1
- require 'tilt/template'
2
-
3
- module Tilt
4
- # Creole implementation. See:
5
- # http://www.wikicreole.org/
6
- class CreoleTemplate < Template
7
- def self.engine_initialized?
8
- defined? ::Creole
9
- end
10
-
11
- def initialize_engine
12
- require_template_library 'creole'
13
- end
14
-
15
- def prepare
16
- opts = {}
17
- [:allowed_schemes, :extensions, :no_escape].each do |k|
18
- opts[k] = options[k] if options[k]
19
- end
20
- @engine = Creole::Parser.new(data, opts)
21
- @output = nil
22
- end
23
-
24
- def evaluate(scope, locals, &block)
25
- @output ||= @engine.to_html
26
- end
27
-
28
- def allows_script?
29
- false
30
- end
31
- end
32
-
33
- # WikiCloth implementation. See:
34
- # http://redcloth.org/
35
- class WikiClothTemplate < Template
36
- def self.engine_initialized?
37
- defined? ::WikiCloth::Parser
38
- end
39
-
40
- def initialize_engine
41
- require_template_library 'wikicloth'
42
- end
43
-
44
- def prepare
45
- @parser = options.delete(:parser) || WikiCloth::Parser
46
- @engine = @parser.new options.merge(:data => data)
47
- @output = nil
48
- end
49
-
50
- def evaluate(scope, locals, &block)
51
- @output ||= @engine.to_html
52
- end
53
-
54
- def allows_script?
55
- false
56
- end
57
- end
58
- end
data/test/contest.rb DELETED
@@ -1,68 +0,0 @@
1
- require "test/unit"
2
-
3
- # Test::Unit loads a default test if the suite is empty, whose purpose is to
4
- # fail. Since having empty contexts is a common practice, we decided to
5
- # overwrite TestSuite#empty? in order to allow them. Having a failure when no
6
- # tests have been defined seems counter-intuitive.
7
- class Test::Unit::TestSuite
8
- def empty?
9
- false
10
- end
11
- end
12
-
13
- # Contest adds +teardown+, +test+ and +context+ as class methods, and the
14
- # instance methods +setup+ and +teardown+ now iterate on the corresponding
15
- # blocks. Note that all setup and teardown blocks must be defined with the
16
- # block syntax. Adding setup or teardown instance methods defeats the purpose
17
- # of this library.
18
- class Test::Unit::TestCase
19
- def self.setup(&block)
20
- define_method :setup do
21
- super(&block)
22
- instance_eval(&block)
23
- end
24
- end
25
-
26
- def self.teardown(&block)
27
- define_method :teardown do
28
- instance_eval(&block)
29
- super(&block)
30
- end
31
- end
32
-
33
- def self.context(name, &block)
34
- subclass = Class.new(self)
35
- remove_tests(subclass)
36
- subclass.class_eval(&block) if block_given?
37
- const_set(context_name(name), subclass)
38
- end
39
-
40
- def self.test(name, &block)
41
- define_method(test_name(name), &block)
42
- end
43
-
44
- class << self
45
- alias_method :should, :test
46
- alias_method :describe, :context
47
- end
48
-
49
- private
50
-
51
- def self.context_name(name)
52
- "Test#{sanitize_name(name).gsub(/(^| )(\w)/) { $2.upcase }}".to_sym
53
- end
54
-
55
- def self.test_name(name)
56
- "test_#{sanitize_name(name).gsub(/\s+/,'_')}".to_sym
57
- end
58
-
59
- def self.sanitize_name(name)
60
- name.gsub(/\W+/, ' ').strip
61
- end
62
-
63
- def self.remove_tests(subclass)
64
- subclass.public_instance_methods.grep(/^test_/).each do |meth|
65
- subclass.send(:undef_method, meth.to_sym)
66
- end
67
- end
68
- end
@@ -1 +0,0 @@
1
- li foo
@@ -1 +0,0 @@
1
- text "hello from markaby!"
@@ -1 +0,0 @@
1
- text "_why?"
@@ -1 +0,0 @@
1
- text "foo"
@@ -1 +0,0 @@
1
- li foo
@@ -1,2 +0,0 @@
1
- text("Hey ")
2
- yield
@@ -1,44 +0,0 @@
1
- require 'contest'
2
- require 'tilt'
3
-
4
- begin
5
- require 'asciidoctor'
6
-
7
- class AsciidoctorTemplateTest < Test::Unit::TestCase
8
- HTML5_OUTPUT = "<div class=\"sect1\"><h2 id=\"_hello_world\">Hello World!</h2><div class=\"sectionbody\"></div></div>"
9
- DOCBOOK_OUTPUT = "<section id=\"_hello_world\"><title>Hello World!</title></section>"
10
-
11
- def strip_space(str)
12
- str.gsub(/>\s+</, '><').strip
13
- end
14
-
15
- test "registered for '.ad' files" do
16
- assert Tilt.mappings['ad'].include?(Tilt::AsciidoctorTemplate)
17
- end
18
-
19
- test "registered for '.adoc' files" do
20
- assert Tilt.mappings['adoc'].include?(Tilt::AsciidoctorTemplate)
21
- end
22
-
23
- test "registered for '.asciidoc' files" do
24
- assert Tilt.mappings['asciidoc'].include?(Tilt::AsciidoctorTemplate)
25
- end
26
-
27
- test "preparing and evaluating html5 templates on #render" do
28
- template = Tilt::AsciidoctorTemplate.new(:attributes => {"backend" => 'html5'}) { |t| "== Hello World!" }
29
- assert_equal HTML5_OUTPUT, strip_space(template.render)
30
- end
31
-
32
- test "preparing and evaluating docbook templates on #render" do
33
- template = Tilt::AsciidoctorTemplate.new(:attributes => {"backend" => 'docbook'}) { |t| "== Hello World!" }
34
- assert_equal DOCBOOK_OUTPUT, strip_space(template.render)
35
- end
36
-
37
- test "can be rendered more than once" do
38
- template = Tilt::AsciidoctorTemplate.new(:attributes => {"backend" => 'html5'}) { |t| "== Hello World!" }
39
- 3.times { assert_equal HTML5_OUTPUT, strip_space(template.render) }
40
- end
41
- end
42
- rescue LoadError => boom
43
- warn "Tilt::AsciidoctorTemplate (disabled)"
44
- end
@@ -1,45 +0,0 @@
1
- require 'contest'
2
- require 'tilt'
3
-
4
- begin
5
- require 'bluecloth'
6
-
7
- class BlueClothTemplateTest < Test::Unit::TestCase
8
- test "registered for '.md' files" do
9
- assert Tilt.mappings['md'].include?(Tilt::BlueClothTemplate)
10
- end
11
-
12
- test "registered for '.mkd' files" do
13
- assert Tilt.mappings['mkd'].include?(Tilt::BlueClothTemplate)
14
- end
15
-
16
- test "registered for '.markdown' files" do
17
- assert Tilt.mappings['markdown'].include?(Tilt::BlueClothTemplate)
18
- end
19
-
20
- test "preparing and evaluating templates on #render" do
21
- template = Tilt::BlueClothTemplate.new { |t| "# Hello World!" }
22
- assert_equal "<h1>Hello World!</h1>", template.render
23
- end
24
-
25
- test "can be rendered more than once" do
26
- template = Tilt::BlueClothTemplate.new { |t| "# Hello World!" }
27
- 3.times { assert_equal "<h1>Hello World!</h1>", template.render }
28
- end
29
-
30
- test "smartypants when :smart is set" do
31
- template = Tilt::BlueClothTemplate.new(:smartypants => true) { |t|
32
- "OKAY -- 'Smarty Pants'" }
33
- assert_equal "<p>OKAY &mdash; &lsquo;Smarty Pants&rsquo;</p>",
34
- template.render
35
- end
36
-
37
- test "stripping HTML when :filter_html is set" do
38
- template = Tilt::BlueClothTemplate.new(:escape_html => true) { |t|
39
- "HELLO <blink>WORLD</blink>" }
40
- assert_equal "<p>HELLO &lt;blink>WORLD&lt;/blink></p>", template.render
41
- end
42
- end
43
- rescue LoadError => boom
44
- warn "Tilt::BlueClothTemplate (disabled)"
45
- end
@@ -1,59 +0,0 @@
1
- require 'contest'
2
- require 'tilt'
3
-
4
- begin
5
- require 'builder'
6
- class BuilderTemplateTest < Test::Unit::TestCase
7
- test "registered for '.builder' files" do
8
- assert_equal Tilt::BuilderTemplate, Tilt['test.builder']
9
- assert_equal Tilt::BuilderTemplate, Tilt['test.xml.builder']
10
- end
11
-
12
- test "preparing and evaluating the template on #render" do
13
- template = Tilt::BuilderTemplate.new { |t| "xml.em 'Hello World!'" }
14
- assert_equal "<em>Hello World!</em>\n", template.render
15
- end
16
-
17
- test "can be rendered more than once" do
18
- template = Tilt::BuilderTemplate.new { |t| "xml.em 'Hello World!'" }
19
- 3.times { assert_equal "<em>Hello World!</em>\n", template.render }
20
- end
21
-
22
- test "passing locals" do
23
- template = Tilt::BuilderTemplate.new { "xml.em('Hey ' + name + '!')" }
24
- assert_equal "<em>Hey Joe!</em>\n", template.render(Object.new, :name => 'Joe')
25
- end
26
-
27
- test "evaluating in an object scope" do
28
- template = Tilt::BuilderTemplate.new { "xml.em('Hey ' + @name + '!')" }
29
- scope = Object.new
30
- scope.instance_variable_set :@name, 'Joe'
31
- assert_equal "<em>Hey Joe!</em>\n", template.render(scope)
32
- end
33
-
34
- test "passing a block for yield" do
35
- template = Tilt::BuilderTemplate.new { "xml.em('Hey ' + yield + '!')" }
36
- 3.times { assert_equal "<em>Hey Joe!</em>\n", template.render { 'Joe' }}
37
- end
38
-
39
- test "block style templates" do
40
- template =
41
- Tilt::BuilderTemplate.new do |t|
42
- lambda { |xml| xml.em('Hey Joe!') }
43
- end
44
- assert_equal "<em>Hey Joe!</em>\n", template.render
45
- end
46
-
47
- test "allows nesting raw XML" do
48
- subtemplate = Tilt::BuilderTemplate.new { "xml.em 'Hello World!'" }
49
- template = Tilt::BuilderTemplate.new { "xml.strong { xml << yield }" }
50
- 3.times do
51
- options = { :xml => Builder::XmlMarkup.new }
52
- assert_equal "<strong>\n<em>Hello World!</em>\n</strong>\n",
53
- template.render(options) { subtemplate.render(options) }
54
- end
55
- end
56
- end
57
- rescue LoadError
58
- warn "Tilt::BuilderTemplate (disabled)"
59
- end
@@ -1,32 +0,0 @@
1
- require 'contest'
2
- require 'tilt'
3
-
4
- class TiltCacheTest < Test::Unit::TestCase
5
- setup { @cache = Tilt::Cache.new }
6
-
7
- test "caching with single simple argument to #fetch" do
8
- template = nil
9
- result = @cache.fetch('hello') { template = Tilt::StringTemplate.new {''} }
10
- assert_same template, result
11
- result = @cache.fetch('hello') { fail 'should be cached' }
12
- assert_same template, result
13
- end
14
-
15
- test "caching with multiple complex arguments to #fetch" do
16
- template = nil
17
- result = @cache.fetch('hello', {:foo => 'bar', :baz => 'bizzle'}) { template = Tilt::StringTemplate.new {''} }
18
- assert_same template, result
19
- result = @cache.fetch('hello', {:foo => 'bar', :baz => 'bizzle'}) { fail 'should be cached' }
20
- assert_same template, result
21
- end
22
-
23
- test "clearing the cache with #clear" do
24
- template, other = nil
25
- result = @cache.fetch('hello') { template = Tilt::StringTemplate.new {''} }
26
- assert_same template, result
27
-
28
- @cache.clear
29
- result = @cache.fetch('hello') { other = Tilt::StringTemplate.new {''} }
30
- assert_same other, result
31
- end
32
- end
@@ -1,114 +0,0 @@
1
- require 'contest'
2
- require 'tilt'
3
-
4
- begin
5
- require 'coffee_script'
6
-
7
- class CoffeeScriptTemplateTest < Test::Unit::TestCase
8
-
9
- unless method_defined?(:assert_not_match)
10
- # assert_not_match is missing on 1.8.7, which uses assert_no_match
11
- def assert_not_match(a, b)
12
- unless a.kind_of?(Regexp)
13
- a = Regexp.new(Regexp.escape(a))
14
- end
15
- assert_no_match(a,b)
16
- end
17
- end
18
-
19
- test "is registered for '.coffee' files" do
20
- assert_equal Tilt::CoffeeScriptTemplate, Tilt['test.coffee']
21
- end
22
-
23
- test "bare is disabled by default" do
24
- assert_equal false, Tilt::CoffeeScriptTemplate.default_bare
25
- end
26
-
27
- test "compiles and evaluates the template on #render" do
28
- template = Tilt::CoffeeScriptTemplate.new { |t| "puts 'Hello, World!'\n" }
29
- assert_match "puts('Hello, World!');", template.render
30
- end
31
-
32
- test "can be rendered more than once" do
33
- template = Tilt::CoffeeScriptTemplate.new { |t| "puts 'Hello, World!'\n" }
34
- 3.times { assert_match "puts('Hello, World!');", template.render }
35
- end
36
-
37
- test "disabling coffee-script wrapper" do
38
- str = 'name = "Josh"; puts "Hello #{name}"'
39
-
40
- template = Tilt::CoffeeScriptTemplate.new { str }
41
- assert_match "(function() {", template.render
42
- assert_match "puts(\"Hello \" + name);\n", template.render
43
-
44
- template = Tilt::CoffeeScriptTemplate.new(:bare => true) { str }
45
- assert_not_match "(function() {", template.render
46
- assert_equal "var name;\n\nname = \"Josh\";\n\nputs(\"Hello \" + name);\n", template.render
47
-
48
- template2 = Tilt::CoffeeScriptTemplate.new(:no_wrap => true) { str}
49
- assert_not_match "(function() {", template.render
50
- assert_equal "var name;\n\nname = \"Josh\";\n\nputs(\"Hello \" + name);\n", template.render
51
- end
52
-
53
- context "wrapper globally enabled" do
54
- setup do
55
- @bare = Tilt::CoffeeScriptTemplate.default_bare
56
- Tilt::CoffeeScriptTemplate.default_bare = false
57
- end
58
-
59
- teardown do
60
- Tilt::CoffeeScriptTemplate.default_bare = @bare
61
- end
62
-
63
- test "no options" do
64
- template = Tilt::CoffeeScriptTemplate.new { |t| 'name = "Josh"; puts "Hello, #{name}"' }
65
- assert_match "puts(\"Hello, \" + name);", template.render
66
- assert_match "(function() {", template.render
67
- end
68
-
69
- test "overridden by :bare" do
70
- template = Tilt::CoffeeScriptTemplate.new(:bare => true) { |t| 'name = "Josh"; puts "Hello, #{name}"' }
71
- assert_match "puts(\"Hello, \" + name);", template.render
72
- assert_not_match "(function() {", template.render
73
- end
74
-
75
- test "overridden by :no_wrap" do
76
- template = Tilt::CoffeeScriptTemplate.new(:no_wrap => true) { |t| 'name = "Josh"; puts "Hello, #{name}"' }
77
- assert_match "puts(\"Hello, \" + name);", template.render
78
- assert_not_match "(function() {", template.render
79
- end
80
- end
81
-
82
- context "wrapper globally disabled" do
83
- setup do
84
- @bare = Tilt::CoffeeScriptTemplate.default_bare
85
- Tilt::CoffeeScriptTemplate.default_bare = true
86
- end
87
-
88
- teardown do
89
- Tilt::CoffeeScriptTemplate.default_bare = @bare
90
- end
91
-
92
- test "no options" do
93
- template = Tilt::CoffeeScriptTemplate.new { |t| 'name = "Josh"; puts "Hello, #{name}"' }
94
- assert_match "puts(\"Hello, \" + name);", template.render
95
- assert_not_match "(function() {", template.render
96
- end
97
-
98
- test "overridden by :bare" do
99
- template = Tilt::CoffeeScriptTemplate.new(:bare => false) { |t| 'name = "Josh"; puts "Hello, #{name}"' }
100
- assert_match "puts(\"Hello, \" + name);", template.render
101
- assert_match "(function() {", template.render
102
- end
103
-
104
- test "overridden by :no_wrap" do
105
- template = Tilt::CoffeeScriptTemplate.new(:no_wrap => false) { |t| 'name = "Josh"; puts "Hello, #{name}"' }
106
- assert_match "puts(\"Hello, \" + name);", template.render
107
- assert_match "(function() {", template.render
108
- end
109
- end
110
- end
111
-
112
- rescue LoadError => boom
113
- warn "Tilt::CoffeeScriptTemplate (disabled)"
114
- end