diff options
author | Jeremy Kemper <jeremy@bitsweat.net> | 2009-04-26 15:53:32 -0700 |
---|---|---|
committer | Jeremy Kemper <jeremy@bitsweat.net> | 2009-04-26 15:53:59 -0700 |
commit | 4a8d2ef0a552e04d6cb35b91e23dd3979783b586 (patch) | |
tree | 90cd611404158446e91f16b3c712540c62f803da /activesupport/lib/active_support/json | |
parent | 5577d561f9253a6782ac82361520890c37bce180 (diff) | |
download | rails-4a8d2ef0a552e04d6cb35b91e23dd3979783b586.tar.gz rails-4a8d2ef0a552e04d6cb35b91e23dd3979783b586.tar.bz2 rails-4a8d2ef0a552e04d6cb35b91e23dd3979783b586.zip |
Extract json string escaping
Diffstat (limited to 'activesupport/lib/active_support/json')
-rw-r--r-- | activesupport/lib/active_support/json/encoders/string.rb | 33 |
1 files changed, 1 insertions, 32 deletions
diff --git a/activesupport/lib/active_support/json/encoders/string.rb b/activesupport/lib/active_support/json/encoders/string.rb index da16111fd5..ea82ca29fb 100644 --- a/activesupport/lib/active_support/json/encoders/string.rb +++ b/activesupport/lib/active_support/json/encoders/string.rb @@ -1,36 +1,5 @@ -module ActiveSupport - module JSON - module Encoding - mattr_accessor :escape_regex - - ESCAPED_CHARS = { - "\010" => '\b', - "\f" => '\f', - "\n" => '\n', - "\r" => '\r', - "\t" => '\t', - '"' => '\"', - '\\' => '\\\\', - '>' => '\u003E', - '<' => '\u003C', - '&' => '\u0026' - } - end - end -end - -ActiveSupport.escape_html_entities_in_json = true - class String def rails_to_json(options = nil) #:nodoc: - json = '"' + gsub(ActiveSupport::JSON::Encoding.escape_regex) { |s| - ActiveSupport::JSON::Encoding::ESCAPED_CHARS[s] - } - json.force_encoding('ascii-8bit') if respond_to?(:force_encoding) - json.gsub(/([\xC0-\xDF][\x80-\xBF]| - [\xE0-\xEF][\x80-\xBF]{2}| - [\xF0-\xF7][\x80-\xBF]{3})+/nx) { |s| - s.unpack("U*").pack("n*").unpack("H*")[0].gsub(/.{4}/, '\\\\u\&') - } + '"' + ActiveSupport::JSON::Encoding.escape(self) end end |