aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib/active_support/json
diff options
context:
space:
mode:
authorJeremy Kemper <jeremy@bitsweat.net>2009-04-26 15:53:32 -0700
committerJeremy Kemper <jeremy@bitsweat.net>2009-04-26 15:53:59 -0700
commit4a8d2ef0a552e04d6cb35b91e23dd3979783b586 (patch)
tree90cd611404158446e91f16b3c712540c62f803da /activesupport/lib/active_support/json
parent5577d561f9253a6782ac82361520890c37bce180 (diff)
downloadrails-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.rb33
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