haml-edge 2.3.183 → 2.3.184

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 (47) hide show
  1. data/EDGE_GEM_VERSION +1 -1
  2. data/README.md +7 -7
  3. data/Rakefile +6 -4
  4. data/VERSION +1 -1
  5. data/VERSION_NAME +1 -1
  6. data/lib/haml/filters.rb +5 -1
  7. data/lib/sass/script/functions.rb +23 -2
  8. data/lib/sass/script/lexer.rb +7 -5
  9. data/lib/sass/script/literal.rb +10 -0
  10. data/lib/sass/script/parser.rb +9 -2
  11. data/test/haml/engine_test.rb +9 -0
  12. data/test/sass/scss/css_test.rb +10 -1
  13. metadata +1 -36
  14. data/test/haml/spec/README.md +0 -97
  15. data/test/haml/spec/lua_haml_spec.lua +0 -30
  16. data/test/haml/spec/ruby_haml_test.rb +0 -19
  17. data/test/haml/spec/tests.json +0 -534
  18. data/vendor/fssm/LICENSE +0 -20
  19. data/vendor/fssm/README.markdown +0 -55
  20. data/vendor/fssm/Rakefile +0 -59
  21. data/vendor/fssm/VERSION.yml +0 -5
  22. data/vendor/fssm/example.rb +0 -9
  23. data/vendor/fssm/fssm.gemspec +0 -77
  24. data/vendor/fssm/lib/fssm/backends/fsevents.rb +0 -36
  25. data/vendor/fssm/lib/fssm/backends/inotify.rb +0 -26
  26. data/vendor/fssm/lib/fssm/backends/polling.rb +0 -25
  27. data/vendor/fssm/lib/fssm/backends/rubycocoa/fsevents.rb +0 -131
  28. data/vendor/fssm/lib/fssm/monitor.rb +0 -26
  29. data/vendor/fssm/lib/fssm/path.rb +0 -91
  30. data/vendor/fssm/lib/fssm/pathname.rb +0 -502
  31. data/vendor/fssm/lib/fssm/state/directory.rb +0 -57
  32. data/vendor/fssm/lib/fssm/state/file.rb +0 -24
  33. data/vendor/fssm/lib/fssm/support.rb +0 -63
  34. data/vendor/fssm/lib/fssm/tree.rb +0 -176
  35. data/vendor/fssm/lib/fssm.rb +0 -33
  36. data/vendor/fssm/profile/prof-cache.rb +0 -40
  37. data/vendor/fssm/profile/prof-fssm-pathname.html +0 -1231
  38. data/vendor/fssm/profile/prof-pathname.rb +0 -68
  39. data/vendor/fssm/profile/prof-plain-pathname.html +0 -988
  40. data/vendor/fssm/profile/prof.html +0 -2379
  41. data/vendor/fssm/spec/path_spec.rb +0 -75
  42. data/vendor/fssm/spec/root/duck/quack.txt +0 -0
  43. data/vendor/fssm/spec/root/file.css +0 -0
  44. data/vendor/fssm/spec/root/file.rb +0 -0
  45. data/vendor/fssm/spec/root/file.yml +0 -0
  46. data/vendor/fssm/spec/root/moo/cow.txt +0 -0
  47. data/vendor/fssm/spec/spec_helper.rb +0 -14
data/EDGE_GEM_VERSION CHANGED
@@ -1 +1 @@
1
- 2.3.183
1
+ 2.3.184
data/README.md CHANGED
@@ -38,7 +38,7 @@ Sass is a little more complicated;
38
38
  where they'll be automatically compiled
39
39
  to corresponding CSS files in `public/stylesheets` when needed
40
40
  (the Sass template directory is customizable...
41
- see [the Sass reference](http://sass-lang.com/docs/yardoc/SASS_REFERENCE.md.html#template_location-option) for details).
41
+ see [the Sass reference](http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#template_location-option) for details).
42
42
 
43
43
  For Merb, `.html.haml` views will work without any further modification.
44
44
  To enable Sass, you also need to add a dependency.
@@ -129,7 +129,7 @@ like `if` and `while`:
129
129
  = "Happy new " + "year!"
130
130
 
131
131
  Haml provides far more tools than those presented here.
132
- Check out the [reference documentation](http://beta.haml-lang.com/docs/yardoc/file.HAML_REFERENCE.md)
132
+ Check out the [reference documentation](http://beta.haml-lang.com/docs/yardoc/file.HAML_REFERENCE.html)
133
133
  for full details.
134
134
 
135
135
  #### Indentation
@@ -151,10 +151,10 @@ and get small stylesheets up and running quickly,
151
151
  particularly with the help of
152
152
  [the Compass style library](http://compass-style.org).
153
153
 
154
- [vars]: http://beta.sass-lang.com/docs/yardoc/file.SASS_REFERENCE.md#variables_
155
- [nested]: http://beta.sass-lang.com/docs/yardoc/file.SASS_REFERENCE.md#nested_rules_
154
+ [vars]: http://beta.sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#variables_
155
+ [nested]: http://beta.sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#nested_rules_
156
156
  [mixins]: http://beta.sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#mixins
157
- [imports]: http://beta.sass-lang.com/docs/yardoc/file.SASS_REFERENCE.md#import
157
+ [imports]: http://beta.sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#import
158
158
 
159
159
  Sass has two syntaxes.
160
160
  The one presented here, known as "SCSS" (for "Sassy CSS"),
@@ -163,7 +163,7 @@ The other (older) syntax, known as the indented syntax or just "Sass",
163
163
  is whitespace-sensitive and indentation-based.
164
164
  For more information, see the [reference documentation][syntax].
165
165
 
166
- [syntax]: http://beta.sass-lang.com/docs/yardoc/file.SASS_REFERENCE.md#syntax
166
+ [syntax]: http://beta.sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#syntax
167
167
 
168
168
  To run the following examples and see the CSS they produce,
169
169
  put them in a file called `test.scss` and run `sass test.scss`.
@@ -232,7 +232,7 @@ You can even give them arguments.
232
232
  }
233
233
 
234
234
  A comprehensive list of features is available
235
- in the [Sass reference](http://beta.sass-lang.com/docs/yardoc/file.SASS_REFERENCE.md).
235
+ in the [Sass reference](http://beta.sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html).
236
236
 
237
237
  ## Executables
238
238
 
data/Rakefile CHANGED
@@ -70,7 +70,7 @@ at_exit { File.delete(scope('REVISION')) rescue nil }
70
70
 
71
71
  desc "Install Haml as a gem."
72
72
  task :install => [:package] do
73
- sudo = RUBY_PLATFORM =~ /win32/ ? '' : 'sudo'
73
+ sudo = RUBY_PLATFORM =~ /win32|mingw/ ? '' : 'sudo'
74
74
  gem = RUBY_PLATFORM =~ /java/ ? 'jgem' : 'gem'
75
75
  sh %{#{sudo} #{gem} install --no-ri pkg/haml-#{File.read(scope('VERSION')).strip}}
76
76
  end
@@ -191,14 +191,16 @@ task :release_edge do
191
191
  sh %{git merge origin/master}
192
192
 
193
193
  # Get the current master branch version
194
- version = File.read(scope('VERSION')).strip.split('.').map {|n| n.to_i}
195
- unless version[1] % 2 == 1 && version[2] == 0
194
+ version = File.read(scope('VERSION')).strip.split('.')
195
+ pr = version[3]
196
+ version = version.map {|n| n.to_i}
197
+ unless pr || (version[1] % 2 == 1 && version[2] == 0)
196
198
  raise "#{version.join('.')} is not a development version"
197
199
  end
198
200
 
199
201
  # Bump the edge gem version
200
202
  edge_version = File.read(scope('EDGE_GEM_VERSION')).strip.split('.').map {|n| n.to_i}
201
- if edge_version[0..1] != version[0..1]
203
+ if !pr && (edge_version[0..1] != version[0..1])
202
204
  # A new master branch version was released, reset the edge gem version
203
205
  edge_version[0..1] = version[0..1]
204
206
  edge_version[2] = 0
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.3.183
1
+ 2.3.184
data/VERSION_NAME CHANGED
@@ -1 +1 @@
1
- Bleeding Edge
1
+ Classy Cassidy
data/lib/haml/filters.rb CHANGED
@@ -100,7 +100,11 @@ module Haml
100
100
  if contains_interpolation?(text)
101
101
  return if options[:suppress_eval]
102
102
 
103
- text = unescape_interpolation(text).gsub("\\n", "\n")
103
+ text = unescape_interpolation(text).gsub(/(\\+)n/) do |s|
104
+ escapes = $1.size
105
+ next s if escapes % 2 == 0
106
+ ("\\" * (escapes - 1)) + "\n"
107
+ end
104
108
  newline if text.gsub!(/\n"\Z/, "\\n\"")
105
109
  push_script <<RUBY.strip, :escape_html => false
106
110
  find_and_preserve(#{filter.inspect}.render_with_options(#{text}, _hamlout.options))
@@ -388,17 +388,38 @@ module Sass::Script
388
388
  Sass::Script::Number.new(color.lightness, ["%"])
389
389
  end
390
390
 
391
+ # Returns the alpha component (opacity) of a color.
392
+ # This is 1 unless otherwise specified.
393
+ #
394
+ # This function also supports the proprietary Microsoft
395
+ # `alpha(opacity=20)` syntax.
396
+ #
397
+ # @overload def alpha(color)
398
+ # @param color [Color]
399
+ # @return [Number]
400
+ # @raise [ArgumentError] If `color` isn't a color
401
+ def alpha(*args)
402
+ if args.all? do |a|
403
+ a.is_a?(Sass::Script::String) && a.type == :identifier &&
404
+ a.value =~ /^[a-zA-Z]+\s*=/
405
+ end
406
+ # Support the proprietary MS alpha() function
407
+ return Sass::Script::String.new("alpha(#{args.map {|a| a.to_s}.join(", ")})")
408
+ end
409
+
410
+ opacity(*args)
411
+ end
412
+
391
413
  # Returns the alpha component (opacity) of a color.
392
414
  # This is 1 unless otherwise specified.
393
415
  #
394
416
  # @param color [Color]
395
417
  # @return [Number]
396
418
  # @raise [ArgumentError] If `color` isn't a color
397
- def alpha(color)
419
+ def opacity(color)
398
420
  assert_type color, :Color
399
421
  Sass::Script::Number.new(color.alpha)
400
422
  end
401
- alias_method :opacity, :alpha
402
423
 
403
424
  # Makes a color more opaque.
404
425
  # Takes a color and an amount between 0 and 1,
@@ -196,11 +196,12 @@ module Sass
196
196
  def read_token
197
197
  return if done?
198
198
  return unless value = token
199
+ type, val, size = value
200
+ size ||= @scanner.matched_size
199
201
 
200
- value.last.line = @line if value.last.is_a?(Script::Node)
201
- Token.new(value.first, value.last, @line,
202
- current_position - @scanner.matched_size,
203
- @scanner.pos - @scanner.matched_size)
202
+ val.line = @line if val.is_a?(Script::Node)
203
+ Token.new(type, val, @line,
204
+ current_position - size, @scanner.pos - size)
204
205
  end
205
206
 
206
207
  def whitespace
@@ -272,7 +273,8 @@ module Sass
272
273
  @offset = (c == 0 ? @offset + str2.size : str2[/\n(.*)/, 1].size)
273
274
  [:special_fun,
274
275
  Haml::Util.merge_adjacent_strings(
275
- [str1] + Sass::Engine.parse_interp(str2, @line, @options))]
276
+ [str1] + Sass::Engine.parse_interp(str2, @line, @options)),
277
+ str1.size + str2.size]
276
278
  end
277
279
 
278
280
  def ident_op
@@ -120,6 +120,16 @@ MSG
120
120
  Sass::Script::String.new("#{self.to_s}, #{other.to_s}")
121
121
  end
122
122
 
123
+ # The SassScript `=` operation
124
+ # (used for proprietary MS syntax like `alpha(opacity=20)`).
125
+ #
126
+ # @param other [Literal] The right-hand side of the operator
127
+ # @return [Script::String] A string containing both literals
128
+ # separated by `"="`
129
+ def single_eq(other)
130
+ Sass::Script::String.new("#{self.to_s}=#{other.to_s}")
131
+ end
132
+
123
133
  # The SassScript `+` operation.
124
134
  #
125
135
  # @param other [Literal] The right-hand side of the operator
@@ -127,7 +127,7 @@ module Sass
127
127
 
128
128
  # @private
129
129
  PRECEDENCE = [
130
- :comma, :concat, :or, :and,
130
+ :comma, :single_eq, :concat, :or, :and,
131
131
  [:eq, :neq],
132
132
  [:gt, :gte, :lt, :lte],
133
133
  [:plus, :minus],
@@ -186,6 +186,7 @@ RUBY
186
186
  def lexer_class; Lexer; end
187
187
 
188
188
  production :expr, :interpolation, :comma
189
+ production :equals, :interpolation, :single_eq
189
190
 
190
191
  def interpolation
191
192
  e = concat
@@ -232,7 +233,7 @@ RUBY
232
233
  end
233
234
  node(Script::String.new(name.value, :identifier))
234
235
  else
235
- args = arglist || []
236
+ args = fn_arglist || []
236
237
  assert_tok(:rparen)
237
238
  node(Script::Funcall.new(name.value, args))
238
239
  end
@@ -260,6 +261,12 @@ RUBY
260
261
  [[var, val], *defn_arglist(val)]
261
262
  end
262
263
 
264
+ def fn_arglist
265
+ return unless e = equals
266
+ return [e] unless try_tok(:comma)
267
+ [e, *fn_arglist]
268
+ end
269
+
263
270
  def arglist
264
271
  return unless e = interpolation
265
272
  return [e] unless try_tok(:comma)
@@ -671,6 +671,15 @@ HAML
671
671
  assert_equal("<a href='#\"'></a>\n", render('%a(href="#\\"")'))
672
672
  end
673
673
 
674
+ def test_filter_with_newline_and_interp
675
+ assert_equal(<<HTML, render(<<HAML))
676
+ \\n
677
+ HTML
678
+ :plain
679
+ \\n\#{""}
680
+ HAML
681
+ end
682
+
674
683
  # HTML escaping tests
675
684
 
676
685
  def test_ampersand_equals_should_escape
@@ -320,7 +320,7 @@ foo {
320
320
  SCSS
321
321
  end
322
322
 
323
- def test_ms_filter_syntax
323
+ def test_ms_long_filter_syntax
324
324
  assert_equal <<CSS, render(<<SCSS)
325
325
  foo {
326
326
  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=1, startColorstr=#c0ff3300, endColorstr=#ff000000);
@@ -332,6 +332,15 @@ foo {
332
332
  SCSS
333
333
  end
334
334
 
335
+ def test_ms_short_filter_syntax
336
+ assert_parses <<SCSS
337
+ foo {
338
+ filter: alpha(opacity=20);
339
+ filter: alpha(opacity=20, enabled=true);
340
+ filter: blaznicate(foo=bar, baz=bang bip, bart=#fa4600); }
341
+ SCSS
342
+ end
343
+
335
344
  def test_declaration_hacks
336
345
  assert_parses <<SCSS
337
346
  foo {
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: haml-edge
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.183
4
+ version: 2.3.184
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan Weizenbaum
@@ -123,36 +123,6 @@ files:
123
123
  - lib/sass/scss/rx.rb
124
124
  - lib/sass/scss/script_lexer.rb
125
125
  - lib/sass/scss/script_parser.rb
126
- - vendor/fssm/LICENSE
127
- - vendor/fssm/README.markdown
128
- - vendor/fssm/Rakefile
129
- - vendor/fssm/VERSION.yml
130
- - vendor/fssm/example.rb
131
- - vendor/fssm/fssm.gemspec
132
- - vendor/fssm/lib/fssm.rb
133
- - vendor/fssm/lib/fssm/backends/fsevents.rb
134
- - vendor/fssm/lib/fssm/backends/inotify.rb
135
- - vendor/fssm/lib/fssm/backends/polling.rb
136
- - vendor/fssm/lib/fssm/backends/rubycocoa/fsevents.rb
137
- - vendor/fssm/lib/fssm/monitor.rb
138
- - vendor/fssm/lib/fssm/path.rb
139
- - vendor/fssm/lib/fssm/pathname.rb
140
- - vendor/fssm/lib/fssm/state/directory.rb
141
- - vendor/fssm/lib/fssm/state/file.rb
142
- - vendor/fssm/lib/fssm/support.rb
143
- - vendor/fssm/lib/fssm/tree.rb
144
- - vendor/fssm/profile/prof-cache.rb
145
- - vendor/fssm/profile/prof-fssm-pathname.html
146
- - vendor/fssm/profile/prof-pathname.rb
147
- - vendor/fssm/profile/prof-plain-pathname.html
148
- - vendor/fssm/profile/prof.html
149
- - vendor/fssm/spec/path_spec.rb
150
- - vendor/fssm/spec/root/duck/quack.txt
151
- - vendor/fssm/spec/root/file.css
152
- - vendor/fssm/spec/root/file.rb
153
- - vendor/fssm/spec/root/file.yml
154
- - vendor/fssm/spec/root/moo/cow.txt
155
- - vendor/fssm/spec/spec_helper.rb
156
126
  - bin/css2sass
157
127
  - bin/haml
158
128
  - bin/html2haml
@@ -187,10 +157,6 @@ files:
187
157
  - test/haml/results/tag_parsing.xhtml
188
158
  - test/haml/results/very_basic.xhtml
189
159
  - test/haml/results/whitespace_handling.xhtml
190
- - test/haml/spec/README.md
191
- - test/haml/spec/lua_haml_spec.lua
192
- - test/haml/spec/ruby_haml_test.rb
193
- - test/haml/spec/tests.json
194
160
  - test/haml/template_test.rb
195
161
  - test/haml/util_test.rb
196
162
  - test/haml/templates/_av_partial_1.haml
@@ -349,7 +315,6 @@ test_files:
349
315
  - test/haml/engine_test.rb
350
316
  - test/haml/helper_test.rb
351
317
  - test/haml/html2haml_test.rb
352
- - test/haml/spec/ruby_haml_test.rb
353
318
  - test/haml/template_test.rb
354
319
  - test/haml/util_test.rb
355
320
  - test/haml/spec_test.rb
@@ -1,97 +0,0 @@
1
- # Haml Spec #
2
-
3
- Haml Spec provides a basic suite of tests for Haml interpreters.
4
-
5
- It is intented for developers who are creating or maintaining an implementation
6
- of the [Haml](http://haml-lang.com) markup language.
7
-
8
- At the moment, there are test runners for the [original Haml](http://github.com/nex3/haml)
9
- in Ruby, and for [Lua Haml](http://github.com/norman/lua-haml). Support for
10
- other versions of Haml will be added if their developers/maintainers
11
- are interested in using it.
12
-
13
- ## The Tests ##
14
-
15
- The tests are kept in JSON format for portability across languages. Each test
16
- is a JSON object with expected input, output, local variables and configuration
17
- parameters (see below). The test suite only provides tests for features which
18
- are portable, therefore no tests for script are provided, nor for external
19
- filters such as :markdown or :textile.
20
-
21
- The one major exception to this are the tests for interpolation, which you may
22
- need to modify with a regular expression to run under PHP or Perl, which
23
- require a symbol before variable names. These tests are included despite being
24
- less than 100% portable because interpolation is an important part of Haml and
25
- can be tricky to implement.
26
-
27
- ## Running the Tests ##
28
-
29
- ### Ruby ###
30
-
31
- In order to make it as easy as possible for non-Ruby programmers to run the
32
- Ruby Haml tests, the Ruby test runner uses test/unit, rather than something
33
- fancier like Rspec. To run them you probably only need to install `haml`, and
34
- possibly `ruby` if your platform doesn't come with it by default. If you're
35
- using Ruby 1.8.x, you'll also need to install `json`:
36
-
37
- sudo gem install haml
38
- # for Ruby 1.8.x; check using "ruby --version" if unsure
39
- sudo gem install json
40
-
41
- Then, running the Ruby test suite is easy:
42
-
43
- ruby ruby_haml_test.rb
44
-
45
- ### Lua ###
46
-
47
- The Lua test depends on [Telescope](http://telescope.luaforge.net/),
48
- [jason4lua](http://json.luaforge.net/), and
49
- [Lua Haml](http://github.com/norman/lua-haml). Install and
50
- run `tsc lua_haml_spec.lua`.
51
-
52
- ## Contributing ##
53
-
54
- ### Getting it ###
55
-
56
- You can access the [Git repository](http://github.com/norman/haml-spec) at:
57
-
58
- git://github.com/norman/haml-spec.git
59
-
60
- Patches are *very* welcome, as are test runners for your Haml implementation.
61
-
62
- As long as any test you add run against Ruby Haml and are not redundant, I'll
63
- be very happy to add them.
64
-
65
- ### Test JSON format ###
66
-
67
- "test name" : {
68
- "haml" : "haml input",
69
- "html" : "expected html output",
70
- "result" : "expected test result",
71
- "locals" : "local vars",
72
- "config" : "config params"
73
- }
74
-
75
- * test name: This should be a *very* brief description of what's being tested. It can
76
- be used by the test runners to name test methods, or to exclude certain tests from being
77
- run.
78
- * haml: The Haml code to be evaluated. Always required.
79
- * html: The HTML output that should be generated. Required unless "result" is "error".
80
- * result: Can be "pass" or "error". If it's absent, then "pass" is assumed. If it's "error",
81
- then the goal of the test is to make sure that malformed Haml code generates an error.
82
- * locals: An object containing local variables needed for the test.
83
- * config: An object containing configuration parameters used to run the test.
84
- The configuration parameters should be usable directly by Ruby's Haml with no
85
- modification. If your implementation uses config parameters with different
86
- names, you may need to process them to make them match your implementation.
87
- If your implementation has options that do not exist in Ruby's Haml, then you
88
- should add tests for this in your implementation's test rather than here.
89
-
90
- ## License ##
91
-
92
- This project is released under the [WTFPL](http://sam.zoy.org/wtfpl/) in order
93
- to be as usable as possible in any project, commercial or free.
94
-
95
- ## Author ##
96
-
97
- [Norman Clarke](mailto:norman@njclarke.com)
@@ -1,30 +0,0 @@
1
- require 'luarocks.require'
2
- require 'json'
3
- require 'telescope'
4
- require 'haml'
5
-
6
- local function get_tests(filename)
7
- local self = debug.getinfo(1).short_src
8
- if self:match("/") then return "./" .. self:gsub("[^/]*%.lua$", "/" .. filename)
9
- elseif self:match("\\") then return self:gsub("[^\\]*%.lua$", "\\" .. filename)
10
- else return filename
11
- end
12
- end
13
-
14
- local fh = assert(io.open(get_tests("tests.json")))
15
- local input = fh:read '*a'
16
- fh:close()
17
-
18
- local contexts = json.decode(input)
19
-
20
- describe("LuaHaml", function()
21
- for context, expectations in pairs(contexts) do
22
- describe("When handling " .. context, function()
23
- for name, exp in pairs(expectations) do
24
- it(string.format("should correctly render %s", name), function()
25
- assert_equal(haml.render(exp.haml, exp.config or {}, exp.locals or {}), exp.html)
26
- end)
27
- end
28
- end)
29
- end
30
- end)
@@ -1,19 +0,0 @@
1
- require "test/unit"
2
- require "json"
3
- require "haml"
4
-
5
- class HamlTest < Test::Unit::TestCase
6
- contexts = JSON.parse(File.read(File.dirname(__FILE__) + "/tests.json"))
7
- contexts.each do |context|
8
- context[1].each do |name, test|
9
- class_eval(<<-EOTEST)
10
- def test_#{name.gsub(/\s+|[^a-zA-Z0-9_]/, "_")}
11
- locals = Hash[*(#{test}["locals"] || {}).collect {|k, v| [k.to_sym, v] }.flatten]
12
- options = Hash[*(#{test}["config"] || {}).collect {|k, v| [k.to_sym, v.to_sym] }.flatten]
13
- engine = Haml::Engine.new(#{test}["haml"], options)
14
- assert_equal(engine.render(Object.new, locals).chomp, #{test}["html"])
15
- end
16
- EOTEST
17
- end
18
- end
19
- end