slim 1.0.2 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -15,4 +15,3 @@ pkg
15
15
 
16
16
  test/rails/log/
17
17
  test/rails/tmp/
18
- test/rails/db/*.sqlite3
data/.travis.yml CHANGED
@@ -8,8 +8,9 @@ rvm:
8
8
  env:
9
9
  - "TASK=test"
10
10
  - "TASK=test TEMPLE=master"
11
- - "TASK=test:rails TEMPLE=master RAILS=master"
11
+ # - "TASK=test:rails RAILS=master"
12
12
  - "TASK=test:rails RAILS=3.0.10"
13
+ - "TASK=test:rails RAILS=3.1.0"
13
14
  script: "bundle exec rake test:ci"
14
15
  notifications:
15
16
  email: false
data/CHANGES CHANGED
@@ -1,5 +1,16 @@
1
1
  master
2
2
 
3
+ 1.0.3
4
+
5
+ * Fix rubinius test cases
6
+ * Fix line numbers for embedded engines
7
+ * Require temple 0.3.4
8
+ * Remove dynamic embedded engines Haml, Liquid, Radius, Markaby
9
+ * More thorough integration testing using travis-ci
10
+ See http://travis-ci.org/#!/stonean/slim
11
+ * Empty static attributes are not removed anymore
12
+ * Line indicator =' is supported in tags
13
+
3
14
  1.0.2
4
15
 
5
16
  * Support for Rails 3.1 streaming (Temple > 0.3.2 required)
data/README.md CHANGED
@@ -303,18 +303,21 @@ Here's a quick example to demonstrate what a Slim template looks like:
303
303
  (1) slim 4.330000 0.020000 4.350000 ( 4.495633)
304
304
  (1) haml 4.680000 0.020000 4.700000 ( 4.747019)
305
305
  (1) haml ugly 4.530000 0.020000 4.550000 ( 4.592425)
306
+
306
307
  (2) erb 0.240000 0.000000 0.240000 ( 0.235896)
307
308
  (2) erubis 0.180000 0.000000 0.180000 ( 0.185349)
308
309
  (2) fast erubis 0.150000 0.000000 0.150000 ( 0.154970)
309
310
  (2) slim 0.050000 0.000000 0.050000 ( 0.046685)
310
311
  (2) haml 0.490000 0.000000 0.490000 ( 0.497864)
311
312
  (2) haml ugly 0.420000 0.000000 0.420000 ( 0.428596)
313
+
312
314
  (3) erb 0.030000 0.000000 0.030000 ( 0.033979)
313
315
  (3) erubis 0.030000 0.000000 0.030000 ( 0.030705)
314
316
  (3) fast erubis 0.040000 0.000000 0.040000 ( 0.035229)
315
317
  (3) slim 0.040000 0.000000 0.040000 ( 0.036249)
316
318
  (3) haml 0.160000 0.000000 0.160000 ( 0.165024)
317
319
  (3) haml ugly 0.150000 0.000000 0.150000 ( 0.146130)
320
+
318
321
  (4) erb 0.060000 0.000000 0.060000 ( 0.059847)
319
322
  (4) erubis 0.040000 0.000000 0.040000 ( 0.040770)
320
323
  (4) slim 0.040000 0.000000 0.040000 ( 0.047389)
@@ -127,18 +127,6 @@ module Slim
127
127
  end
128
128
  end
129
129
 
130
- # Tilt-based engine which is fully dynamically evaluated during runtime (Slow and uncached)
131
- class DynamicTiltEngine < TiltEngine
132
- protected
133
-
134
- # Code to collect local variables
135
- COLLECT_LOCALS = %q{eval('{' + local_variables.select {|v| v[0] != ?_ }.map {|v| ":#{v}=>#{v}" }.join(',') + '}')}
136
-
137
- def render(engine, text)
138
- [:dynamic, "#{engine.name}.new { #{text.inspect} }.render(self, #{COLLECT_LOCALS})"]
139
- end
140
- end
141
-
142
130
  # Tilt-based engine which is precompiled
143
131
  class PrecompiledTiltEngine < TiltEngine
144
132
  protected
@@ -177,7 +165,7 @@ module Slim
177
165
  # Generates a html tag and wraps another engine (specified via :engine option)
178
166
  class TagEngine < Filter
179
167
  def on_slim_embedded(engine, body)
180
- content = options[:engine] ? options[:engine].new(options).on_slim_embedded(engine, body) : [:multi, body]
168
+ content = options[:engine] ? options[:engine].new(options).on_slim_embedded(engine, body) : body
181
169
  [:html, :tag, options[:tag], [:html, :attrs, *options[:attributes].map {|k, v| [:html, :attr, k, [:static, v]] }], content]
182
170
  end
183
171
  end
@@ -185,7 +173,7 @@ module Slim
185
173
  # Embeds ruby code
186
174
  class RubyEngine < Filter
187
175
  def on_slim_embedded(engine, body)
188
- [:code, "\n" + CollectText.new.call(body)]
176
+ [:code, CollectText.new.call(body) + "\n"]
189
177
  end
190
178
  end
191
179
 
@@ -194,6 +182,7 @@ module Slim
194
182
  register :textile, InterpolateTiltEngine
195
183
  register :rdoc, InterpolateTiltEngine
196
184
  register :creole, InterpolateTiltEngine
185
+ register :wiki, InterpolateTiltEngine
197
186
 
198
187
  # These engines are executed at compile time
199
188
  register :coffee, TagEngine, :tag => :script, :attributes => { :type => 'text/javascript' }, :engine => StaticTiltEngine
@@ -203,15 +192,9 @@ module Slim
203
192
 
204
193
  # These engines are precompiled, code is embedded
205
194
  register :erb, ERBEngine
206
- register :haml, PrecompiledTiltEngine
207
195
  register :nokogiri, PrecompiledTiltEngine
208
196
  register :builder, PrecompiledTiltEngine
209
197
 
210
- # These engines are completely executed at runtime (Usage not recommended, no caching!)
211
- register :liquid, DynamicTiltEngine
212
- register :radius, DynamicTiltEngine
213
- register :markaby, DynamicTiltEngine
214
-
215
198
  # Embedded javascript/css
216
199
  register :javascript, TagEngine, :tag => :script, :attributes => { :type => 'text/javascript' }
217
200
  register :css, TagEngine, :tag => :style, :attributes => { :type => 'text/css' }
@@ -12,7 +12,7 @@ module Slim
12
12
  # Interpolate variables in text (#{variable}).
13
13
  # Split the text into multiple dynamic and static parts.
14
14
  block = [:multi]
15
- until string.empty?
15
+ begin
16
16
  case string
17
17
  when /\A\\#\{/
18
18
  # Escaped interpolation
@@ -25,12 +25,12 @@ module Slim
25
25
  string, code = parse_expression($')
26
26
  escape = code !~ /\A\{.*\}\Z/
27
27
  block << [:slim, :output, escape, escape ? code : code[1..-2], [:multi]]
28
- when /\A([^#]+|#)/
28
+ when /\A(#|[^#]*)/
29
29
  # Static text
30
30
  block << [:static, $&]
31
31
  string = $'
32
32
  end
33
- end
33
+ end until string.empty?
34
34
  block
35
35
  end
36
36
 
data/lib/slim/parser.rb CHANGED
@@ -217,7 +217,7 @@ module Slim
217
217
  @stacks.last << [:newline] << [:slim, :embedded, $1, block]
218
218
  @stacks << block
219
219
  parse_text_block
220
- return # Don't append newline
220
+ return # Don't append newline, this has already been done before
221
221
  when /\Adoctype\s+/i
222
222
  # Found doctype declaration
223
223
  @stacks.last << [:html, :doctype, $'.strip]
@@ -263,7 +263,7 @@ module Slim
263
263
  end
264
264
 
265
265
  @line.slice!(0, text_indent || indent)
266
- @stacks.last << [:newline] << [:slim, :interpolate, (text_indent ? "\n" : '') + @line]
266
+ @stacks.last << [:slim, :interpolate, (text_indent ? "\n" : '') + @line] << [:newline]
267
267
 
268
268
  # The indentation of first line of the text block
269
269
  # determines the text base indentation.
@@ -292,12 +292,13 @@ module Slim
292
292
  @stacks.last << tag
293
293
 
294
294
  case @line
295
- when /\A\s*=(=?)/
295
+ when /\A\s*=(=?)('?)/
296
296
  # Handle output code
297
297
  block = [:multi]
298
298
  @line = $'
299
299
  content = [:slim, :output, $1 != '=', parse_broken_line, block]
300
300
  tag << content
301
+ @stacks.last << [:static, ' '] unless $2.empty?
301
302
  @stacks << block
302
303
  when /\A\s*\//
303
304
  # Closed tag. Do nothing
data/lib/slim/template.rb CHANGED
@@ -14,6 +14,6 @@ module Slim
14
14
  # Disable the internal slim capturing.
15
15
  # Rails takes care of the capturing by itself.
16
16
  :disable_capture => true,
17
- :streaming => true)
17
+ :streaming => Object.const_defined?(:Fiber))
18
18
  end
19
19
  end
data/lib/slim/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Slim
2
2
  # Slim version string
3
3
  # @api public
4
- VERSION = '1.0.2'
4
+ VERSION = '1.0.3'
5
5
  end
data/slim.gemspec CHANGED
@@ -19,15 +19,13 @@ Gem::Specification.new do |s|
19
19
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
20
  s.require_paths = %w(lib)
21
21
 
22
- s.add_runtime_dependency('temple', ['~> 0.3.3'])
22
+ s.add_runtime_dependency('temple', ['~> 0.3.4'])
23
23
  s.add_runtime_dependency('tilt', ['~> 1.3.2'])
24
24
 
25
25
  s.add_development_dependency('rake', ['>= 0.8.7'])
26
- s.add_development_dependency('haml', ['>= 3.1.0'])
27
26
  s.add_development_dependency('sass', ['>= 3.1.0'])
28
27
  s.add_development_dependency('minitest', ['>= 0'])
29
- s.add_development_dependency('rdiscount', ['>= 0'])
30
- s.add_development_dependency('liquid', ['>= 0'])
28
+ s.add_development_dependency('kramdown', ['>= 0'])
31
29
  s.add_development_dependency('yard', ['>= 0'])
32
30
  s.add_development_dependency('creole', ['>= 0'])
33
31
 
@@ -1,5 +1,6 @@
1
1
  class SlimController < ApplicationController
2
- def normal; end
2
+ def normal
3
+ end
3
4
 
4
5
  def no_layout
5
6
  render :layout => false
@@ -9,7 +10,13 @@ class SlimController < ApplicationController
9
10
  @hello = "Hello Slim with variables!"
10
11
  end
11
12
 
12
- def partial; end
13
+ def partial
14
+ end
15
+
16
+ def streaming
17
+ @hello = "Hello Streaming!"
18
+ render :content_for, :stream => true
19
+ end
13
20
 
14
21
  def integers
15
22
  @integer = 1337
@@ -7,4 +7,4 @@ html
7
7
 
8
8
  body
9
9
  = yield :page_heading
10
- = yield
10
+ .content= yield
@@ -1,22 +1,4 @@
1
- # SQLite version 3.x
2
- # gem install sqlite3-ruby (not necessary on OS X Leopard)
3
- development:
4
- adapter: sqlite3
5
- database: db/development.sqlite3
6
- pool: 5
7
- timeout: 5000
8
-
9
- # Warning: The database defined as "test" will be erased and
10
- # re-generated from your development database when you run "rake".
11
- # Do not set this db to the same as development or production.
12
1
  test:
13
2
  adapter: sqlite3
14
- database: db/test.sqlite3
15
- pool: 5
16
- timeout: 5000
3
+ database: ':memory:'
17
4
 
18
- production:
19
- adapter: sqlite3
20
- database: db/production.sqlite3
21
- pool: 5
22
- timeout: 5000
@@ -1,6 +1,6 @@
1
1
  require File.expand_path('../helper', __FILE__)
2
2
 
3
- class TestSlimRails < ActionController::IntegrationTest
3
+ class TestSlim < ActionController::IntegrationTest
4
4
  test "normal view" do
5
5
  get "slim/normal"
6
6
  assert_response :success
@@ -29,6 +29,17 @@ class TestSlimRails < ActionController::IntegrationTest
29
29
  assert_html "<h1>Hello Slim!</h1><p>With a partial!</p>"
30
30
  end
31
31
 
32
+ if ::Rails::VERSION::MAJOR == 3 && ::Rails::VERSION::MINOR >= 1 && Object.const_defined?(:Fiber)
33
+ puts 'Streaming test enabled'
34
+ test "streaming" do
35
+ get "slim/streaming"
36
+ output = "2f\r\n<!DOCTYPE html><html><head><title>Dummy</title>\r\nd\r\n</head><body>\r\n17\r\nHeading set from a view\r\n15\r\n<div class=\"content\">\r\n53\r\n<p>Page content</p><h1><p>Hello Streaming!</p></h1><h2><p>Hello Streaming!</p></h2>\r\n14\r\n</div></body></html>\r\n0\r\n\r\n"
37
+ assert_equal output, @response.body
38
+ end
39
+ else
40
+ puts 'Streaming test disabled'
41
+ end
42
+
32
43
  test "render integers" do
33
44
  get "slim/integers"
34
45
  assert_html "<p>1337</p>"
@@ -41,7 +52,7 @@ class TestSlimRails < ActionController::IntegrationTest
41
52
 
42
53
  test "content_for" do
43
54
  get "slim/content_for"
44
- assert_html "Heading set from a view<p>Page content</p><h1><p>Hello Slim!</p></h1><h2><p>Hello Slim!</p></h2>"
55
+ assert_html "<p>Page content</p><h1><p>Hello Slim!</p></h1><h2><p>Hello Slim!</p></h2>", :heading => 'Heading set from a view'
45
56
  end
46
57
 
47
58
  test "nested_attributes_form" do
@@ -60,7 +71,7 @@ class TestSlimRails < ActionController::IntegrationTest
60
71
  protected
61
72
 
62
73
  def assert_html(expected, options = {})
63
- expected = "<!DOCTYPE html><html><head><title>Dummy</title></head><body>#{expected}</body></html>" unless options[:skip_layout]
74
+ expected = "<!DOCTYPE html><html><head><title>Dummy</title></head><body>#{options[:heading]}<div class=\"content\">#{expected}</div></body></html>" unless options[:skip_layout]
64
75
  assert_equal expected, @response.body
65
76
  end
66
77
  end
data/test/slim/helper.rb CHANGED
@@ -39,8 +39,20 @@ class TestSlim < MiniTest::Unit::TestCase
39
39
  render(source, options)
40
40
  raise 'Ruby error expected'
41
41
  rescue error => ex
42
- ex.backtrace[0] =~ /^(.*?:\d+):/
43
- assert_equal from, $1
42
+ assert_backtrace(ex, from)
43
+ end
44
+
45
+ def assert_backtrace(ex, from)
46
+ if defined?(RUBY_ENGINE) && RUBY_ENGINE == 'rbx'
47
+ # HACK: Rubinius stack trace sometimes has one entry more
48
+ if ex.backtrace[0] !~ /^#{Regexp.escape from}:/
49
+ ex.backtrace[1] =~ /^(.*?:\d+):/
50
+ assert_equal from, $1
51
+ end
52
+ else
53
+ ex.backtrace[0] =~ /^(.*?:\d+):/
54
+ assert_equal from, $1
55
+ end
44
56
  end
45
57
 
46
58
  def assert_ruby_syntax_error(from, source, options = {})
@@ -19,6 +19,14 @@ p
19
19
  assert_html '<p>Hello World from @env </p>', source
20
20
  end
21
21
 
22
+ def test_render_with_trailing_whitespace_after_tag
23
+ source = %q{
24
+ p=' hello_world
25
+ }
26
+
27
+ assert_html '<p>Hello World from @env</p> ', source
28
+ end
29
+
22
30
  def test_no_escape_render_with_trailing_whitespace
23
31
  source = %q{
24
32
  p
@@ -28,6 +36,14 @@ p
28
36
  assert_html '<p>Hello World from @env </p>', source
29
37
  end
30
38
 
39
+ def test_no_escape_render_with_trailing_whitespace_after_tag
40
+ source = %q{
41
+ p==' hello_world
42
+ }
43
+
44
+ assert_html '<p>Hello World from @env</p> ', source
45
+ end
46
+
31
47
  def test_render_with_conditional_call
32
48
  source = %q{
33
49
  p
@@ -1,26 +1,6 @@
1
1
  require 'helper'
2
- begin
3
- require('creole/template')
4
- rescue LoadError
5
- end
6
2
 
7
3
  class TestSlimEmbeddedEngines < TestSlim
8
- def test_render_with_haml
9
- source = %q{
10
- p
11
- - text = 'haml'
12
- haml:
13
- - passed_from_haml = 'from haml'
14
- %b Hello from #{text.upcase}!
15
- Second Line!
16
- - if true
17
- = true
18
- = passed_from_haml
19
- }
20
-
21
- assert_html "<p><b>Hello from HAML!</b>\nSecond Line!\ntrue\nfrom haml</p>", source
22
- end
23
-
24
4
  def test_render_with_erb
25
5
  source = %q{
26
6
  p
@@ -46,7 +26,7 @@ markdown:
46
26
  * one
47
27
  * two
48
28
  }
49
- assert_html "<h1>Header</h1>\n\n<p>Hello from Markdown!</p>\n\n<p>3</p>\n\n<ul>\n<li>one</li>\n<li>two</li>\n</ul>\n\n", source
29
+ assert_html "<h1 id=\"header\">Header</h1>\n<p>Hello from Markdown!</p>\n\n<p>3</p>\n\n<ul>\n <li>one</li>\n <li>two</li>\n</ul>\n", source
50
30
  end
51
31
 
52
32
  def test_render_with_creole
@@ -58,6 +38,15 @@ creole:
58
38
  assert_html "<h1>head1</h1><h2>head2</h2>", source
59
39
  end
60
40
 
41
+ def test_render_with_wiki
42
+ source = %q{
43
+ wiki:
44
+ = head1
45
+ == head2
46
+ }
47
+ assert_html "<h1>head1</h1><h2>head2</h2>", source
48
+ end
49
+
61
50
  def test_render_with_javascript
62
51
  # Keep the trailing space behind "javascript: "!
63
52
  source = %q{
@@ -91,16 +80,6 @@ ruby:
91
80
  assert_html '3', source
92
81
  end
93
82
 
94
- def test_render_with_liquid
95
- source = %q{
96
- p
97
- - text = 'before liquid block'
98
- liquid:
99
- <span>{{text}}</span>
100
- }
101
- assert_html "<p><span>before liquid block</span></p>", source
102
- end
103
-
104
83
  def test_render_with_scss
105
84
  source = %q{
106
85
  scss:
@@ -273,17 +273,17 @@ p(id="marvin" class="martian" data-info="Illudium Q-36")= output_number
273
273
  assert_html '<p class="martian" data-info="Illudium Q-36" id="marvin">1337</p>', source
274
274
  end
275
275
 
276
- def test_empty_attribute
276
+ def test_static_empty_attribute
277
277
  source = %q{
278
278
  p(id="marvin" class="" data-info="Illudium Q-36")= output_number
279
279
  }
280
280
 
281
- assert_html '<p data-info="Illudium Q-36" id="marvin">1337</p>', source
281
+ assert_html '<p class="" data-info="Illudium Q-36" id="marvin">1337</p>', source
282
282
  end
283
283
 
284
284
  def test_dynamic_empty_attribute
285
285
  source = %q{
286
- p(id="marvin" class=nil data-info="Illudium Q-36")= output_number
286
+ p(id="marvin" class=nil other_empty=("".to_s) data-info="Illudium Q-36")= output_number
287
287
  }
288
288
 
289
289
  assert_html '<p data-info="Illudium Q-36" id="marvin">1337</p>', source
@@ -15,6 +15,16 @@ doctype 5
15
15
  html
16
16
  head
17
17
  title Hello World!
18
+ /! Meta tags
19
+ with long explanatory
20
+ multiline comment
21
+ meta name="description" content="template language"
22
+ /! Stylesheets
23
+ link href="style.css" media="screen" rel="stylesheet" type="text/css"
24
+ link href="colors.css" media="screen" rel="stylesheet" type="text/css"
25
+ /! Javascripts
26
+ script src="jquery.js"
27
+ script src="jquery.ui.js"
18
28
  sass:
19
29
  body
20
30
  background-color: red
@@ -29,6 +39,16 @@ html
29
39
  <html>
30
40
  <head>
31
41
  <title>Hello World!</title>
42
+ <!--Meta tags
43
+ with long explanatory
44
+ multiline comment-->
45
+ <meta content="template language" name="description" />
46
+ <!--Stylesheets-->
47
+ <link href="style.css" media="screen" rel="stylesheet" type="text/css" />
48
+ <link href="colors.css" media="screen" rel="stylesheet" type="text/css" />
49
+ <!--Javascripts-->
50
+ <script src="jquery.js"></script>
51
+ <script src="jquery.ui.js"></script>
32
52
  <style type="text/css">
33
53
  body {
34
54
  background-color: red;
@@ -94,7 +94,7 @@ p Text line 1
94
94
  assert_ruby_error NameError,"(__TEMPLATE__):4", source
95
95
  end
96
96
 
97
- def test_embedded_ruby
97
+ def test_embedded_ruby1
98
98
  source = %q{
99
99
  ruby:
100
100
  a = 1
@@ -106,6 +106,16 @@ ruby:
106
106
  assert_ruby_error NameError,"(__TEMPLATE__):6", source
107
107
  end
108
108
 
109
+ def test_embedded_ruby2
110
+ source = %q{
111
+ ruby:
112
+ a = 1
113
+ unknown_ruby_method
114
+ }
115
+
116
+ assert_ruby_error NameError,"(__TEMPLATE__):4", source
117
+ end
118
+
109
119
  def test_embedded_markdown
110
120
  source = %q{
111
121
  markdown:
@@ -118,19 +128,6 @@ markdown:
118
128
  assert_ruby_error NameError,"(__TEMPLATE__):6", source
119
129
  end
120
130
 
121
- def test_embedded_liquid
122
- source = %q{
123
- - text = 'before liquid block'
124
- liquid:
125
- First
126
- {{text}}
127
- Third
128
- = unknown_ruby_method
129
- }
130
-
131
- assert_ruby_error NameError,"(__TEMPLATE__):7", source
132
- end
133
-
134
131
  def test_embedded_javascript
135
132
  source = %q{
136
133
  javascript:
@@ -3,7 +3,7 @@ require 'helper'
3
3
  class ::MockError < NameError
4
4
  end
5
5
 
6
- class TestSlimTemplate < MiniTest::Unit::TestCase
6
+ class TestSlimTemplate < TestSlim
7
7
  class Scope
8
8
  end
9
9
 
@@ -40,10 +40,9 @@ class TestSlimTemplate < MiniTest::Unit::TestCase
40
40
  begin
41
41
  template.render
42
42
  fail 'should have raised an exception'
43
- rescue => boom
44
- assert_kind_of NameError, boom
45
- line = boom.backtrace.first
46
- assert_equal 'test.slim', line.split(":").first
43
+ rescue => ex
44
+ assert_kind_of NameError, ex
45
+ assert_backtrace(ex, 'test.slim:12')
47
46
  end
48
47
  end
49
48
 
@@ -53,10 +52,9 @@ class TestSlimTemplate < MiniTest::Unit::TestCase
53
52
  template = Slim::Template.new('test.slim') { data }
54
53
  begin
55
54
  res = template.render(Object.new, :name => 'Joe', :foo => 'bar')
56
- rescue => boom
57
- assert_kind_of MockError, boom
58
- line = boom.backtrace.first
59
- assert_equal 'test.slim', line.split(":").first
55
+ rescue => ex
56
+ assert_kind_of MockError, ex
57
+ assert_backtrace(ex, 'test.slim:4')
60
58
  end
61
59
  end
62
60
 
@@ -66,7 +64,6 @@ class TestSlimTemplate < MiniTest::Unit::TestCase
66
64
  method = template.send(:compiled_method, [])
67
65
  assert_kind_of UnboundMethod, method
68
66
  end
69
-
70
67
 
71
68
  def test_passing_locals
72
69
  template = Slim::Template.new { "p = 'Hey ' + name + '!'\n" }
@@ -85,17 +82,16 @@ class TestSlimTemplate < MiniTest::Unit::TestCase
85
82
  assert_equal "<p>Hey Joe!</p>", template.render(Scope.new) { 'Joe' }
86
83
  end
87
84
 
88
- def backtrace_file_and_line_reporting_without_locals
85
+ def test_backtrace_file_and_line_reporting_without_locals
89
86
  data = File.read(__FILE__).split("\n__END__\n").last
90
87
  fail unless data[0] == ?h
91
88
  template = Slim::Template.new('test.slim', 10) { data }
92
89
  begin
93
90
  template.render(Scope.new)
94
91
  fail 'should have raised an exception'
95
- rescue => boom
96
- assert_kind_of NameError, boom
97
- line = boom.backtrace.first
98
- assert_equal 'test.slim', line.split(":").first
92
+ rescue => ex
93
+ assert_kind_of NameError, ex
94
+ assert_backtrace(ex, 'test.slim:12')
99
95
  end
100
96
  end
101
97
 
@@ -105,10 +101,9 @@ class TestSlimTemplate < MiniTest::Unit::TestCase
105
101
  template = Slim::Template.new('test.slim') { data }
106
102
  begin
107
103
  res = template.render(Scope.new, :name => 'Joe', :foo => 'bar')
108
- rescue => boom
109
- assert_kind_of MockError, boom
110
- line = boom.backtrace.first
111
- assert_equal 'test.slim', line.split(":").first
104
+ rescue => ex
105
+ assert_kind_of MockError, ex
106
+ assert_backtrace(ex, 'test.slim:5')
112
107
  end
113
108
  end
114
109
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slim
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,23 +11,23 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2011-08-26 00:00:00.000000000 -04:00
14
+ date: 2011-10-08 00:00:00.000000000 -04:00
15
15
  default_executable:
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: temple
19
- requirement: &2161719440 !ruby/object:Gem::Requirement
19
+ requirement: &2153286200 !ruby/object:Gem::Requirement
20
20
  none: false
21
21
  requirements:
22
22
  - - ~>
23
23
  - !ruby/object:Gem::Version
24
- version: 0.3.3
24
+ version: 0.3.4
25
25
  type: :runtime
26
26
  prerelease: false
27
- version_requirements: *2161719440
27
+ version_requirements: *2153286200
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: tilt
30
- requirement: &2161718920 !ruby/object:Gem::Requirement
30
+ requirement: &2153285680 !ruby/object:Gem::Requirement
31
31
  none: false
32
32
  requirements:
33
33
  - - ~>
@@ -35,10 +35,10 @@ dependencies:
35
35
  version: 1.3.2
36
36
  type: :runtime
37
37
  prerelease: false
38
- version_requirements: *2161718920
38
+ version_requirements: *2153285680
39
39
  - !ruby/object:Gem::Dependency
40
40
  name: rake
41
- requirement: &2161718440 !ruby/object:Gem::Requirement
41
+ requirement: &2153285200 !ruby/object:Gem::Requirement
42
42
  none: false
43
43
  requirements:
44
44
  - - ! '>='
@@ -46,21 +46,10 @@ dependencies:
46
46
  version: 0.8.7
47
47
  type: :development
48
48
  prerelease: false
49
- version_requirements: *2161718440
50
- - !ruby/object:Gem::Dependency
51
- name: haml
52
- requirement: &2161717960 !ruby/object:Gem::Requirement
53
- none: false
54
- requirements:
55
- - - ! '>='
56
- - !ruby/object:Gem::Version
57
- version: 3.1.0
58
- type: :development
59
- prerelease: false
60
- version_requirements: *2161717960
49
+ version_requirements: *2153285200
61
50
  - !ruby/object:Gem::Dependency
62
51
  name: sass
63
- requirement: &2152313300 !ruby/object:Gem::Requirement
52
+ requirement: &2153284720 !ruby/object:Gem::Requirement
64
53
  none: false
65
54
  requirements:
66
55
  - - ! '>='
@@ -68,21 +57,10 @@ dependencies:
68
57
  version: 3.1.0
69
58
  type: :development
70
59
  prerelease: false
71
- version_requirements: *2152313300
60
+ version_requirements: *2153284720
72
61
  - !ruby/object:Gem::Dependency
73
62
  name: minitest
74
- requirement: &2152312820 !ruby/object:Gem::Requirement
75
- none: false
76
- requirements:
77
- - - ! '>='
78
- - !ruby/object:Gem::Version
79
- version: '0'
80
- type: :development
81
- prerelease: false
82
- version_requirements: *2152312820
83
- - !ruby/object:Gem::Dependency
84
- name: rdiscount
85
- requirement: &2152312340 !ruby/object:Gem::Requirement
63
+ requirement: &2153284240 !ruby/object:Gem::Requirement
86
64
  none: false
87
65
  requirements:
88
66
  - - ! '>='
@@ -90,10 +68,10 @@ dependencies:
90
68
  version: '0'
91
69
  type: :development
92
70
  prerelease: false
93
- version_requirements: *2152312340
71
+ version_requirements: *2153284240
94
72
  - !ruby/object:Gem::Dependency
95
- name: liquid
96
- requirement: &2152311860 !ruby/object:Gem::Requirement
73
+ name: kramdown
74
+ requirement: &2153283760 !ruby/object:Gem::Requirement
97
75
  none: false
98
76
  requirements:
99
77
  - - ! '>='
@@ -101,10 +79,10 @@ dependencies:
101
79
  version: '0'
102
80
  type: :development
103
81
  prerelease: false
104
- version_requirements: *2152311860
82
+ version_requirements: *2153283760
105
83
  - !ruby/object:Gem::Dependency
106
84
  name: yard
107
- requirement: &2152311380 !ruby/object:Gem::Requirement
85
+ requirement: &2153283280 !ruby/object:Gem::Requirement
108
86
  none: false
109
87
  requirements:
110
88
  - - ! '>='
@@ -112,10 +90,10 @@ dependencies:
112
90
  version: '0'
113
91
  type: :development
114
92
  prerelease: false
115
- version_requirements: *2152311380
93
+ version_requirements: *2153283280
116
94
  - !ruby/object:Gem::Dependency
117
95
  name: creole
118
- requirement: &2152310900 !ruby/object:Gem::Requirement
96
+ requirement: &2153282800 !ruby/object:Gem::Requirement
119
97
  none: false
120
98
  requirements:
121
99
  - - ! '>='
@@ -123,10 +101,10 @@ dependencies:
123
101
  version: '0'
124
102
  type: :development
125
103
  prerelease: false
126
- version_requirements: *2152310900
104
+ version_requirements: *2153282800
127
105
  - !ruby/object:Gem::Dependency
128
106
  name: rcov
129
- requirement: &2152310380 !ruby/object:Gem::Requirement
107
+ requirement: &2153282280 !ruby/object:Gem::Requirement
130
108
  none: false
131
109
  requirements:
132
110
  - - ! '>='
@@ -134,7 +112,7 @@ dependencies:
134
112
  version: '0'
135
113
  type: :development
136
114
  prerelease: false
137
- version_requirements: *2152310380
115
+ version_requirements: *2153282280
138
116
  description: Slim is a template language whose goal is reduce the syntax to the essential
139
117
  parts without becoming cryptic.
140
118
  email:
@@ -218,7 +196,7 @@ files:
218
196
  - test/rails/db/migrate/20101220223037_parents_and_children.rb
219
197
  - test/rails/script/rails
220
198
  - test/rails/test/helper.rb
221
- - test/rails/test/test_slim_rails.rb
199
+ - test/rails/test/test_slim.rb
222
200
  - test/slim/helper.rb
223
201
  - test/slim/test_chain_manipulation.rb
224
202
  - test/slim/test_code_blocks.rb