Permalink
Browse files

Merge pull request #2618 from FLOChip/unicode_j

fix escape_javascript for unicode character \u2028.
  • Loading branch information...
2 parents 35c8a89 + f6ceb94 commit aae5ebf3eb7d17e668bb05f9c859e239f31b9f50 @tenderlove tenderlove committed Aug 22, 2011
@@ -10,15 +10,16 @@ module JavaScriptHelper
"\n" => '\n',
"\r" => '\n',
'"' => '\\"',
- "'" => "\\'" }
+ "'" => "\\'",
+ "\342\200\250" => '
' }
# Escape carrier returns and single and double quotes for JavaScript segments.
# Also available through the alias j(). This is particularly helpful in JavaScript responses, like:
#
# $('some_element').replaceWith('<%=j render 'some/element_template' %>');
def escape_javascript(javascript)
if javascript
- result = javascript.gsub(/(\\|<\/|\r\n|[\n\r"'])/) {|match| JS_ESCAPE_MAP[match] }
+ result = javascript.gsub(/(\\|<\/|\r\n|\342\200\250|[\n\r"'])/) {|match| JS_ESCAPE_MAP[match] }
javascript.html_safe? ? result.html_safe : result
else
''
@@ -27,6 +27,7 @@ def test_escape_javascript
assert_equal %(This \\"thing\\" is really\\n netos\\'), escape_javascript(%(This "thing" is really\n netos'))
assert_equal %(backslash\\\\test), escape_javascript( %(backslash\\test) )
assert_equal %(dont <\\/close> tags), escape_javascript(%(dont </close> tags))
+ assert_equal %(unicode &#x2028; newline), escape_javascript(%(unicode \342\200\250 newline))
assert_equal %(dont <\\/close> tags), j(%(dont </close> tags))
end

0 comments on commit aae5ebf

Please sign in to comment.