eaiovnaovbqoebvqoeavibavo
range.rb 0000644 00000001432 14763451410 0006172 0 ustar 00 unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED
require 'json'
end
# Range serialization/deserialization
class Range
# Deserializes JSON string by constructing new Range object with arguments
# a serialized by to_json.
def self.json_create(object)
new(*object['a'])
end
# Returns a hash, that will be turned into a JSON object and represent this
# object.
def as_json(*)
{
JSON.create_id => self.class.name,
'a' => [ first, last, exclude_end? ]
}
end
# Stores class name (Range) with JSON array of arguments a which
# include first (integer), last (integer), and
# exclude_end? (boolean) as JSON string.
def to_json(*args)
as_json.to_json(*args)
end
end
complex.rb 0000644 00000000616 14763451410 0006550 0 ustar 00 unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED
require 'json'
end
defined?(::Complex) or require 'complex'
class Complex
def self.json_create(object)
Complex(object['r'], object['i'])
end
def as_json(*)
{
JSON.create_id => self.class.name,
'r' => real,
'i' => imag,
}
end
def to_json(*)
as_json.to_json
end
end
struct.rb 0000644 00000001433 14763451410 0006423 0 ustar 00 unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED
require 'json'
end
# Struct serialization/deserialization
class Struct
# Deserializes JSON string by constructing new Struct object with values
# v serialized by to_json.
def self.json_create(object)
new(*object['v'])
end
# Returns a hash, that will be turned into a JSON object and represent this
# object.
def as_json(*)
klass = self.class.name
klass.to_s.empty? and raise JSON::JSONError, "Only named structs are supported!"
{
JSON.create_id => klass,
'v' => values,
}
end
# Stores class name (Struct) with Struct values v as a JSON string.
# Only named structs are supported.
def to_json(*args)
as_json.to_json(*args)
end
end
bigdecimal.rb 0000644 00000001070 14763451410 0007154 0 ustar 00 unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED
require 'json'
end
defined?(::BigDecimal) or require 'bigdecimal'
class BigDecimal
# Import a JSON Marshalled object.
#
# method used for JSON marshalling support.
def self.json_create(object)
BigDecimal._load object['b']
end
# Marshal the object to JSON.
#
# method used for JSON marshalling support.
def as_json(*)
{
JSON.create_id => self.class.name,
'b' => _dump,
}
end
# return the JSON value
def to_json(*)
as_json.to_json
end
end
time.rb 0000644 00000002011 14763451410 0006026 0 ustar 00 unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED
require 'json'
end
# Time serialization/deserialization
class Time
# Deserializes JSON string by converting time since epoch to Time
def self.json_create(object)
if usec = object.delete('u') # used to be tv_usec -> tv_nsec
object['n'] = usec * 1000
end
if instance_methods.include?(:tv_nsec)
at(object['s'], Rational(object['n'], 1000))
else
at(object['s'], object['n'] / 1000)
end
end
# Returns a hash, that will be turned into a JSON object and represent this
# object.
def as_json(*)
nanoseconds = [ tv_usec * 1000 ]
respond_to?(:tv_nsec) and nanoseconds << tv_nsec
nanoseconds = nanoseconds.max
{
JSON.create_id => self.class.name,
's' => tv_sec,
'n' => nanoseconds,
}
end
# Stores class name (Time) with number of seconds since epoch and number of
# microseconds for Time as JSON string
def to_json(*args)
as_json.to_json(*args)
end
end
core.rb 0000644 00000000476 14763451410 0006035 0 ustar 00 # This file requires the implementations of ruby core's custom objects for
# serialisation/deserialisation.
require 'json/add/date'
require 'json/add/date_time'
require 'json/add/exception'
require 'json/add/range'
require 'json/add/regexp'
require 'json/add/struct'
require 'json/add/symbol'
require 'json/add/time'
symbol.rb 0000644 00000001157 14763451410 0006407 0 ustar 00 unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED
require 'json'
end
# Symbol serialization/deserialization
class Symbol
# Returns a hash, that will be turned into a JSON object and represent this
# object.
def as_json(*)
{
JSON.create_id => self.class.name,
's' => to_s,
}
end
# Stores class name (Symbol) with String representation of Symbol as a JSON string.
def to_json(*a)
as_json.to_json(*a)
end
# Deserializes JSON string by converting the string value stored in the object to a Symbol
def self.json_create(o)
o['s'].to_sym
end
end
regexp.rb 0000644 00000001401 14763451410 0006364 0 ustar 00 unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED
require 'json'
end
# Regexp serialization/deserialization
class Regexp
# Deserializes JSON string by constructing new Regexp object with source
# s (Regexp or String) and options o serialized by
# to_json
def self.json_create(object)
new(object['s'], object['o'])
end
# Returns a hash, that will be turned into a JSON object and represent this
# object.
def as_json(*)
{
JSON.create_id => self.class.name,
'o' => options,
's' => source,
}
end
# Stores class name (Regexp) with options o and source s
# (Regexp or String) as JSON string
def to_json(*)
as_json.to_json
end
end
date_time.rb 0000644 00000002473 14763451410 0007037 0 ustar 00 unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED
require 'json'
end
require 'date'
# DateTime serialization/deserialization
class DateTime
# Deserializes JSON string by converting year y, month m,
# day d, hour H, minute M, second S,
# offset of and Day of Calendar Reform sg to DateTime.
def self.json_create(object)
args = object.values_at('y', 'm', 'd', 'H', 'M', 'S')
of_a, of_b = object['of'].split('/')
if of_b and of_b != '0'
args << Rational(of_a.to_i, of_b.to_i)
else
args << of_a
end
args << object['sg']
civil(*args)
end
alias start sg unless method_defined?(:start)
# Returns a hash, that will be turned into a JSON object and represent this
# object.
def as_json(*)
{
JSON.create_id => self.class.name,
'y' => year,
'm' => month,
'd' => day,
'H' => hour,
'M' => min,
'S' => sec,
'of' => offset.to_s,
'sg' => start,
}
end
# Stores class name (DateTime) with Julian year y, month m,
# day d, hour H, minute M, second S,
# offset of and Day of Calendar Reform sg as JSON string
def to_json(*args)
as_json.to_json(*args)
end
end
exception.rb 0000644 00000001453 14763451410 0007077 0 ustar 00 unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED
require 'json'
end
# Exception serialization/deserialization
class Exception
# Deserializes JSON string by constructing new Exception object with message
# m and backtrace b serialized with to_json
def self.json_create(object)
result = new(object['m'])
result.set_backtrace object['b']
result
end
# Returns a hash, that will be turned into a JSON object and represent this
# object.
def as_json(*)
{
JSON.create_id => self.class.name,
'm' => message,
'b' => backtrace,
}
end
# Stores class name (Exception) with message m and backtrace array
# b as JSON string
def to_json(*args)
as_json.to_json(*args)
end
end
date.rb 0000644 00000001570 14763451410 0006016 0 ustar 00 unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED
require 'json'
end
require 'date'
# Date serialization/deserialization
class Date
# Deserializes JSON string by converting Julian year y, month
# m, day d and Day of Calendar Reform sg to Date.
def self.json_create(object)
civil(*object.values_at('y', 'm', 'd', 'sg'))
end
alias start sg unless method_defined?(:start)
# Returns a hash, that will be turned into a JSON object and represent this
# object.
def as_json(*)
{
JSON.create_id => self.class.name,
'y' => year,
'm' => month,
'd' => day,
'sg' => start,
}
end
# Stores class name (Date) with Julian year y, month m, day
# d and Day of Calendar Reform sg as JSON string
def to_json(*args)
as_json.to_json(*args)
end
end
ostruct.rb 0000644 00000001452 14763451410 0006603 0 ustar 00 unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED
require 'json'
end
require 'ostruct'
# OpenStruct serialization/deserialization
class OpenStruct
# Deserializes JSON string by constructing new Struct object with values
# v serialized by to_json.
def self.json_create(object)
new(object['t'] || object[:t])
end
# Returns a hash, that will be turned into a JSON object and represent this
# object.
def as_json(*)
klass = self.class.name
klass.to_s.empty? and raise JSON::JSONError, "Only named structs are supported!"
{
JSON.create_id => klass,
't' => table,
}
end
# Stores class name (OpenStruct) with this struct's values v as a
# JSON string.
def to_json(*args)
as_json.to_json(*args)
end
end
rational.rb 0000644 00000000636 14763451410 0006714 0 ustar 00 unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED
require 'json'
end
defined?(::Rational) or require 'rational'
class Rational
def self.json_create(object)
Rational(object['n'], object['d'])
end
def as_json(*)
{
JSON.create_id => self.class.name,
'n' => numerator,
'd' => denominator,
}
end
def to_json(*)
as_json.to_json
end
end