Class: ActiveSupport::JSON::Encoding::Encoder

Inherits:
Object
  • Object
show all
Defined in:
activesupport/lib/active_support/json/encoding.rb

Instance Attribute Summary (collapse)

Instance Method Summary (collapse)

Constructor Details

- (Encoder) initialize(options = nil)

Returns a new instance of Encoder



40
41
42
43
# File 'activesupport/lib/active_support/json/encoding.rb', line 40

def initialize(options = nil)
  @options = options
  @seen = []
end

Instance Attribute Details

- (Object) options (readonly)

Returns the value of attribute options



38
39
40
# File 'activesupport/lib/active_support/json/encoding.rb', line 38

def options
  @options
end

Instance Method Details

- (Object) as_json(value)

like encode, but only calls as_json, without encoding to string



53
54
55
56
57
# File 'activesupport/lib/active_support/json/encoding.rb', line 53

def as_json(value)
  check_for_circular_references(value) do
    value.as_json(options_for(value))
  end
end

- (Object) encode(value, use_options = true)



45
46
47
48
49
50
# File 'activesupport/lib/active_support/json/encoding.rb', line 45

def encode(value, use_options = true)
  check_for_circular_references(value) do
    jsonified = use_options ? value.as_json(options_for(value)) : value.as_json
    jsonified.encode_json(self)
  end
end

- (Object) escape(string)



68
69
70
# File 'activesupport/lib/active_support/json/encoding.rb', line 68

def escape(string)
  Encoding.escape(string)
end

- (Object) options_for(value)



59
60
61
62
63
64
65
66
# File 'activesupport/lib/active_support/json/encoding.rb', line 59

def options_for(value)
  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)
  else
    options
  end
end