haml-edge 2.1.18 → 2.1.19

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.1.18
1
+ 2.1.19
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.1.18
1
+ 2.1.19
data/lib/haml/buffer.rb CHANGED
@@ -19,6 +19,10 @@ module Haml
19
19
  # It's nil at the top level (see #toplevel?).
20
20
  attr_accessor :upper
21
21
 
22
+ # nil if there's no capture_haml block running,
23
+ # and the position at which it's beginning the capture if there is one.
24
+ attr_accessor :capture_position
25
+
22
26
  # See #active?
23
27
  attr_writer :active
24
28
 
@@ -193,6 +197,17 @@ RUBY
193
197
  @real_tabs += 1 unless self_closing || nuke_inner_whitespace
194
198
  end
195
199
 
200
+ # Remove the whitespace from the right side of the buffer string.
201
+ # Doesn't do anything if we're at the beginning of a capture_haml block.
202
+ def rstrip!
203
+ if capture_position.nil?
204
+ buffer.rstrip!
205
+ return
206
+ end
207
+
208
+ buffer << buffer.slice!(capture_position..-1).rstrip
209
+ end
210
+
196
211
  def self.merge_attrs(to, from)
197
212
  if to['id'] && from['id']
198
213
  to['id'] << '_' << from.delete('id')
data/lib/haml/helpers.rb CHANGED
@@ -275,6 +275,7 @@ module Haml
275
275
  with_haml_buffer(buffer) do
276
276
  position = haml_buffer.buffer.length
277
277
 
278
+ haml_buffer.capture_position = position
278
279
  block.call(*args)
279
280
 
280
281
  captured = haml_buffer.buffer.slice!(position..-1).split(/^/)
@@ -290,6 +291,8 @@ module Haml
290
291
  line[min_tabs..-1]
291
292
  end.join
292
293
  end
294
+ ensure
295
+ haml_buffer.capture_position = nil
293
296
  end
294
297
 
295
298
  def puts(*args) # :nodoc:
@@ -881,7 +881,7 @@ END
881
881
  # or the merged text
882
882
  def rstrip_buffer!
883
883
  if @to_merge.empty?
884
- push_silent("_erbout.rstrip!", false)
884
+ push_silent("_hamlout.rstrip!", false)
885
885
  @dont_tab_up_next_text = true
886
886
  return
887
887
  end
@@ -12,7 +12,8 @@ module Haml
12
12
  # template is a template object in Rails >=2.1.0,
13
13
  # a source string previously
14
14
  if template.respond_to? :source
15
- options[:filename] = template.filename
15
+ # Template has a generic identifier in Rails >=3.0.0
16
+ options[:filename] = template.respond_to?(:identifier) ? template.identifier : template.filename
16
17
  source = template.source
17
18
  else
18
19
  source = template
@@ -14,6 +14,12 @@ class HelperTest < Test::Unit::TestCase
14
14
  def setup
15
15
  @base = ActionView::Base.new
16
16
  @base.controller = ActionController::Base.new
17
+
18
+ if defined?(ActionController::Response)
19
+ # This is needed for >=3.0.0
20
+ @base.controller.response = ActionController::Response.new
21
+ end
22
+
17
23
  @base.instance_variable_set('@post', Post.new("Foo bar\nbaz"))
18
24
  end
19
25
 
@@ -61,7 +67,7 @@ class HelperTest < Test::Unit::TestCase
61
67
 
62
68
  begin
63
69
  ActionView::Base.new.render(:inline => "<%= flatten('Foo\\nBar') %>")
64
- rescue NoMethodError
70
+ rescue NoMethodError, ActionView::TemplateError
65
71
  proper_behavior = true
66
72
  end
67
73
  assert(proper_behavior)
@@ -229,5 +235,20 @@ HAML
229
235
  def test_random_class_includes_tag_helper
230
236
  assert_equal "<p>some tag content</p>", ActsLikeTag.new.to_s
231
237
  end
238
+
239
+ def test_capture_with_nuke_outer
240
+ assert_equal "<div></div>\n*<div>hi there!</div>\n", render(<<HAML)
241
+ %div
242
+ = precede("*") do
243
+ %div> hi there!
244
+ HAML
245
+
246
+ assert_equal "<div></div>\n*<div>hi there!</div>\n", render(<<HAML)
247
+ %div
248
+ = precede("*") do
249
+ = " "
250
+ %div> hi there!
251
+ HAML
252
+ end
232
253
  end
233
254
 
@@ -35,6 +35,10 @@ class DummyController
35
35
  def self.controller_path
36
36
  ''
37
37
  end
38
+
39
+ def controller_path
40
+ ''
41
+ end
38
42
  end
39
43
 
40
44
  class TemplateTest < Test::Unit::TestCase
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.1.18
4
+ version: 2.1.19
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-06-01 00:00:00 -04:00
13
+ date: 2009-06-03 00:00:00 -04:00
14
14
  default_executable:
15
15
  dependencies: []
16
16