Merge pull request #8815 from bogdan/simplified-to-json-args

AS JSON encoder: remove monkey patch of Array
This commit is contained in:
Steve Klabnik 2013-02-24 20:29:26 -08:00
commit 15d693df93
1 changed files with 8 additions and 15 deletions

View File

@ -38,7 +38,6 @@ module ActiveSupport
class CircularReferenceError < StandardError; end
class Encoder
attr_reader :options
def initialize(options = nil)
@options = options || {}
@ -63,9 +62,9 @@ module ActiveSupport
if value.is_a?(Array) || value.is_a?(Hash)
# hashes and arrays need to get encoder in the options, so that
# they can detect circular references.
options.merge(:encoder => self)
@options.merge(:encoder => self)
else
options.dup
@options.dup
end
end
@ -252,18 +251,6 @@ class Regexp
end
module Enumerable
def as_json(options = nil) #:nodoc:
to_a.as_json(options)
end
end
class Range
def as_json(options = nil) #:nodoc:
to_s
end
end
class Array
def as_json(options = nil) #:nodoc:
# use encoder as a proxy to call as_json on all elements, to protect from circular references
encoder = options && options[:encoder] || ActiveSupport::JSON::Encoding::Encoder.new(options)
@ -276,6 +263,12 @@ class Array
end
end
class Range
def as_json(options = nil) #:nodoc:
to_s
end
end
class Hash
def as_json(options = nil) #:nodoc:
# create a subset of the hash by applying :only or :except