tilt 2.0.2 → 2.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 647ea82bd6b21c9160337188c95afa692d468048
4
- data.tar.gz: fe4a38e1124fc88439048033b73ac69c9e26dabc
3
+ metadata.gz: a8eb5c664834658aea7cbcd313c91143dc6cbcf5
4
+ data.tar.gz: 445aed9e2cdf45b3ac7de7255df71730d82a6ee1
5
5
  SHA512:
6
- metadata.gz: 7eeb600f8917fef64a15ae0e595afc9e6a99558be4118ca7b96ce81701159061835fe0103d0320a0f82419b553d215fc1961543abb59789273be9514e43b5ae6
7
- data.tar.gz: a75cb1d660582518e2512a01da3b9c3ed917b48cea59680752570be482f6db17e79d1d6e2b2225e25c0f96977c5c37acab2e11eda8941883bebd5d20192c67f2
6
+ metadata.gz: e5fb808cca6eb518ec297aee474872872ffc38da481a643787c72eb51227f75fea5aa067f6766921ff3cdc16bbdf9ad098ca552da51134b7ee591a330f8318cd
7
+ data.tar.gz: b61b68cdf6c1fac47c7ef814afe4cc2c4445d345522d94248c54010237a6e439c0c835f64f40fd9412a5b65b9c90f660662c45acba48a868e060aaf74840d852
data/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ ## 2.0.3 (2016-05-12)
2
+
3
+ * Add Pandoc support (#276, jmuheim)
4
+ * Add CommonMark support (#282, raphink)
5
+ * Add TypeScript support (#278, nghitran)
6
+ * Work with frozen string literal (#274, jeremyevans)
7
+ * Add MIME type for Babel (#273, SaitoWu)
8
+
1
9
  ## 2.0.2 (2016-01-06)
2
10
 
3
11
  * Pass options to Redcarpet (#250, hughbien)
data/Gemfile CHANGED
@@ -21,6 +21,7 @@ group :primary do
21
21
  gem 'less'
22
22
  gem 'coffee-script'
23
23
  gem 'babel-transpiler'
24
+ gem 'typescript-node'
24
25
  end
25
26
  end
26
27
 
@@ -36,6 +37,7 @@ group :secondary do
36
37
  gem 'asciidoctor', '>= 0.1.0'
37
38
  gem 'liquid'
38
39
  gem 'maruku'
40
+ gem 'pandoc-ruby'
39
41
 
40
42
  if RUBY_VERSION > '1.9.3'
41
43
  gem 'prawn', '>= 2.0.0'
@@ -50,6 +52,7 @@ group :secondary do
50
52
  gem 'redcarpet' if RUBY_VERSION > '1.8.7'
51
53
  gem 'rdiscount', '>= 2.1.6' if RUBY_VERSION != '1.9.2'
52
54
  gem 'RedCloth'
55
+ gem 'commonmarker' if RUBY_VERSION > '1.9.3'
53
56
  end
54
57
 
55
58
  platform :mri do
data/README.md CHANGED
@@ -40,7 +40,9 @@ Support for these template engines is included with the package:
40
40
  | Redcarpet | .markdown, .mkd, .md | redcarpet | Community |
41
41
  | BlueCloth | .markdown, .mkd, .md | bluecloth | Community |
42
42
  | Kramdown | .markdown, .mkd, .md | kramdown | Community |
43
+ | Pandoc | .markdown, .mkd, .md | pandoc | Community |
43
44
  | Maruku | .markdown, .mkd, .md | maruku | Community |
45
+ | CommonMarker | .markdown, .mkd, .md | commonmarker | Community |
44
46
  | RedCloth | .textile | redcloth | Community |
45
47
  | RDoc | .rdoc | rdoc | Tilt team |
46
48
  | Radius | .radius | radius | Community |
data/docs/TEMPLATES.md CHANGED
@@ -44,6 +44,7 @@ implementations (depending on which are available on your system):
44
44
  * Redcarpet - `Tilt::RedcarpetTemplate`
45
45
  * BlueCloth - `Tilt::BlueClothTemplate`
46
46
  * Kramdown - `Tilt::KramdownTemplate`
47
+ * Pandoc - `Tilt::PandocTemplate`
47
48
  * Maruku - `Tilt::MarukuTemplate`
48
49
 
49
50
  <a name='erb'></a>
@@ -432,6 +433,7 @@ Markdown formatted texts are converted to HTML with one of these libraries:
432
433
  * Redcarpet - `Tilt::RedcarpetTemplate`
433
434
  * BlueCloth - `Tilt::BlueClothTemplate`
434
435
  * Kramdown - `Tilt::KramdownTemplate`
436
+ * Pandoc - `Tilt::PandocTemplate`
435
437
  * Maruku - `Tilt::MarukuTemplate`
436
438
 
437
439
  Tilt will use fallback mode (as documented in the README) for determining which
@@ -458,7 +460,7 @@ To wrap a Markdown formatted document with a layout:
458
460
  ### Options
459
461
 
460
462
  Every implementation of Markdown *should* support these options, but there are
461
- some known problems with the Kramdown and Maruku engines.
463
+ some known problems with the Kramdown, Maruku and Pandoc engines.
462
464
 
463
465
  #### `:smartypants => true|false`
464
466
 
@@ -474,7 +476,7 @@ Maruku ignores this option and always applies smart quotes (and nothing else).
474
476
  Set `true` disallow raw HTML in Markdown contents. HTML is converted to
475
477
  literal text by escaping `<` characters.
476
478
 
477
- Kramdown and Maruku doesn't support this option.
479
+ Kramdown, Maruku and Pandoc don't support this option.
478
480
 
479
481
  ### See also
480
482
 
@@ -521,4 +523,3 @@ using this template engine within a threaded environment.
521
523
  [rdiscount]: http://github.com/rtomayko/rdiscount/ "RDiscount"
522
524
  [smartypants]: http://daringfireball.net/projects/smartypants/ "Smarty Pants"
523
525
  [markdown]: http://en.wikipedia.org/wiki/Markdown "Markdown"
524
-
data/lib/tilt.rb CHANGED
@@ -4,7 +4,7 @@ require 'tilt/template'
4
4
  # Namespace for Tilt. This module is not intended to be included anywhere.
5
5
  module Tilt
6
6
  # Current version.
7
- VERSION = '2.0.2'
7
+ VERSION = '2.0.3'
8
8
 
9
9
  @default_mapping = Mapping.new
10
10
 
@@ -119,11 +119,13 @@ module Tilt
119
119
  register_lazy :ErubisTemplate, 'tilt/erubis', 'erb', 'rhtml', 'erubis'
120
120
 
121
121
  # Markdown
122
- register_lazy :BlueClothTemplate, 'tilt/bluecloth', 'markdown', 'mkd', 'md'
123
- register_lazy :MarukuTemplate, 'tilt/maruku', 'markdown', 'mkd', 'md'
124
- register_lazy :KramdownTemplate, 'tilt/kramdown', 'markdown', 'mkd', 'md'
125
- register_lazy :RDiscountTemplate, 'tilt/rdiscount', 'markdown', 'mkd', 'md'
126
- register_lazy :RedcarpetTemplate, 'tilt/redcarpet', 'markdown', 'mkd', 'md'
122
+ register_lazy :BlueClothTemplate, 'tilt/bluecloth', 'markdown', 'mkd', 'md'
123
+ register_lazy :MarukuTemplate, 'tilt/maruku', 'markdown', 'mkd', 'md'
124
+ register_lazy :KramdownTemplate, 'tilt/kramdown', 'markdown', 'mkd', 'md'
125
+ register_lazy :RDiscountTemplate, 'tilt/rdiscount', 'markdown', 'mkd', 'md'
126
+ register_lazy :RedcarpetTemplate, 'tilt/redcarpet', 'markdown', 'mkd', 'md'
127
+ register_lazy :CommonMarkerTemplate, 'tilt/commonmarker', 'markdown', 'mkd', 'md'
128
+ register_lazy :PandocTemplate, 'tilt/pandoc', 'markdown', 'mkd', 'md'
127
129
 
128
130
  # Rest (sorted by name)
129
131
  register_lazy :AsciidoctorTemplate, 'tilt/asciidoc', 'ad', 'adoc', 'asciidoc'
@@ -147,6 +149,7 @@ module Tilt
147
149
  register_lazy :SassTemplate, 'tilt/sass', 'sass'
148
150
  register_lazy :ScssTemplate, 'tilt/sass', 'scss'
149
151
  register_lazy :StringTemplate, 'tilt/string', 'str'
152
+ register_lazy :TypeScriptTemplate, 'tilt/typescript', 'ts'
150
153
  register_lazy :WikiClothTemplate, 'tilt/wikicloth', 'wiki', 'mediawiki', 'mw'
151
154
  register_lazy :YajlTemplate, 'tilt/yajl', 'yajl'
152
155
 
data/lib/tilt/babel.rb CHANGED
@@ -3,6 +3,8 @@ require 'babel/transpiler'
3
3
 
4
4
  module Tilt
5
5
  class BabelTemplate < Template
6
+ self.default_mime_type = 'application/javascript'
7
+
6
8
  def prepare
7
9
  options[:filename] ||= file
8
10
  end
@@ -12,4 +14,3 @@ module Tilt
12
14
  end
13
15
  end
14
16
  end
15
-
data/lib/tilt/builder.rb CHANGED
@@ -7,20 +7,17 @@ module Tilt
7
7
  class BuilderTemplate < Template
8
8
  self.default_mime_type = 'text/xml'
9
9
 
10
- def prepare; end
10
+ def prepare
11
+ options[:indent] ||= 2
12
+ end
11
13
 
12
14
  def evaluate(scope, locals, &block)
15
+ xml = (locals[:xml] ||= ::Builder::XmlMarkup.new(options))
13
16
  return super(scope, locals, &block) if data.respond_to?(:to_str)
14
- xml = ::Builder::XmlMarkup.new(:indent => 2)
15
17
  data.call(xml)
16
18
  xml.target!
17
19
  end
18
20
 
19
- def precompiled_preamble(locals)
20
- return super if locals.include? :xml
21
- "xml = ::Builder::XmlMarkup.new(:indent => 2)\n#{super}"
22
- end
23
-
24
21
  def precompiled_postamble(locals)
25
22
  "xml.target!"
26
23
  end
@@ -0,0 +1,21 @@
1
+ require 'tilt/template'
2
+ require 'commonmarker'
3
+
4
+ module Tilt
5
+ class CommonMarkerTemplate < Template
6
+ self.default_mime_type = 'text/html'
7
+
8
+ def prepare
9
+ @engine = nil
10
+ @output = nil
11
+ end
12
+
13
+ def evaluate(scope, locals, &block)
14
+ CommonMarker.render_html(data, :default)
15
+ end
16
+
17
+ def allows_script?
18
+ false
19
+ end
20
+ end
21
+ end
data/lib/tilt/dummy.rb ADDED
@@ -0,0 +1,3 @@
1
+ # Used for detecting autoloading bug in JRuby
2
+ class Tilt::Dummy; end
3
+
data/lib/tilt/erubis.rb CHANGED
@@ -24,7 +24,7 @@ module Tilt
24
24
  end
25
25
 
26
26
  def precompiled_preamble(locals)
27
- [super, "#{@outvar} = _buf = ''"].join("\n")
27
+ [super, "#{@outvar} = _buf = String.new"].join("\n")
28
28
  end
29
29
 
30
30
  def precompiled_postamble(locals)
data/lib/tilt/mapping.rb CHANGED
@@ -60,7 +60,7 @@ module Tilt
60
60
  @lazy_map = other.lazy_map.dup
61
61
  end
62
62
 
63
- # Registrers a lazy template implementation by file extension. You
63
+ # Registers a lazy template implementation by file extension. You
64
64
  # can have multiple lazy template implementations defined on the
65
65
  # same file extension, in which case the template implementation
66
66
  # defined *last* will be attempted loaded *first*.
@@ -254,10 +254,35 @@ module Tilt
254
254
  raise first_failure if first_failure
255
255
  end
256
256
 
257
+ # This is due to a bug in JRuby (see GH issue jruby/jruby#3585)
258
+ Tilt.autoload :Dummy, "tilt/dummy"
259
+ require "tilt/dummy"
260
+ AUTOLOAD_IS_BROKEN = Tilt.autoload?(:Dummy)
261
+
262
+ # The proper behavior (in MRI) for autoload? is to
263
+ # return `false` when the constant/file has been
264
+ # explicitly required.
265
+ #
266
+ # However, in JRuby it returns `true` even after it's
267
+ # been required. In that case it turns out that `defined?`
268
+ # returns `"constant"` if it exists and `nil` when it doesn't.
269
+ # This is actually a second bug: `defined?` should resolve
270
+ # autoload (aka. actually try to require the file).
271
+ #
272
+ # We use the second bug in order to resolve the first bug.
273
+
257
274
  def constant_defined?(name)
258
275
  name.split('::').inject(Object) do |scope, n|
259
- return false if scope.autoload?(n) # skip autload
260
- return false unless scope.const_defined?(n)
276
+ if scope.autoload?(n)
277
+ if !AUTOLOAD_IS_BROKEN
278
+ return false
279
+ end
280
+
281
+ if eval("!defined?(scope::#{n})")
282
+ return false
283
+ end
284
+ end
285
+ return false if !scope.const_defined?(n)
261
286
  scope.const_get(n)
262
287
  end
263
288
  end
@@ -0,0 +1,53 @@
1
+ require 'tilt/template'
2
+ require 'pandoc-ruby'
3
+
4
+ module Tilt
5
+ # Pandoc markdown implementation. See:
6
+ # http://pandoc.org/
7
+ class PandocTemplate < Template
8
+ def prepare
9
+ @output = PandocRuby.convert(data, options_hash, *options_array).strip
10
+ end
11
+
12
+ def tilt_to_pandoc_mapping
13
+ { :smartypants => [:smart, true],
14
+ :escape_html => [:f, 'markdown-raw_html']
15
+ }
16
+ end
17
+
18
+ def pandoc_optimised_options
19
+ options.inject({}) do |hash, option|
20
+ if tilt_to_pandoc_mapping.has_key?(option[0]) && option[1] === true
21
+ hash[tilt_to_pandoc_mapping[option[0]][0]] = tilt_to_pandoc_mapping[option[0]][1]
22
+ else
23
+ hash[option[0]] = option[1]
24
+ end
25
+
26
+ hash
27
+ end.merge({:to => :html})
28
+ end
29
+
30
+ def options_array
31
+ pandoc_optimised_options.map do |option|
32
+ option[0] if option[1] === true
33
+ end.compact
34
+ end
35
+
36
+ def options_hash
37
+ pandoc_optimised_options.inject({}) do |hash, option|
38
+ # next if option[1] === true
39
+ # next if option[1] === false
40
+ hash[option[0]] = option[1] unless option[1] === true or option[1] === false
41
+ hash
42
+ end
43
+ end
44
+
45
+ def evaluate(scope, locals, &block)
46
+ @output
47
+ end
48
+
49
+ def allows_script?
50
+ false
51
+ end
52
+ end
53
+ end
data/lib/tilt/string.rb CHANGED
@@ -6,7 +6,7 @@ module Tilt
6
6
  class StringTemplate < Template
7
7
  def prepare
8
8
  hash = "TILT#{data.hash.abs}"
9
- @code = "<<#{hash}.chomp\n#{data}\n#{hash}"
9
+ @code = String.new("<<#{hash}.chomp\n#{data}\n#{hash}")
10
10
  end
11
11
 
12
12
  def precompiled_template(locals)
data/lib/tilt/template.rb CHANGED
@@ -79,7 +79,10 @@ module Tilt
79
79
  @data = @reader.call(self)
80
80
 
81
81
  if @data.respond_to?(:force_encoding)
82
- @data.force_encoding(default_encoding) if default_encoding
82
+ if default_encoding
83
+ @data = @data.dup if @data.frozen?
84
+ @data.force_encoding(default_encoding)
85
+ end
83
86
 
84
87
  if !@data.valid_encoding?
85
88
  raise Encoding::InvalidByteSequenceError, "#{eval_file} is not valid #{@data.encoding}"
@@ -177,7 +180,7 @@ module Tilt
177
180
  preamble = precompiled_preamble(local_keys)
178
181
  template = precompiled_template(local_keys)
179
182
  postamble = precompiled_postamble(local_keys)
180
- source = ''
183
+ source = String.new
181
184
 
182
185
  # Ensure that our generated source code has the same encoding as the
183
186
  # the source code generated by the template engine.
@@ -246,7 +249,7 @@ module Tilt
246
249
  local_code = local_extraction(local_keys)
247
250
 
248
251
  method_name = "__tilt_#{Thread.current.object_id.abs}"
249
- method_source = ""
252
+ method_source = String.new
250
253
 
251
254
  if method_source.respond_to?(:force_encoding)
252
255
  method_source.force_encoding(source.encoding)
@@ -0,0 +1,26 @@
1
+ require 'tilt/template'
2
+ require 'typescript-node'
3
+
4
+ module Tilt
5
+ class TypeScriptTemplate < Template
6
+ self.default_mime_type = 'application/javascript'
7
+
8
+ def prepare
9
+ @option_args = []
10
+
11
+ options.each do |key, value|
12
+ next unless value
13
+
14
+ @option_args << "--#{key}"
15
+
16
+ if value != true
17
+ @option_args << value.to_s
18
+ end
19
+ end
20
+ end
21
+
22
+ def evaluate(scope, locals, &block)
23
+ @output ||= TypeScript::Node.compile(data, *@option_args)
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,2 @@
1
+ class MyTemplate
2
+ end
@@ -44,6 +44,11 @@ begin
44
44
  assert_equal "<em>Hey Joe!</em>\n", template.render
45
45
  end
46
46
 
47
+ test "options can be overridden" do
48
+ template = Tilt::BuilderTemplate.new(:indent => 0) { "xml.div { xml.em('Hey') }" }
49
+ assert_equal "<div><em>Hey</em></div>", template.render
50
+ end
51
+
47
52
  test "allows nesting raw XML" do
48
53
  subtemplate = Tilt::BuilderTemplate.new { "xml.em 'Hello World!'" }
49
54
  template = Tilt::BuilderTemplate.new { "xml.strong { xml << yield }" }
@@ -0,0 +1,20 @@
1
+ require 'test_helper'
2
+ require 'tilt'
3
+
4
+ begin
5
+ require 'tilt/commonmarker'
6
+
7
+ class CommonMarkerTemplateTest < Minitest::Test
8
+ test "preparing and evaluating templates on #render" do
9
+ template = Tilt::CommonMarkerTemplate.new { |t| "# Hello World!" }
10
+ assert_equal "<h1>Hello World!</h1>\n", template.render
11
+ end
12
+
13
+ test "can be rendered more than once" do
14
+ template = Tilt::CommonMarkerTemplate.new { |t| "# Hello World!" }
15
+ 3.times { assert_equal "<h1>Hello World!</h1>\n", template.render }
16
+ end
17
+ end
18
+ rescue LoadError => boom
19
+ warn "Tilt::CommonMarkerTemplate (disabled)"
20
+ end
@@ -57,10 +57,12 @@ module Tilt
57
57
  context "lazy with one template class" do
58
58
  setup do
59
59
  @mapping.register_lazy('MyTemplate', 'my_template', 'mt')
60
+ @loaded_before = $LOADED_FEATURES.dup
60
61
  end
61
62
 
62
63
  teardown do
63
64
  Object.send :remove_const, :MyTemplate if defined? ::MyTemplate
65
+ $LOADED_FEATURES.replace(@loaded_before)
64
66
  end
65
67
 
66
68
  test "registered?" do
@@ -97,6 +99,21 @@ module Tilt
97
99
  end
98
100
  end
99
101
 
102
+ test "doesn't require when the template class is autoloaded, and then defined" do
103
+ Object.autoload :MyTemplate, 'mytemplate'
104
+ did_load = require 'mytemplate'
105
+ assert did_load, "mytemplate wasn't freshly required"
106
+
107
+ req = proc do |file|
108
+ flunk "#require shouldn't be called"
109
+ end
110
+
111
+ @mapping.stub :require, req do
112
+ klass = @mapping['hello.mt']
113
+ assert_equal ::MyTemplate, klass
114
+ end
115
+ end
116
+
100
117
  test "raises NameError when the class name is defined" do
101
118
  req = proc do |file|
102
119
  # do nothing
@@ -174,4 +174,16 @@ rescue LoadError
174
174
  warn "Markdown tests need Nokogiri"
175
175
  end
176
176
 
177
+ begin
178
+ require 'tilt/pandoc'
179
+
180
+ class MarkdownPandocTest < Minitest::Test
181
+ include MarkdownTests
182
+ template Tilt::PandocTemplate
177
183
 
184
+ # Doesn't support escaping
185
+ undef test_escape_html_true
186
+ end
187
+ rescue LoadError => boom
188
+ # It should already be warned in the main tests
189
+ end
@@ -0,0 +1,56 @@
1
+ # encoding: utf-8
2
+
3
+ require 'test_helper'
4
+ require 'tilt'
5
+
6
+ begin
7
+ require 'tilt/pandoc'
8
+
9
+ class PandocTemplateTest < Minitest::Test
10
+ test "preparing and evaluating templates on #render" do
11
+ template = Tilt::PandocTemplate.new { |t| "# Hello World!" }
12
+ assert_equal "<h1 id=\"hello-world\">Hello World!</h1>", template.render.strip
13
+ end
14
+
15
+ test "can be rendered more than once" do
16
+ template = Tilt::PandocTemplate.new { |t| "# Hello World!" }
17
+ 3.times { assert_equal "<h1 id=\"hello-world\">Hello World!</h1>", template.render.strip }
18
+ end
19
+
20
+ test "smartypants when :smartypants is set" do
21
+ template = Tilt::PandocTemplate.new(:smartypants => true) { |t| "OKAY -- 'Smarty Pants'" }
22
+ assert_equal "<p>OKAY – ‘Smarty Pants’</p>", template.render
23
+ end
24
+
25
+ test "stripping HTML when :escape_html is set" do
26
+ template = Tilt::PandocTemplate.new(:escape_html => true) { |t| "HELLO <blink>WORLD</blink>" }
27
+ assert_equal "<p>HELLO &lt;blink&gt;WORLD&lt;/blink&gt;</p>", template.render
28
+ end
29
+
30
+ # Pandoc has tons of additional markdown features (see http://pandoc.org/README.html#pandocs-markdown).
31
+ # The test for footnotes should be seen as a general representation for all of them.
32
+ test "generates footnotes" do
33
+ template = Tilt::PandocTemplate.new { |t| "Here is an inline note.^[Inlines notes are cool!]" }
34
+ assert_equal "<p>Here is an inline note.<a href=\"#fn1\" class=\"footnoteRef\" id=\"fnref1\"><sup>1</sup></a></p>\n<div class=\"footnotes\">\n<hr />\n<ol>\n<li id=\"fn1\"><p>Inlines notes are cool!<a href=\"#fnref1\">↩</a></p></li>\n</ol>\n</div>", template.render.strip
35
+ end
36
+
37
+ describe "passing in Pandoc options" do
38
+ test "accepts arguments with values (e.g. :id_prefix => 'xyz')" do
39
+ # Table of contents isn't on by default
40
+ template = Tilt::PandocTemplate.new { |t| "# This is a heading" }
41
+ assert_equal "<h1 id=\"this-is-a-heading\">This is a heading</h1>", template.render
42
+
43
+ # But it can be activated
44
+ template = Tilt::PandocTemplate.new(:id_prefix => 'test-') { |t| "# This is a heading" }
45
+ assert_equal "<h1 id=\"test-this-is-a-heading\">This is a heading</h1>", template.render
46
+ end
47
+
48
+ test "requires arguments without value (e.g. --standalone) to be passed as hash keys (:standalone => true)" do
49
+ template = Tilt::PandocTemplate.new(:standalone => true) { |t| "# This is a heading" }
50
+ assert_match /^<!DOCTYPE html.*<h1 id="this-is-a-heading">This is a heading<\/h1>.*<\/html>$/m, template.render
51
+ end
52
+ end
53
+ end
54
+ rescue LoadError => boom
55
+ warn "Tilt::PandocTemplate (disabled)"
56
+ end
@@ -0,0 +1,34 @@
1
+ require 'test_helper'
2
+ require 'tilt'
3
+
4
+ begin
5
+ require 'tilt/typescript'
6
+
7
+ class TypeScriptTemplateTest < Minitest::Test
8
+ def setup
9
+ @ts = "var x:number = 5"
10
+ @js = /var x = 5;\s*/
11
+ end
12
+
13
+ test "is registered for '.ts' files" do
14
+ assert_equal Tilt::TypeScriptTemplate, Tilt['test.ts']
15
+ end
16
+
17
+ test "compiles and evaluates the template on #render" do
18
+ template = Tilt::TypeScriptTemplate.new { @ts }
19
+ assert_match @js, template.render
20
+ end
21
+
22
+ test "supports source map" do
23
+ template = Tilt::TypeScriptTemplate.new(inlineSourceMap: true) { @ts }
24
+ assert_match /sourceMappingURL/, template.render
25
+ end
26
+
27
+ test "can be rendered more than once" do
28
+ template = Tilt::TypeScriptTemplate.new { @ts }
29
+ 3.times { assert_match @js, template.render }
30
+ end
31
+ end
32
+ rescue LoadError => boom
33
+ warn "Tilt::TypeScriptTemplate (disabled)"
34
+ end
data/tilt.gemspec CHANGED
@@ -3,8 +3,8 @@ Gem::Specification.new do |s|
3
3
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
4
4
 
5
5
  s.name = 'tilt'
6
- s.version = '2.0.2'
7
- s.date = '2016-01-05'
6
+ s.version = '2.0.3'
7
+ s.date = '2016-05-12'
8
8
 
9
9
  s.description = "Generic interface to multiple Ruby template engines"
10
10
  s.summary = s.description
@@ -30,8 +30,10 @@ Gem::Specification.new do |s|
30
30
  lib/tilt/bluecloth.rb
31
31
  lib/tilt/builder.rb
32
32
  lib/tilt/coffee.rb
33
+ lib/tilt/commonmarker.rb
33
34
  lib/tilt/creole.rb
34
35
  lib/tilt/csv.rb
36
+ lib/tilt/dummy.rb
35
37
  lib/tilt/erb.rb
36
38
  lib/tilt/erubis.rb
37
39
  lib/tilt/etanni.rb
@@ -43,6 +45,7 @@ Gem::Specification.new do |s|
43
45
  lib/tilt/markaby.rb
44
46
  lib/tilt/maruku.rb
45
47
  lib/tilt/nokogiri.rb
48
+ lib/tilt/pandoc.rb
46
49
  lib/tilt/plain.rb
47
50
  lib/tilt/prawn.rb
48
51
  lib/tilt/radius.rb
@@ -53,6 +56,7 @@ Gem::Specification.new do |s|
53
56
  lib/tilt/sass.rb
54
57
  lib/tilt/string.rb
55
58
  lib/tilt/template.rb
59
+ lib/tilt/typescript.rb
56
60
  lib/tilt/wikicloth.rb
57
61
  lib/tilt/yajl.rb
58
62
  man/index.txt
@@ -63,6 +67,7 @@ Gem::Specification.new do |s|
63
67
  test/markaby/render_twice.mab
64
68
  test/markaby/scope.mab
65
69
  test/markaby/yielding.mab
70
+ test/mytemplate.rb
66
71
  test/test_helper.rb
67
72
  test/tilt_asciidoctor_test.rb
68
73
  test/tilt_babeltemplate.rb
@@ -70,6 +75,7 @@ Gem::Specification.new do |s|
70
75
  test/tilt_buildertemplate_test.rb
71
76
  test/tilt_cache_test.rb
72
77
  test/tilt_coffeescripttemplate_test.rb
78
+ test/tilt_commonmarkertemplate_test.rb
73
79
  test/tilt_compilesite_test.rb
74
80
  test/tilt_creoletemplate_test.rb
75
81
  test/tilt_csv_test.rb
@@ -87,6 +93,7 @@ Gem::Specification.new do |s|
87
93
  test/tilt_marukutemplate_test.rb
88
94
  test/tilt_metadata_test.rb
89
95
  test/tilt_nokogiritemplate_test.rb
96
+ test/tilt_pandoctemplate_test.rb
90
97
  test/tilt_prawntemplate.prawn
91
98
  test/tilt_prawntemplate_test.rb
92
99
  test/tilt_radiustemplate_test.rb
@@ -98,6 +105,7 @@ Gem::Specification.new do |s|
98
105
  test/tilt_stringtemplate_test.rb
99
106
  test/tilt_template_test.rb
100
107
  test/tilt_test.rb
108
+ test/tilt_typescript_test.rb
101
109
  test/tilt_wikiclothtemplate_test.rb
102
110
  test/tilt_yajltemplate_test.rb
103
111
  tilt.gemspec
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tilt
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.2
4
+ version: 2.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Tomayko
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-05 00:00:00.000000000 Z
11
+ date: 2016-05-12 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Generic interface to multiple Ruby template engines
14
14
  email: r@tomayko.com
@@ -32,8 +32,10 @@ files:
32
32
  - lib/tilt/bluecloth.rb
33
33
  - lib/tilt/builder.rb
34
34
  - lib/tilt/coffee.rb
35
+ - lib/tilt/commonmarker.rb
35
36
  - lib/tilt/creole.rb
36
37
  - lib/tilt/csv.rb
38
+ - lib/tilt/dummy.rb
37
39
  - lib/tilt/erb.rb
38
40
  - lib/tilt/erubis.rb
39
41
  - lib/tilt/etanni.rb
@@ -45,6 +47,7 @@ files:
45
47
  - lib/tilt/markaby.rb
46
48
  - lib/tilt/maruku.rb
47
49
  - lib/tilt/nokogiri.rb
50
+ - lib/tilt/pandoc.rb
48
51
  - lib/tilt/plain.rb
49
52
  - lib/tilt/prawn.rb
50
53
  - lib/tilt/radius.rb
@@ -55,6 +58,7 @@ files:
55
58
  - lib/tilt/sass.rb
56
59
  - lib/tilt/string.rb
57
60
  - lib/tilt/template.rb
61
+ - lib/tilt/typescript.rb
58
62
  - lib/tilt/wikicloth.rb
59
63
  - lib/tilt/yajl.rb
60
64
  - man/index.txt
@@ -65,6 +69,7 @@ files:
65
69
  - test/markaby/render_twice.mab
66
70
  - test/markaby/scope.mab
67
71
  - test/markaby/yielding.mab
72
+ - test/mytemplate.rb
68
73
  - test/test_helper.rb
69
74
  - test/tilt_asciidoctor_test.rb
70
75
  - test/tilt_babeltemplate.rb
@@ -72,6 +77,7 @@ files:
72
77
  - test/tilt_buildertemplate_test.rb
73
78
  - test/tilt_cache_test.rb
74
79
  - test/tilt_coffeescripttemplate_test.rb
80
+ - test/tilt_commonmarkertemplate_test.rb
75
81
  - test/tilt_compilesite_test.rb
76
82
  - test/tilt_creoletemplate_test.rb
77
83
  - test/tilt_csv_test.rb
@@ -89,6 +95,7 @@ files:
89
95
  - test/tilt_marukutemplate_test.rb
90
96
  - test/tilt_metadata_test.rb
91
97
  - test/tilt_nokogiritemplate_test.rb
98
+ - test/tilt_pandoctemplate_test.rb
92
99
  - test/tilt_prawntemplate.prawn
93
100
  - test/tilt_prawntemplate_test.rb
94
101
  - test/tilt_radiustemplate_test.rb
@@ -100,6 +107,7 @@ files:
100
107
  - test/tilt_stringtemplate_test.rb
101
108
  - test/tilt_template_test.rb
102
109
  - test/tilt_test.rb
110
+ - test/tilt_typescript_test.rb
103
111
  - test/tilt_wikiclothtemplate_test.rb
104
112
  - test/tilt_yajltemplate_test.rb
105
113
  - tilt.gemspec
@@ -139,6 +147,7 @@ test_files:
139
147
  - test/tilt_buildertemplate_test.rb
140
148
  - test/tilt_cache_test.rb
141
149
  - test/tilt_coffeescripttemplate_test.rb
150
+ - test/tilt_commonmarkertemplate_test.rb
142
151
  - test/tilt_compilesite_test.rb
143
152
  - test/tilt_creoletemplate_test.rb
144
153
  - test/tilt_csv_test.rb
@@ -155,6 +164,7 @@ test_files:
155
164
  - test/tilt_marukutemplate_test.rb
156
165
  - test/tilt_metadata_test.rb
157
166
  - test/tilt_nokogiritemplate_test.rb
167
+ - test/tilt_pandoctemplate_test.rb
158
168
  - test/tilt_prawntemplate_test.rb
159
169
  - test/tilt_radiustemplate_test.rb
160
170
  - test/tilt_rdiscounttemplate_test.rb
@@ -165,6 +175,7 @@ test_files:
165
175
  - test/tilt_stringtemplate_test.rb
166
176
  - test/tilt_template_test.rb
167
177
  - test/tilt_test.rb
178
+ - test/tilt_typescript_test.rb
168
179
  - test/tilt_wikiclothtemplate_test.rb
169
180
  - test/tilt_yajltemplate_test.rb
170
181
  has_rdoc: