haml-edge 2.3.58 → 2.3.59

Sign up to get free protection for your applications and to get access to all the features.
data/EDGE_GEM_VERSION CHANGED
@@ -1 +1 @@
1
- 2.3.58
1
+ 2.3.59
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.3.58
1
+ 2.3.59
@@ -361,14 +361,14 @@ END
361
361
 
362
362
  no_format = @options[:ugly] &&
363
363
  !(opts[:preserve_script] || opts[:preserve_tag] || opts[:escape_html])
364
- output_temp = "(haml_very_temp = haml_temp; haml_temp = nil; haml_very_temp)"
365
- out = "_hamlout.#{static_method_name(:format_script, *args)}(#{output_temp});"
364
+ output_expr = "(#{text}\n)"
365
+ static_method = "_hamlout.#{static_method_name(:format_script, *args)}"
366
366
 
367
367
  # Prerender tabulation unless we're in a tag
368
368
  push_merged_text '' unless opts[:in_tag]
369
369
 
370
370
  unless block_opened?
371
- @to_merge << [:script, no_format ? "#{text}\n" : "haml_temp = #{text}\n#{out}"]
371
+ @to_merge << [:script, no_format ? "#{text}\n" : "#{static_method}(#{output_expr});"]
372
372
  concat_merged_text("\n") unless opts[:in_tag] || opts[:nuke_inner_whitespace]
373
373
  @newlines -= 1
374
374
  return
@@ -378,7 +378,7 @@ END
378
378
 
379
379
  push_silent "haml_temp = #{text}"
380
380
  newline_now
381
- push_and_tabulate([:loud, "_hamlout.buffer << #{no_format ? "#{output_temp}.to_s;" : out}",
381
+ push_and_tabulate([:loud, "_hamlout.buffer << #{no_format ? "haml_temp.to_s;" : "#{static_method}(haml_temp);"}",
382
382
  !(opts[:in_tag] || opts[:nuke_inner_whitespace] || @options[:ugly])])
383
383
  end
384
384
 
data/lib/haml/util.rb CHANGED
@@ -122,6 +122,17 @@ module Haml
122
122
  end
123
123
  end
124
124
 
125
+ # Returns information about the caller of the previous method.
126
+ #
127
+ # @param entry [String] An entry in the `#caller` list, or a similarly formatted string
128
+ # @return [[String, Fixnum, (String, nil)]] An array containing the filename, line, and method name of the caller.
129
+ # The method name may be nil
130
+ def caller_info(entry = caller[1])
131
+ info = entry.scan(/^(.*?):(-?.*?)(?::.*`(.+)')?$/).first
132
+ info[1] = info[1].to_i
133
+ info
134
+ end
135
+
125
136
  ## Rails XSS Safety
126
137
 
127
138
  # Whether or not ActionView's XSS protection is available and enabled,
@@ -246,9 +257,10 @@ MSG
246
257
  # @param erb [String] The template for the method code
247
258
  def def_static_method(klass, name, args, *vars)
248
259
  erb = vars.pop
260
+ info = caller_info
249
261
  powerset(vars).each do |set|
250
262
  context = StaticConditionalContext.new(set).instance_eval {binding}
251
- klass.class_eval(<<METHOD)
263
+ klass.class_eval(<<METHOD, info[0], info[1])
252
264
  def #{static_method_name(name, *vars.map {|v| set.include?(v)})}(#{args.join(', ')})
253
265
  #{ERB.new(erb).result(context)}
254
266
  end
@@ -181,7 +181,7 @@ module Sass::Script
181
181
  # It yields a number to a block to perform the operation and return a number
182
182
  def numeric_transformation(value)
183
183
  unless value.is_a?(Sass::Script::Number)
184
- calling_function = caller.first.scan(/`([^']+)'/).first.first
184
+ calling_function = Haml::Util.caller_info[2]
185
185
  raise Sass::SyntaxError.new("#{value} is not a number for `#{calling_function}'")
186
186
  end
187
187
  Sass::Script::Number.new(yield(value.value), value.numerator_units, value.denominator_units)
@@ -240,7 +240,7 @@ MESSAGE
240
240
  render("%p foo\n= haml_concat 'foo'\n%p bar")
241
241
  assert false, "Expected Haml::Error"
242
242
  rescue Haml::Error => e
243
- assert_equal 2, e.backtrace[0].scan(/:(\d+)/).first.first.to_i
243
+ assert_equal 2, e.backtrace[1].scan(/:(\d+)/).first.first.to_i
244
244
  end
245
245
 
246
246
  def test_error_return_line_in_helper
@@ -69,6 +69,14 @@ class UtilTest < Test::Unit::TestCase
69
69
  enum_with_index(%w[foo bar baz]).map {|s, i| "#{s}#{i}"})
70
70
  end
71
71
 
72
+ def test_caller_info
73
+ assert_equal(["/tmp/foo.rb", 12, "fizzle"], caller_info("/tmp/foo.rb:12: in `fizzle'"))
74
+ assert_equal(["/tmp/foo.rb", 12, nil], caller_info("/tmp/foo.rb:12"))
75
+ assert_equal(["(haml)", 12, "blah"], caller_info("(haml):12: in `blah'"))
76
+ assert_equal(["", 12, "boop"], caller_info(":12: in `boop'"))
77
+ assert_equal(["/tmp/foo.rb", -12, "fizzle"], caller_info("/tmp/foo.rb:-12: in `fizzle'"))
78
+ end
79
+
72
80
  def test_def_static_method
73
81
  klass = Class.new
74
82
  def_static_method(klass, :static_method, [:arg1, :arg2],
data/test/test_helper.rb CHANGED
@@ -18,7 +18,7 @@ end
18
18
  class Test::Unit::TestCase
19
19
  def munge_filename(opts)
20
20
  return if opts[:filename]
21
- test_name = caller[1].gsub(/^.*`(?:\w+ )*(\w+)'.*$/, '\1')
21
+ test_name = Haml::Util.caller_info(caller[1])[2]
22
22
  opts[:filename] = "#{test_name}_inline.sass"
23
23
  end
24
24
 
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.58
4
+ version: 2.3.59
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan Weizenbaum
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2009-10-23 00:00:00 -04:00
13
+ date: 2009-10-25 00:00:00 -04:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency