tilt 1.3.3 → 1.3.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (52) hide show
  1. data/COPYING +1 -1
  2. data/Gemfile +31 -1
  3. data/HACKING +16 -0
  4. data/README.md +5 -2
  5. data/Rakefile +25 -1
  6. data/TEMPLATES.md +13 -13
  7. data/bin/tilt +8 -6
  8. data/lib/tilt.rb +15 -1
  9. data/lib/tilt/asciidoc.rb +34 -0
  10. data/lib/tilt/coffee.rb +4 -0
  11. data/lib/tilt/css.rb +10 -2
  12. data/lib/tilt/csv.rb +71 -0
  13. data/lib/tilt/erb.rb +1 -1
  14. data/lib/tilt/etanni.rb +27 -0
  15. data/lib/tilt/liquid.rb +4 -0
  16. data/lib/tilt/markdown.rb +35 -11
  17. data/lib/tilt/nokogiri.rb +4 -4
  18. data/lib/tilt/plain.rb +20 -0
  19. data/lib/tilt/radius.rb +4 -0
  20. data/lib/tilt/rdoc.rb +20 -5
  21. data/lib/tilt/template.rb +35 -74
  22. data/lib/tilt/textile.rb +5 -0
  23. data/lib/tilt/wiki.rb +8 -0
  24. data/test/tilt_asciidoctor_test.rb +44 -0
  25. data/test/tilt_blueclothtemplate_test.rb +1 -1
  26. data/test/tilt_coffeescripttemplate_test.rb +64 -11
  27. data/test/tilt_creoletemplate_test.rb +1 -1
  28. data/test/tilt_csv_test.rb +73 -0
  29. data/test/tilt_erbtemplate_test.rb +5 -0
  30. data/test/tilt_erubistemplate_test.rb +1 -1
  31. data/test/tilt_etannitemplate_test.rb +173 -0
  32. data/test/tilt_fallback_test.rb +6 -6
  33. data/test/tilt_hamltemplate_test.rb +1 -1
  34. data/test/tilt_kramdown_test.rb +1 -1
  35. data/test/tilt_lesstemplate_test.less +1 -0
  36. data/test/tilt_lesstemplate_test.rb +19 -3
  37. data/test/tilt_liquidtemplate_test.rb +1 -1
  38. data/test/tilt_markaby_test.rb +1 -1
  39. data/test/tilt_markdown_test.rb +15 -4
  40. data/test/tilt_marukutemplate_test.rb +1 -1
  41. data/test/tilt_radiustemplate_test.rb +1 -1
  42. data/test/tilt_rdiscounttemplate_test.rb +1 -1
  43. data/test/tilt_rdoctemplate_test.rb +10 -3
  44. data/test/tilt_redcarpettemplate_test.rb +15 -3
  45. data/test/tilt_redclothtemplate_test.rb +13 -1
  46. data/test/tilt_sasstemplate_test.rb +1 -1
  47. data/test/tilt_stringtemplate_test.rb +1 -1
  48. data/test/tilt_template_test.rb +13 -0
  49. data/test/tilt_wikiclothtemplate_test.rb +1 -1
  50. data/test/tilt_yajltemplate_test.rb +13 -4
  51. data/tilt.gemspec +27 -17
  52. metadata +203 -75
@@ -5,7 +5,7 @@ class TiltFallbackTest < Test::Unit::TestCase
5
5
  class FailTemplate < Tilt::Template
6
6
  def self.engine_initialized?; false end
7
7
  def prepare; end
8
-
8
+
9
9
  def initialize_engine
10
10
  raise LoadError, "can't load #{self.class}"
11
11
  end
@@ -22,7 +22,7 @@ class TiltFallbackTest < Test::Unit::TestCase
22
22
  def set_ivar(obj, name, value)
23
23
  obj.instance_variable_set("@#{name}", value)
24
24
  end
25
-
25
+
26
26
  def clear_ivar(obj, name)
27
27
  ivar = "@#{name}"
28
28
  value = obj.instance_variable_get(ivar)
@@ -49,7 +49,7 @@ class TiltFallbackTest < Test::Unit::TestCase
49
49
  test "returns the last registered template" do
50
50
  Tilt.register("md", WinTemplate)
