/usr/lib/ruby/vendor_ruby/active_support/json/decoding.rb is in ruby-activesupport-3.2 3.2.6-6+deb7u1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | require 'active_support/core_ext/module/attribute_accessors'
require 'active_support/core_ext/module/delegation'
require 'multi_json'
module ActiveSupport
# Look for and parse json strings that look like ISO 8601 times.
mattr_accessor :parse_json_times
module JSON
class << self
def decode(json, options ={})
# Can't reliably detect whether MultiJson responds to load, since it's
# a reserved word. Use adapter as a proxy for new features.
data = if MultiJson.respond_to?(:adapter)
MultiJson.load(json, options)
else
MultiJson.decode(json, options)
end
if ActiveSupport.parse_json_times
convert_dates_from(data)
else
data
end
end
def engine
if MultiJson.respond_to?(:adapter)
MultiJson.adapter
else
MultiJson.engine
end
end
alias :backend :engine
def engine=(name)
if MultiJson.respond_to?(:use)
MultiJson.use name
else
MultiJson.engine = name
end
end
alias :backend= :engine=
def with_backend(name)
old_backend, self.backend = backend, name
yield
ensure
self.backend = old_backend
end
def parse_error
MultiJson::DecodeError
end
private
def convert_dates_from(data)
case data
when nil
nil
when DATE_REGEX
begin
DateTime.parse(data)
rescue ArgumentError
data
end
when Array
data.map! { |d| convert_dates_from(d) }
when Hash
data.each do |key, value|
data[key] = convert_dates_from(value)
end
else
data
end
end
end
end
end
|