Skip to content

Commit

Permalink
Merge pull request #1640 from sikachu/3-0-9-render-inline
Browse files Browse the repository at this point in the history
Render inline fix for 3-0-9
  • Loading branch information
tenderlove committed Jun 10, 2011
2 parents 66ec7e8 + fb706c7 commit f169dab
Show file tree
Hide file tree
Showing 5 changed files with 18 additions and 1 deletion.
2 changes: 2 additions & 0 deletions actionpack/CHANGELOG
@@ -1,5 +1,7 @@
*Rails 3.0.9 (unreleased)*

* json_escape will now return a SafeBuffer string if it receives SafeBuffer string [tenderlove]

* Make sure escape_js returns SafeBuffer string if it receives SafeBuffer string [Prem Sichanugrist]

* Fix text helpers to work correctly with the new SafeBuffer restriction [Paul Gallagher, Arun Agrawal, Prem Sichanugrist]
Expand Down
2 changes: 1 addition & 1 deletion actionpack/lib/action_view/helpers/number_helper.rb
Expand Up @@ -213,7 +213,7 @@ def number_with_delimiter(number, options = {})
defaults = I18n.translate(:'number.format', :locale => options[:locale], :default => {})
options = options.reverse_merge(defaults)

parts = number.to_s.split('.')
parts = number.to_s.to_str.split('.')
parts[0].gsub!(/(\d)(?=(\d\d\d)+(?!\d))/, "\\1#{options[:delimiter]}")
parts.join(options[:separator]).html_safe

Expand Down
3 changes: 3 additions & 0 deletions actionpack/lib/action_view/template.rb
Expand Up @@ -192,6 +192,9 @@ def compile(locals, view, mod)
locals_code = locals.keys.map! { |key| "#{key} = local_assigns[:#{key}];" }.join

if source.encoding_aware?
# Avoid performing in-place mutation for SafeBuffer
@source = source.to_str if source.html_safe?

# Look for # encoding: *. If we find one, we'll encode the
# String in that encoding, otherwise, we'll use the
# default external encoding.
Expand Down
7 changes: 7 additions & 0 deletions actionpack/test/template/number_helper_test.rb
Expand Up @@ -280,32 +280,39 @@ def test_number_helpers_outputs_are_html_safe
assert number_to_human(1).html_safe?
assert !number_to_human("<script></script>").html_safe?
assert number_to_human("asdf".html_safe).html_safe?
assert number_to_human("1".html_safe).html_safe?

assert number_to_human_size(1).html_safe?
assert number_to_human_size(1000000).html_safe?
assert !number_to_human_size("<script></script>").html_safe?
assert number_to_human_size("asdf".html_safe).html_safe?
assert number_to_human_size("1".html_safe).html_safe?

assert number_with_precision(1, :strip_insignificant_zeros => false).html_safe?
assert number_with_precision(1, :strip_insignificant_zeros => true).html_safe?
assert !number_with_precision("<script></script>").html_safe?
assert number_with_precision("asdf".html_safe).html_safe?
assert number_with_precision("1".html_safe).html_safe?

assert number_to_currency(1).html_safe?
assert !number_to_currency("<script></script>").html_safe?
assert number_to_currency("asdf".html_safe).html_safe?
assert number_to_currency("1".html_safe).html_safe?

assert number_to_percentage(1).html_safe?
assert !number_to_percentage("<script></script>").html_safe?
assert number_to_percentage("asdf".html_safe).html_safe?
assert number_to_percentage("1".html_safe).html_safe?

assert number_to_phone(1).html_safe?
assert !number_to_phone("<script></script>").html_safe?
assert number_to_phone("asdf".html_safe).html_safe?
assert number_to_phone("1".html_safe).html_safe?

assert number_with_delimiter(1).html_safe?
assert !number_with_delimiter("<script></script>").html_safe?
assert number_with_delimiter("asdf".html_safe).html_safe?
assert number_with_delimiter("1".html_safe).html_safe?
end

def test_number_helpers_should_raise_error_if_invalid_when_specified
Expand Down
5 changes: 5 additions & 0 deletions actionpack/test/template/template_test.rb
Expand Up @@ -128,5 +128,10 @@ def with_external_encoding(encoding)
ensure
Encoding.default_external = old
end

def test_render_inline_safebuffer_should_not_raise_error
@template = new_template("Hello".html_safe)
render
end
end
end

0 comments on commit f169dab

Please sign in to comment.