51
51
  Tilt.register("md", WinTemplate2)
52
-
52
+
53
53
  template = Tilt["md"]
54
54
  assert_equal WinTemplate2, template
55
55
  end
@@ -87,7 +87,7 @@ class TiltFallbackTest < Test::Unit::TestCase
87
87
  test ".prefer accepts multiple extensions" do
88
88
  extensions = %w[md mkd markdown]
89
89
  Tilt.prefer(FailTemplate, *extensions)
90
-
90
+
91
91
  extensions.each do |ext|
92
92
  template = Tilt[ext]
93
93
  assert_equal FailTemplate, template
@@ -96,7 +96,7 @@ class TiltFallbackTest < Test::Unit::TestCase
96
96
 
97
97
  test ".prefer with no extension should use already registered extensions" do
98
98
  extensions = %w[md mkd markdown]
99
-
99
+
100
100
  extensions.each do |ext|
101
101
  Tilt.register(ext, FailTemplate)
102
102
  Tilt.register(ext, WinTemplate)
@@ -109,7 +109,7 @@ class TiltFallbackTest < Test::Unit::TestCase
109
109
  assert_equal FailTemplate, template
110
110
  end
111
111
  end
112
-
112
+
113
113
  test ".prefer should only override extensions the preferred library is registered for" do
114
114
  Tilt.register("md", WinTemplate)
115
115
  Tilt.register("mkd", FailTemplate)
@@ -131,7 +131,7 @@ begin
131
131
  end
132
132
  end
133
133
  rescue LoadError => boom
134
- warn "Tilt::HamlTemplate (disabled)\n"
134
+ warn "Tilt::HamlTemplate (disabled)"
135
135
  end
136
136
 
137
137
  __END__
@@ -38,5 +38,5 @@ begin
38
38
  end
39
39
  end
40
40
  rescue LoadError => boom
41
- warn "Tilt::KramdownTemplate (disabled)\n"
41
+ warn "Tilt::KramdownTemplate (disabled)"
42
42
  end
@@ -0,0 +1 @@
1
+ @text-color: #ffc0cb;
@@ -6,21 +6,37 @@ begin
6
6
  require 'less'
7
7
 
8
8
  class LessTemplateTest < Test::Unit::TestCase
9
+ def assert_similar(a, b)
10
+ assert_equal a.gsub(/\s+/m, ' '), b.gsub(/\s+/m, ' ')
11
+ end
12
+
9
13
  test "is registered for '.less' files" do
10
14
  assert_equal Tilt::LessTemplate, Tilt['test.less']
11
15
  end
12
16
 
13
17
  test "compiles and evaluates the template on #render" do
14
18
  template = Tilt::LessTemplate.new { |t| ".bg { background-color: #0000ff; } \n#main\n { .bg; }\n" }
15
- assert_equal ".bg {\n background-color: #0000ff;\n}\n#main {\n background-color: #0000ff;\n}\n", template.render
19
+ assert_similar ".bg {\n background-color: #0000ff;\n}\n#main {\n background-color: #0000ff;\n}\n", template.render
16
20
  end
17
21
 
18
22
  test "can be rendered more than once" do
19
23
  template = Tilt::LessTemplate.new { |t| ".bg { background-color: #0000ff; } \n#main\n { .bg; }\n" }
20
- 3.times { assert_equal ".bg {\n background-color: #0000ff;\n}\n#main {\n background-color: #0000ff;\n}\n", template.render }
24
+ 3.times { assert_similar ".bg {\n background-color: #0000ff;\n}\n#main {\n background-color: #0000ff;\n}\n", template.render }
25
+ end
26
+
27
+ test "can be passed a load path" do
28
+ template = Tilt::LessTemplate.new({
29
+ :paths => [Pathname(__FILE__).dirname]
30
+ }) {
31
+ <<-EOLESS
32
+ @import 'tilt_lesstemplate_test.less';
33
+ .bg {background-color: @text-color;}
34
+ EOLESS
35
+ }
36
+ assert_similar ".bg {\n background-color: #ffc0cb;\n}\n", template.render
21
37
  end
22
38
  end
23
39
 
24
40
  rescue LoadError => boom
25
- warn "Tilt::LessTemplate (disabled)\n"
41
+ warn "Tilt::LessTemplate (disabled)"
26
42
  end
