55
66class Range
77
8- # Returns a new \Range object constructed from <tt>object['a']</tt>,
9- # which must be an array of values suitable for a call to Range.new:
10- #
11- # require 'json/add/range'
12- # Range.json_create({"a"=>[1, 4]}) # => 1..4
13- # Range.json_create({"a"=>[1, 4, true]}) # => 1...4
14- # Range.json_create({"a" => ['a', 'd']}) # => "a".."d"
15- #
8+ # See #as_json.
169 def self . json_create ( object )
1710 new ( *object [ 'a' ] )
1811 end
1912
20- # Returns a 2-element hash representing +self+:
13+ # Methods <tt>Range#as_json</tt> and +Range.json_create+ may be used
14+ # to serialize and deserialize a \Range object;
15+ # see Marshal[https://docs.ruby-lang.org/en/master/Marshal.html].
16+ #
17+ # \Method <tt>Range#as_json</tt> serializes +self+,
18+ # returning a 2-element hash representing +self+:
2119 #
2220 # require 'json/add/range'
23- # (1..4).as_json # => {"json_class"=>"Range", "a"=>[1, 4, false]}
24- # (1...4).as_json # => {"json_class"=>"Range", "a"=>[1, 4, true]}
25- # ('a'..'d').as_json # => {"json_class"=>"Range", "a"=>["a", "d", false]}
21+ # x = (1..4).as_json # => {"json_class"=>"Range", "a"=>[1, 4, false]}
22+ # y = (1...4).as_json # => {"json_class"=>"Range", "a"=>[1, 4, true]}
23+ # z = ('a'..'d').as_json # => {"json_class"=>"Range", "a"=>["a", "d", false]}
24+ #
25+ # \Method +JSON.create+ deserializes such a hash, returning a \Range object:
26+ #
27+ # Range.json_create(x) # => 1..4
28+ # Range.json_create(y) # => 1...4
29+ # Range.json_create(z) # => "a".."d"
2630 #
2731 def as_json ( *)
2832 {
@@ -34,9 +38,15 @@ def as_json(*)
3438 # Returns a JSON string representing +self+:
3539 #
3640 # require 'json/add/range'
37- # (1..4).to_json # => "{\"json_class\":\"Range\",\"a\":[1,4,false]}"
38- # (1...4).to_json # => "{\"json_class\":\"Range\",\"a\":[1,4,true]}"
39- # ('a'..'d').to_json # => "{\"json_class\":\"Range\",\"a\":[\"a\",\"d\",false]}"
41+ # puts (1..4).to_json
42+ # puts (1...4).to_json
43+ # puts ('a'..'d').to_json
44+ #
45+ # Output:
46+ #
47+ # {"json_class":"Range","a":[1,4,false]}
48+ # {"json_class":"Range","a":[1,4,true]}
49+ # {"json_class":"Range","a":["a","d",false]}
4050 #
4151 def to_json ( *args )
4252 as_json . to_json ( *args )
0 commit comments