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

#initialize(options = nil) ⇒ Encoder

Returns a new instance of Encoder


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

def initialize(options = nil)
  @options = options || {}
  @seen = Set.new
end

Instance Attribute Details

#optionsObject (readonly)

Returns the value of attribute options


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

def options
  @options
end

Instance Method Details

#as_json(value, use_options = true) ⇒ Object

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


57
58
59
60
61
# File 'activesupport/lib/active_support/json/encoding.rb', line 57

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

#encode(value, use_options = true) ⇒ Object


49
50
51
52
53
54
# File 'activesupport/lib/active_support/json/encoding.rb', line 49

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

#escape(string) ⇒ Object


73
74
75
# File 'activesupport/lib/active_support/json/encoding.rb', line 73

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

#options_for(value) ⇒ Object


63
64
65
66
67
68
69
70
71
# File 'activesupport/lib/active_support/json/encoding.rb', line 63

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.dup
  end
end