@@ -74,5 +74,5 @@ begin
74
74
  end
75
75
 
76
76
  rescue LoadError => boom
77
- warn "Tilt::LiquidTemplate (disabled)\n"
77
+ warn "Tilt::LiquidTemplate (disabled)"
78
78
  end
@@ -84,5 +84,5 @@ begin
84
84
  end
85
85
 
86
86
  rescue LoadError => boom
87
- warn "Tilt::MarkabyTemplate (disabled)\n"
87
+ warn "Tilt::MarkabyTemplate (disabled)"
88
88
  end
@@ -26,7 +26,7 @@ module MarkdownTests
26
26
  html.encode!("UTF-8") if html.respond_to?(:encode)
27
27
  normalize(html)
28
28
  end
29
-
29
+
30
30
  def test_escape_html
31
31
  html = nrender "Hello <b>World</b>"
32
32
  assert_equal "<p>Hello <b>World</b></p>", html
@@ -98,7 +98,18 @@ begin
98
98
 
99
99
  def test_smarty_pants_true
100
100
  html = nrender "Hello ``World'' -- This is --- a test ...", :smartypants => true
101
- assert_equal "<p>Hello “World – This is — a test …</p>", html
101
+ assert_equal "<p>Hello “World'' – This is — a test …</p>", html
102
+ end
103
+
104
+ def test_fenced_code_blocks_with_lang
105
+ code = <<-COD.gsub(/^\s+/,"")
106
+ ```ruby
107
+ puts "hello world"
108
+ ```
109
+ COD
110
+
111
+ html = nrender code, :fenced_code_blocks => true
112
+ assert_equal %Q{<pre><code class="ruby">puts "hello world"\n</code></pre>}, html
102
113
  end
103
114
  end
104
115
  rescue LoadError => boom
@@ -133,7 +144,7 @@ rescue LoadError => boom
133
144
  # It should already be warned in the main tests
134
145
  end
135
146
 
136
-
147
+
137
148
  begin
138
149
  require 'maruku'
139
150
 
@@ -155,7 +166,7 @@ rescue LoadError => boom
155
166
  end
156
167
 
157
168
  rescue LoadError
158
- warn "Markdown tests need Nokogiri\n"
169
+ warn "Markdown tests need Nokogiri"
159
170
  end
160
171
 
161
172
 
@@ -44,5 +44,5 @@ begin
44
44
  end
45
45
  end
46
46
  rescue LoadError => boom
47
- warn "Tilt::MarukuTemplate (disabled)\n"
47
+ warn "Tilt::MarukuTemplate (disabled)"
48
48
  end
@@ -70,6 +70,6 @@ begin
70
70
  end
71
71
 
72
72
  rescue LoadError => boom
73
- warn "Tilt::RadiusTemplate (disabled)\n"
73
+ warn "Tilt::RadiusTemplate (disabled)"
74
74
  end
75
75
 
@@ -51,5 +51,5 @@ begin
51
51
  end
52
52
  end
53
53
  rescue LoadError => boom
54
- warn "Tilt::RDiscountTemplate (disabled)\n"
54
+ warn "Tilt::RDiscountTemplate (disabled)"
55
55
  end
@@ -2,6 +2,7 @@ require 'contest'
2
2
  require 'tilt'
3
3
 
4
4
  begin
5
+ require 'rdoc'
5
6
  require 'rdoc/markup'
6
7
  require 'rdoc/markup/to_html'
7
8
  class RDocTemplateTest < Test::Unit::TestCase
@@ -11,14 +12,20 @@ begin
11
12
 
12
13
  test "preparing and evaluating the template with #render" do
13
14
  template = Tilt::RDocTemplate.new { |t| "= Hello World!" }
14
- assert_equal "<h1>Hello World!</h1>", template.render.strip
15
+ result = template.render.strip
16
+ assert_match /<h1/, result
17
+ assert_match />Hello World!</, result
15
18
  end
16
19
 
17
20
  test "can be rendered more than once" do
18
21
  template = Tilt::RDocTemplate.new { |t| "= Hello World!" }
