ruby-serial 1.0.1.20130709 → 1.0.2.20130725
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/AUTHORS +1 -0
- data/ChangeLog +5 -0
- data/ReleaseInfo +1 -1
- data/lib/ruby-serial/common.rb +1 -0
- data/lib/ruby-serial/versions/1/deserializer.rb +5 -2
- data/lib/ruby-serial/versions/1/serializer.rb +14 -1
- metadata +2 -2
data/AUTHORS
CHANGED
data/ChangeLog
CHANGED
data/ReleaseInfo
CHANGED
data/lib/ruby-serial/common.rb
CHANGED
@@ -52,6 +52,9 @@ module RubySerial
|
|
52
52
|
return decoded_obj[OBJECT_CONTENT_REFERENCE].to_sym
|
53
53
|
elsif (decoded_obj[OBJECT_CLASSNAME_REFERENCE] == CLASS_ID_ENCODING)
|
54
54
|
return Encoding::find(decoded_obj[OBJECT_CONTENT_REFERENCE])
|
55
|
+
elsif (decoded_obj[OBJECT_CLASSNAME_REFERENCE] == CLASS_ID_RANGE)
|
56
|
+
serialized_first, serialized_last, exclude_end = decoded_obj[OBJECT_CONTENT_REFERENCE]
|
57
|
+
return (exclude_end ? (get_original_rec(serialized_first)...get_original_rec(serialized_last)) : (get_original_rec(serialized_first)..get_original_rec(serialized_last)) )
|
55
58
|
elsif (decoded_obj[OBJECT_CLASSNAME_REFERENCE] == nil)
|
56
59
|
# Normal hash
|
57
60
|
hash_obj = ((container_to_fill == nil) ? {} : container_to_fill)
|
@@ -62,7 +65,7 @@ module RubySerial
|
|
62
65
|
else
|
63
66
|
# We deserialize a home-made object
|
64
67
|
# Instantiate the needed class
|
65
|
-
new_obj = ((container_to_fill == nil) ? eval(decoded_obj[OBJECT_CLASSNAME_REFERENCE]).
|
68
|
+
new_obj = ((container_to_fill == nil) ? eval(decoded_obj[OBJECT_CLASSNAME_REFERENCE]).allocate : container_to_fill)
|
66
69
|
instance_vars = {}
|
67
70
|
decoded_obj[OBJECT_CONTENT_REFERENCE].each do |var_name, serialized_value|
|
68
71
|
instance_vars[var_name] = get_original_rec(serialized_value)
|
@@ -75,7 +78,7 @@ module RubySerial
|
|
75
78
|
obj_id = decoded_obj[OBJECT_ID_REFERENCE]
|
76
79
|
if (@decoded_shared_objs[obj_id] == nil)
|
77
80
|
# Instantiate it already for cyclic decoding (avoids infinite loops)
|
78
|
-
@decoded_shared_objs[obj_id] = eval(@serialized_shared_objs[obj_id][0]).
|
81
|
+
@decoded_shared_objs[obj_id] = eval(@serialized_shared_objs[obj_id][0]).allocate
|
79
82
|
get_original_rec(@serialized_shared_objs[obj_id][1], @decoded_shared_objs[obj_id])
|
80
83
|
end
|
81
84
|
return @decoded_shared_objs[obj_id]
|
@@ -93,8 +93,10 @@ module RubySerial
|
|
93
93
|
(obj == true) or
|
94
94
|
(obj == false))
|
95
95
|
return obj
|
96
|
+
#
|
97
|
+
# First handle objects that are not shareable
|
98
|
+
#
|
96
99
|
elsif (obj.is_a?(Symbol))
|
97
|
-
# TODO (MessagePack): Remove this if MessagePack handles Symbols one day
|
98
100
|
return {
|
99
101
|
OBJECT_CLASSNAME_REFERENCE => CLASS_ID_SYMBOL,
|
100
102
|
OBJECT_CONTENT_REFERENCE => obj.to_s
|
@@ -104,12 +106,18 @@ module RubySerial
|
|
104
106
|
OBJECT_CLASSNAME_REFERENCE => CLASS_ID_ENCODING,
|
105
107
|
OBJECT_CONTENT_REFERENCE => obj.name
|
106
108
|
}
|
109
|
+
#
|
110
|
+
# Handle shared objects
|
111
|
+
#
|
107
112
|
elsif (check_shared and
|
108
113
|
(@shared_objs[obj.object_id] != nil))
|
109
114
|
# This object is shared: store its object_id only
|
110
115
|
return {
|
111
116
|
OBJECT_ID_REFERENCE => obj.object_id
|
112
117
|
}
|
118
|
+
#
|
119
|
+
# Handle shareable objects
|
120
|
+
#
|
113
121
|
elsif (obj.is_a?(Array))
|
114
122
|
# First serialize its items
|
115
123
|
return obj.map { |item| get_msgpack_compatible_rec(item) }
|
@@ -122,6 +130,11 @@ module RubySerial
|
|
122
130
|
return hash_to_store
|
123
131
|
elsif (obj.is_a?(String))
|
124
132
|
return obj
|
133
|
+
elsif (obj.is_a?(Range))
|
134
|
+
return {
|
135
|
+
OBJECT_CLASSNAME_REFERENCE => CLASS_ID_RANGE,
|
136
|
+
OBJECT_CONTENT_REFERENCE => [ get_msgpack_compatible_rec(obj.first), get_msgpack_compatible_rec(obj.last), obj.exclude_end? ]
|
137
|
+
}
|
125
138
|
else
|
126
139
|
# Handle other objects
|
127
140
|
serialized_instance_vars = {}
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-serial
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2.20130725
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-07-
|
12
|
+
date: 2013-07-25 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: msgpack
|