tilt 1.3.3 → 1.3.4

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 (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"]