19
- 3.times { assert_equal "<h1>Hello World!</h1>", template.render.strip }
22
+ 3.times do
23
+ result = template.render.strip
24
+ assert_match /<h1/, result
25
+ assert_match />Hello World!</, result
26
+ end
20
27
  end
21
28
  end
22
29
  rescue LoadError => boom
23
- warn "Tilt::RDocTemplate (disabled)\n"
30
+ warn "Tilt::RDocTemplate (disabled) [#{boom}]"
24
31
  end
@@ -37,6 +37,11 @@ begin
37
37
  end
38
38
  end
39
39
 
40
+ test "redcarpet2 is our default choice" do
41
+ template = Tilt::RedcarpetTemplate.new {}
42
+ assert_equal Tilt::RedcarpetTemplate::Redcarpet2, template.prepare.class
43
+ end
44
+
40
45
  test "preparing and evaluating templates on #render" do
41
46
  template = Tilt::RedcarpetTemplate.new { |t| "# Hello World!" }
42
47
  assert_equal "<h1>Hello World!</h1>\n", template.render
@@ -48,12 +53,19 @@ begin
48
53
  end
49
54
 
50
55
  test "smartypants when :smart is set" do
51
- template = Tilt::RedcarpetTemplate.new(:smart => true) { |t|
56
+ template = Tilt::RedcarpetTemplate.new(:smartypants => true) { |t|
57
+ "OKAY -- 'Smarty Pants'" }
58
+ assert_match /<p>OKAY &ndash; &#39;Smarty Pants&#39;<\/p>/,
59
+ template.render
60
+ end
61
+
62
+ test "smartypants with a rendererer instance" do
63
+ template = Tilt::RedcarpetTemplate.new(:renderer => Redcarpet::Render::HTML.new(:hard_wrap => true), :smartypants => true) { |t|
52
64
  "OKAY -- 'Smarty Pants'" }
53
- assert_match /<p>OKAY &[nm]dash; &lsquo;Smarty Pants&rsquo;<\/p>/,
65
+ assert_match /<p>OKAY &ndash; &#39;Smarty Pants&#39;<\/p>/,
54
66
  template.render
55
67
  end
56
68
  end
57
69
  rescue LoadError => boom
58
- warn "Tilt::RedcarpetTemplate (disabled)\n"
70
+ warn "Tilt::RedcarpetTemplate (disabled)"
59
71
  end
@@ -18,7 +18,19 @@ begin
18
18
  template = Tilt::RedClothTemplate.new { |t| "h1. Hello World!" }
19
19
  3.times { assert_equal "<h1>Hello World!</h1>", template.render }
20
20
  end
21
+
22
+ test "ignores unknown options" do
23
+ template = Tilt::RedClothTemplate.new(:foo => "bar") { |t| "h1. Hello World!" }
24
+ 3.times { assert_equal "<h1>Hello World!</h1>", template.render }
25
+ end
26
+
27
+ test "passes in RedCloth options" do
28
+ template = Tilt::RedClothTemplate.new { |t| "Hard breaks are\ninserted by default." }
29
+ assert_equal "<p>Hard breaks are<br />\ninserted by default.</p>", template.render
30
+ template = Tilt::RedClothTemplate.new(:hard_breaks => false) { |t| "But they can be\nturned off." }
31
+ assert_equal "<p>But they can be\nturned off.</p>", template.render
32
+ end
21
33
  end
22
34
  rescue LoadError => boom
23
- warn "Tilt::RedClothTemplate (disabled)\n"
35
+ warn "Tilt::RedClothTemplate (disabled)"
24
36
  end
@@ -37,5 +37,5 @@ begin
37
37
  end
38
38
 
39
39
  rescue LoadError => boom
40
- warn "Tilt::SassTemplate (disabled)\n"
40
+ warn "Tilt::SassTemplate (disabled)"
41
41
  end
@@ -119,7 +119,7 @@ class CompiledStringTemplateTest < Test::Unit::TestCase
119
119
  assert_equal "Hello\nWorld!\n", template.render(Scope.new)
120
120
  end
121
121
 
122
-
122
+
123
123
  test "template with '}'" do
124
124
  template = Tilt::StringTemplate.new { "Hello }" }
125
125
  assert_equal "Hello }", template.render
@@ -1,5 +1,6 @@
1
1
  require 'contest'
2
2
  require 'tilt'
3
+ require 'tempfile'
3
4
 
4
5
  class TiltTemplateTest < Test::Unit::TestCase
5
6
 
@@ -23,6 +24,12 @@ class TiltTemplateTest < Test::Unit::TestCase
23
24
  assert_equal 55, inst.line
24
25
  end
25
26
 
27
+ test "initializing with a tempfile" do
28
+ tempfile = Tempfile.new('tilt_template_test')
29
+ inst = MockTemplate.new(tempfile)
30
+ assert_equal File.basename(tempfile.path), inst.basename
31
+ end
32
+
26
33
  test "uses correct eval_file" do
27
34
  inst = MockTemplate.new('foo.erb', 55) {}
28
35
  assert_equal 'foo.erb', inst.eval_file
@@ -127,6 +134,12 @@ class TiltTemplateTest < Test::Unit::TestCase
127
134
  assert inst.prepared?
128
135
  end
129
136
 
137
+ test "template_source with locals having non-variable keys raises error" do
138
+ inst = SourceGeneratingMockTemplate.new { |t| '1 + 2 = #{ANSWER}' }
139
+ err = assert_raise(RuntimeError) { inst.render(Object.new, 'ANSWER' => '3') }
140
+ assert_equal "invalid locals key: \"ANSWER\" (keys must be variable names)", err.message
141
+ end
142
+
130
143
  class Person
131
144
  CONSTANT = "Bob"
132
145
 
@@ -28,5 +28,5 @@ begin
28
28
  end
29
29
  end
30
30
  rescue LoadError => boom
31
- warn "Tilt::WikiClothTemplate (disabled)\n"
31
+ warn "Tilt::WikiClothTemplate (disabled)"
32
32
  end
@@ -11,12 +11,20 @@ begin
11
11
 
12
12
  test "compiles and evaluates the template on #render" do
13
13
  template = Tilt::YajlTemplate.new { "json = { :integer => 3, :string => 'hello' }" }
14
- assert_equal '{"integer":3,"string":"hello"}', template.render
14
+ output = template.render
15
+ result = Yajl::Parser.parse(output)
16
+ expect = {"integer" => 3,"string" => "hello"}
17
+ assert_equal expect, result
15
18
  end
16
19
 
17
20
  test "can be rendered more than once" do
18
21
  template = Tilt::YajlTemplate.new { "json = { :integer => 3, :string => 'hello' }" }
19
- 3.times { assert_equal '{"integer":3,"string":"hello"}', template.render }
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
20
28
  end
21
29
 
22
30
  test "evaluating ruby code" do
@@ -65,7 +73,8 @@ begin
65
73
  json[:integer] = four
66
74
  nil
67
75
  } }
