Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Reverted affe501 and added more JSON decoding tests.

Works on Ruby 1.8 and 1.9

[#1100 state:resolved]

Signed-off-by: Jeremy Kemper <jeremy@bitsweat.net>
  • Loading branch information...
commit 7b382cb9e5c5706f8d15216159a2873375915c9c 1 parent f2c7508
@Bira Bira authored jeremy committed
View
11 activesupport/lib/active_support/json/decoding.rb
@@ -59,7 +59,16 @@ def convert_json_to_yaml(json) #:nodoc:
output = []
left_pos.each_with_index do |left, i|
scanner.pos = left.succ
- output << scanner.peek(right_pos[i] - scanner.pos + 1)
+ output << scanner.peek(right_pos[i] - scanner.pos + 1).gsub(/\\([\\\/]|u[[:xdigit:]]{4})/) do
+ ustr = $1
+ if ustr.starts_with?('u')
+ [ustr[1..-1].to_i(16)].pack("U")
+ elsif ustr == '\\'
+ '\\\\'
+ else
+ ustr
+ end
+ end
end
output = output * " "
View
4 activesupport/test/json/decoding_test.rb
@@ -30,7 +30,9 @@ class TestJSONDecoding < Test::Unit::TestCase
%(false) => false,
%q("http:\/\/test.host\/posts\/1") => "http://test.host/posts/1",
%q("\u003cunicode\u0020escape\u003e") => "<unicode escape>",
- %q("\\\\u0020skip double backslashes") => "\\u0020skip double backslashes"
+ %q("\\\\u0020skip double backslashes") => "\\u0020skip double backslashes",
+ %q({a: "\u003cbr /\u003e"}) => {'a' => "<br />"},
+ %q({b:["\u003ci\u003e","\u003cb\u003e","\u003cu\u003e"]}) => {'b' => ["<i>","<b>","<u>"]}
}
TESTS.each do |json, expected|
Please sign in to comment.
Something went wrong with that request. Please try again.