mirror of
https://github.com/haml/haml.git
synced 2022-11-09 12:33:31 -05:00
[Haml] Use _hamlout.buffer rather than _erbout to concatenate to.
Using _erbout means that if _hamlout.buffer is set to something else,
e.g. with ActionView's with_output_buffer, the Haml text is
concatenated onto the wrong buffer.
This is basically reverting eb1e034734
.
This commit is contained in:
parent
43f817b86f
commit
169e9e5fb8
3 changed files with 27 additions and 4 deletions
|
@ -3,6 +3,12 @@
|
||||||
* Table of contents
|
* Table of contents
|
||||||
{:toc}
|
{:toc}
|
||||||
|
|
||||||
|
## 2.2.9 (Unreleased)
|
||||||
|
|
||||||
|
* Fixed a bug where Haml's text was concatenated to the wrong buffer
|
||||||
|
under certain circumstances.
|
||||||
|
This was mostly an issue under Rails when using methods like `capture`.
|
||||||
|
|
||||||
## [2.2.8](http://github.com/nex3/haml/commit/2.2.8)
|
## [2.2.8](http://github.com/nex3/haml/commit/2.2.8)
|
||||||
|
|
||||||
* Fixed a potential XSS issue with HTML escaping and wacky Unicode nonsense.
|
* Fixed a potential XSS issue with HTML escaping and wacky Unicode nonsense.
|
||||||
|
|
|
@ -313,7 +313,7 @@ END
|
||||||
|
|
||||||
@precompiled <<
|
@precompiled <<
|
||||||
if @options[:ugly]
|
if @options[:ugly]
|
||||||
"_erbout << \"#{text}\";"
|
"_hamlout.buffer << \"#{text}\";"
|
||||||
else
|
else
|
||||||
"_hamlout.push_text(\"#{text}\", #{tab_change}, #{@dont_tab_up_next_text.inspect});"
|
"_hamlout.push_text(\"#{text}\", #{tab_change}, #{@dont_tab_up_next_text.inspect});"
|
||||||
end
|
end
|
||||||
|
@ -375,7 +375,7 @@ END
|
||||||
|
|
||||||
push_silent "haml_temp = #{text}"
|
push_silent "haml_temp = #{text}"
|
||||||
newline_now
|
newline_now
|
||||||
push_and_tabulate([:loud, "_erbout << #{no_format ? "#{output_temp}.to_s;" : out}",
|
push_and_tabulate([:loud, "_hamlout.buffer << #{no_format ? "#{output_temp}.to_s;" : out}",
|
||||||
!(opts[:in_tag] || opts[:nuke_inner_whitespace] || @options[:ugly])])
|
!(opts[:in_tag] || opts[:nuke_inner_whitespace] || @options[:ugly])])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -84,8 +84,8 @@ class TemplateTest < Test::Unit::TestCase
|
||||||
base
|
base
|
||||||
end
|
end
|
||||||
|
|
||||||
def render(text)
|
def render(text, opts = {})
|
||||||
Haml::Engine.new(text).to_html(@base)
|
Haml::Engine.new(text, opts).to_html(@base)
|
||||||
end
|
end
|
||||||
|
|
||||||
def load_result(name)
|
def load_result(name)
|
||||||
|
@ -184,6 +184,23 @@ class TemplateTest < Test::Unit::TestCase
|
||||||
Haml::Template.options = {}
|
Haml::Template.options = {}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_with_output_buffer_with_ugly
|
||||||
|
assert_equal(<<HTML, render(<<HAML, :ugly => true))
|
||||||
|
<p>
|
||||||
|
foo
|
||||||
|
baz
|
||||||
|
</p>
|
||||||
|
HTML
|
||||||
|
%p
|
||||||
|
foo
|
||||||
|
- with_output_buffer do
|
||||||
|
bar
|
||||||
|
= "foo".gsub(/./) do |s|
|
||||||
|
- s.ord
|
||||||
|
baz
|
||||||
|
HAML
|
||||||
|
end
|
||||||
|
|
||||||
def test_exceptions_should_work_correctly
|
def test_exceptions_should_work_correctly
|
||||||
begin
|
begin
|
||||||
render("- raise 'oops!'")
|
render("- raise 'oops!'")
|
||||||
|
|
Loading…
Add table
Reference in a new issue