68
- assert_equal '{"string":"hello","integer":4}', template.render
76
+ result = template.render
77
+ assert( (result == '{"string":"hello","integer":4}') || (result == '{"integer":4,"string":"hello"}') )
69
78
  end
70
79
 
71
80
  test "option callback" do
@@ -88,5 +97,5 @@ begin
88
97
 
89
98
  end
90
99
  rescue LoadError
91
- warn "Tilt::YajlTemplateTest (disabled)\n"
100
+ warn "Tilt::YajlTemplateTest (disabled)"
92
101
  end
@@ -3,11 +3,12 @@ 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 = '1.3.3'
7
- s.date = '2011-08-25'
6
+ s.version = '1.3.4'
7
+ s.date = '2013-02-28'
8
8
 
9
9
  s.description = "Generic interface to multiple Ruby template engines"
10
10
  s.summary = s.description
11
+ s.license = "MIT"
11
12
 
12
13
  s.authors = ["Ryan Tomayko"]
13
14
  s.email = "r@tomayko.com"
@@ -16,20 +17,25 @@ Gem::Specification.new do |s|
16
17
  s.files = %w[
17
18
  COPYING
18
19
  Gemfile
20
+ HACKING
19
21
  README.md
20
22
  Rakefile
21
23
  TEMPLATES.md
22
24
  bin/tilt
23
25
  lib/tilt.rb
26
+ lib/tilt/asciidoc.rb
24
27
  lib/tilt/builder.rb
25
28
  lib/tilt/coffee.rb
26
29
  lib/tilt/css.rb
30
+ lib/tilt/csv.rb
27
31
  lib/tilt/erb.rb
32
+ lib/tilt/etanni.rb
28
33
  lib/tilt/haml.rb
29
34
  lib/tilt/liquid.rb
30
35
  lib/tilt/markaby.rb
31
36
  lib/tilt/markdown.rb
32
37
  lib/tilt/nokogiri.rb
38
+ lib/tilt/plain.rb
33
39
  lib/tilt/radius.rb
34
40
  lib/tilt/rdoc.rb
35
41
  lib/tilt/string.rb
@@ -44,17 +50,21 @@ Gem::Specification.new do |s|
44
50
  test/markaby/render_twice.mab
45
51
  test/markaby/scope.mab
46
52
  test/markaby/yielding.mab
53
+ test/tilt_asciidoctor_test.rb
47
54
  test/tilt_blueclothtemplate_test.rb
48
55
  test/tilt_buildertemplate_test.rb
49
56
  test/tilt_cache_test.rb
50
57
  test/tilt_coffeescripttemplate_test.rb
51
58
  test/tilt_compilesite_test.rb
52
59
  test/tilt_creoletemplate_test.rb
60
+ test/tilt_csv_test.rb
53
61
  test/tilt_erbtemplate_test.rb
54
62
  test/tilt_erubistemplate_test.rb
63
+ test/tilt_etannitemplate_test.rb
55
64
  test/tilt_fallback_test.rb
56
65
  test/tilt_hamltemplate_test.rb
57
66
  test/tilt_kramdown_test.rb
67
+ test/tilt_lesstemplate_test.less
58
68
  test/tilt_lesstemplate_test.rb
59
69
  test/tilt_liquidtemplate_test.rb
60
70
  test/tilt_markaby_test.rb
@@ -78,29 +88,29 @@ Gem::Specification.new do |s|
78
88
 
79
89
  s.executables = ['tilt']
80
90
  s.test_files = s.files.select {|path| path =~ /^test\/.*_test.rb/}
81
- s.add_development_dependency 'contest'
91
+ s.add_development_dependency 'asciidoctor', '>= 0.1.0'
92
+ s.add_development_dependency 'RedCloth'
93
+ s.add_development_dependency 'bluecloth'
82
94
  s.add_development_dependency 'builder'
95
+ s.add_development_dependency 'coffee-script'
96
+ s.add_development_dependency 'contest'
97
+ s.add_development_dependency 'creole'
83
98
  s.add_development_dependency 'erubis'
84
99
  s.add_development_dependency 'haml', '>= 2.2.11'
85
- s.add_development_dependency 'sass'
86
- s.add_development_dependency 'rdiscount'
87
- s.add_development_dependency 'liquid'
100
+ s.add_development_dependency 'kramdown'
88
101
  s.add_development_dependency 'less'
89
- s.add_development_dependency 'radius'
90
- s.add_development_dependency 'nokogiri'
102
+ s.add_development_dependency 'liquid'
91
103
  s.add_development_dependency 'markaby'
92
- s.add_development_dependency 'coffee-script'
93
- s.add_development_dependency 'bluecloth'
94
- s.add_development_dependency 'RedCloth'
95
104
  s.add_development_dependency 'maruku'
96
- s.add_development_dependency 'creole'
97
- s.add_development_dependency 'kramdown'
105
+ s.add_development_dependency 'nokogiri'
106
+ s.add_development_dependency 'radius'
107
+ s.add_development_dependency 'rdiscount'
108
+ s.add_development_dependency 'rdoc'
98
109
  s.add_development_dependency 'redcarpet'
99
- s.add_development_dependency 'creole'
100
- s.add_development_dependency 'yajl-ruby'
110
+ s.add_development_dependency 'sass'
101
111
  s.add_development_dependency 'wikicloth'
102
- s.add_development_dependency 'redcarpet'
103
- s.add_development_dependency 'kramdown'
112
+ s.add_development_dependency 'yajl-ruby'
113
+ s.add_development_dependency 'rdoc'
104
114
 
105
115
  s.homepage = "http://github.com/rtomayko/tilt/"
106
116
  s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Tilt", "--main", "Tilt"]