diff options
Diffstat (limited to 'activesupport/lib/active_support/json')
-rw-r--r-- | activesupport/lib/active_support/json/encoders/string.rb | 6 | ||||
-rw-r--r-- | activesupport/lib/active_support/json/encoding.rb | 1 |
2 files changed, 5 insertions, 2 deletions
diff --git a/activesupport/lib/active_support/json/encoders/string.rb b/activesupport/lib/active_support/json/encoders/string.rb index 20ca91f9aa..5ef797955a 100644 --- a/activesupport/lib/active_support/json/encoders/string.rb +++ b/activesupport/lib/active_support/json/encoders/string.rb @@ -1,6 +1,8 @@ module ActiveSupport module JSON module Encoding + mattr_accessor :escape_regex + ESCAPED_CHARS = { "\010" => '\b', "\f" => '\f', @@ -17,9 +19,11 @@ module ActiveSupport end end +ActiveSupport.escape_html_entities_in_json = true + class String def to_json(options = nil) #:nodoc: - json = '"' + gsub(/[\010\f\n\r\t"\\><&]/) { |s| + json = '"' + gsub(ActiveSupport::JSON::Encoding.escape_regex) { |s| ActiveSupport::JSON::Encoding::ESCAPED_CHARS[s] } json.force_encoding('ascii-8bit') if respond_to?(:force_encoding) diff --git a/activesupport/lib/active_support/json/encoding.rb b/activesupport/lib/active_support/json/encoding.rb index adfbfd5f72..8650e34228 100644 --- a/activesupport/lib/active_support/json/encoding.rb +++ b/activesupport/lib/active_support/json/encoding.rb @@ -1,5 +1,4 @@ require 'active_support/json/variable' - require 'active_support/json/encoders/object' # Require explicitly for rdoc. Dir["#{File.dirname(__FILE__)}/encoders/**/*.rb"].each do |file| basename = File.basename(file, '.rb') |