diff options
Diffstat (limited to 'lib/json/add')
-rw-r--r-- | lib/json/add/complex.rb | 8 | ||||
-rw-r--r-- | lib/json/add/rational.rb | 5 | ||||
-rw-r--r-- | lib/json/add/time.rb | 2 |
3 files changed, 13 insertions, 2 deletions
diff --git a/lib/json/add/complex.rb b/lib/json/add/complex.rb index d7ebebf..2723f60 100644 --- a/lib/json/add/complex.rb +++ b/lib/json/add/complex.rb @@ -4,10 +4,15 @@ end defined?(::Complex) or require 'complex' class Complex + + # Deserializes JSON string by converting Real value <tt>r</tt>, imaginary + # value <tt>i</tt>, to a Complex object. def self.json_create(object) Complex(object['r'], object['i']) 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, @@ -16,7 +21,8 @@ class Complex } end + # Stores class name (Complex) along with real value <tt>r</tt> and imaginary value <tt>i</tt> as JSON string def to_json(*) as_json.to_json end -end +end
\ No newline at end of file diff --git a/lib/json/add/rational.rb b/lib/json/add/rational.rb index 867cd92..ee39c20 100644 --- a/lib/json/add/rational.rb +++ b/lib/json/add/rational.rb @@ -4,10 +4,14 @@ end defined?(::Rational) or require 'rational' class Rational + # Deserializes JSON string by converting numerator value <tt>n</tt>, + # denominator value <tt>d</tt>, to a Rational object. def self.json_create(object) Rational(object['n'], object['d']) 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, @@ -16,6 +20,7 @@ class Rational } end + # Stores class name (Rational) along with numerator value <tt>n</tt> and denominator value <tt>d</tt> as JSON string def to_json(*) as_json.to_json end diff --git a/lib/json/add/time.rb b/lib/json/add/time.rb index 338209d..d983467 100644 --- a/lib/json/add/time.rb +++ b/lib/json/add/time.rb @@ -10,7 +10,7 @@ class Time if usec = object.delete('u') # used to be tv_usec -> tv_nsec object['n'] = usec * 1000 end - if instance_methods.include?(:tv_nsec) + if method_defined?(:tv_nsec) at(object['s'], Rational(object['n'], 1000)) else at(object['s'], object['n'] / 1000) |