Froze rails gems
[depot.git] / vendor / rails / activesupport / lib / active_support / json / encoders / string.rb
diff --git a/vendor/rails/activesupport/lib/active_support/json/encoders/string.rb b/vendor/rails/activesupport/lib/active_support/json/encoders/string.rb
new file mode 100644 (file)
index 0000000..5ef7979
--- /dev/null
@@ -0,0 +1,36 @@
+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 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\&')
+    } + '"'
+  end
+end