Skip to content

Commit

Permalink
RDoc for Complex addition
Browse files Browse the repository at this point in the history
  • Loading branch information
BurdetteLamar committed Nov 21, 2023
1 parent 3313554 commit 5c1be59
Showing 1 changed file with 28 additions and 5 deletions.
33 changes: 28 additions & 5 deletions lib/json/add/complex.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,27 @@

class Complex

# Deserializes JSON string by converting Real value <tt>r</tt>, imaginary
# value <tt>i</tt>, to a Complex object.
# See #as_json.
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.
# Methods <tt>Complex#as_json</tt> and +Complex.json_create+ may be used
# to serialize and deserialize a \Complex object;
# see Marshal[https://docs.ruby-lang.org/en/master/Marshal.html].
#
# \Method <tt>Complex#as_json</tt> serializes +self+,
# returning a 2-element hash representing +self+:
#
# require 'json/add/complex'
# x = Complex(2).as_json # => {"json_class"=>"Complex", "r"=>2, "i"=>0}
# y = Complex(2.0, 4).as_json # => {"json_class"=>"Complex", "r"=>2.0, "i"=>4}
#
# \Method +JSON.create+ deserializes such a hash, returning a \Complex object:
#
# Complex.json_create(x) # => (2+0i)
# Complex.json_create(y) # => (2.0+4i)
#
def as_json(*)
{
JSON.create_id => self.class.name,
Expand All @@ -21,7 +34,17 @@ def as_json(*)
}
end

# Stores class name (Complex) along with real value <tt>r</tt> and imaginary value <tt>i</tt> as JSON string
# Returns a JSON string representing +self+:
#
# require 'json/add/complex'
# puts Complex(2).to_json
# puts Complex(2.0, 4).to_json
#
# Output:
#
# {"json_class":"Complex","r":2,"i":0}
# {"json_class":"Complex","r":2.0,"i":4}
#
def to_json(*args)
as_json.to_json(*args)
end
Expand Down

0 comments on commit 5c1be59

Please sign in to comment.