aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib/active_support/json
diff options
context:
space:
mode:
authorRick Olson <technoweenie@gmail.com>2008-04-08 03:45:26 +0000
committerRick Olson <technoweenie@gmail.com>2008-04-08 03:45:26 +0000
commit605196c4483bbba932804e78cd6d4166f4e29bbb (patch)
tree4f682a944ab11aabaf8b9208ff571ebe4aecbd19 /activesupport/lib/active_support/json
parent4b68982f649c5b230b3e99954a71404c7cec03c7 (diff)
downloadrails-605196c4483bbba932804e78cd6d4166f4e29bbb.tar.gz
rails-605196c4483bbba932804e78cd6d4166f4e29bbb.tar.bz2
rails-605196c4483bbba932804e78cd6d4166f4e29bbb.zip
Add config.active_support.escape_html_entities_in_json to allow disabling of html entity escaping. [rick]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@9238 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'activesupport/lib/active_support/json')
-rw-r--r--activesupport/lib/active_support/json/encoders/string.rb6
-rw-r--r--activesupport/lib/active_support/json/encoding.rb1
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')