tnetstring 0.3.1 → 0.3.2
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/lib/tnetstring.rb +39 -15
- data/lib/tnetstring/version.rb +1 -1
- metadata +3 -3
data/lib/tnetstring.rb
CHANGED
@@ -82,10 +82,9 @@ module TNetstring
|
|
82
82
|
|
83
83
|
def self.parse_pair(data) # :nodoc:
|
84
84
|
key, extra = parse(data)
|
85
|
-
assert key.kind_of?(String), "Dictionary keys must be Strings"
|
85
|
+
assert key.kind_of?(String) || key.kind_of?(Symbol), "Dictionary keys must be Strings or Symbols"
|
86
86
|
assert extra, "Unbalanced dictionary store"
|
87
87
|
value, extra = parse(extra)
|
88
|
-
assert value, "Got an invalid value, null not allowed"
|
89
88
|
|
90
89
|
[key, value, extra]
|
91
90
|
end
|
@@ -101,6 +100,8 @@ module TNetstring
|
|
101
100
|
end
|
102
101
|
end
|
103
102
|
|
103
|
+
# <b>DEPRECATED:</b> Please use <tt>dump</tt> instead.
|
104
|
+
#
|
104
105
|
# Constructs a tnetstring out of the given object. Valid Ruby object types
|
105
106
|
# include strings, integers, boolean values, nil, arrays, and hashes. Arrays
|
106
107
|
# and hashes may contain any of the previous valid Ruby object types, but
|
@@ -109,44 +110,67 @@ module TNetstring
|
|
109
110
|
# === Example
|
110
111
|
#
|
111
112
|
# int = 12345
|
112
|
-
# TNetstring.
|
113
|
+
# TNetstring.dump(int)
|
113
114
|
#
|
114
115
|
# #=> '5:12345#'
|
115
116
|
#
|
116
117
|
# hash = {'hello' => 'world'}
|
117
|
-
# TNetstring.
|
118
|
+
# TNetstring.dump(hash)
|
118
119
|
#
|
119
120
|
# #=> '16:5:hello,5:world,}'
|
120
121
|
#
|
121
122
|
def self.encode(obj)
|
123
|
+
warn "[DEPRECATION] `encode` is deprecated. Please use `dump` instead."
|
124
|
+
dump obj
|
125
|
+
end
|
126
|
+
|
127
|
+
# Constructs a tnetstring out of the given object. Valid Ruby object types
|
128
|
+
# include strings, integers, boolean values, nil, arrays, and hashes. Arrays
|
129
|
+
# and hashes may contain any of the previous valid Ruby object types, but
|
130
|
+
# hash keys must be strings.
|
131
|
+
#
|
132
|
+
# === Example
|
133
|
+
#
|
134
|
+
# int = 12345
|
135
|
+
# TNetstring.dump(int)
|
136
|
+
#
|
137
|
+
# #=> '5:12345#'
|
138
|
+
#
|
139
|
+
# hash = {'hello' => 'world'}
|
140
|
+
# TNetstring.dump(hash)
|
141
|
+
#
|
142
|
+
# #=> '16:5:hello,5:world,}'
|
143
|
+
#
|
144
|
+
def self.dump(obj)
|
122
145
|
if obj.kind_of?(Integer)
|
123
146
|
int_str = obj.to_s
|
124
147
|
"#{int_str.length}:#{int_str}#"
|
125
|
-
elsif obj.kind_of?(String)
|
148
|
+
elsif obj.kind_of?(String) || obj.kind_of?(Symbol)
|
126
149
|
"#{obj.length}:#{obj},"
|
127
|
-
elsif obj.is_a?(TrueClass)
|
128
|
-
|
129
|
-
|
150
|
+
elsif obj.is_a?(TrueClass)
|
151
|
+
"4:true!"
|
152
|
+
elsif obj.is_a?(FalseClass)
|
153
|
+
"5:false!"
|
130
154
|
elsif obj == nil
|
131
155
|
"0:~"
|
132
156
|
elsif obj.kind_of?(Array)
|
133
|
-
|
157
|
+
dump_list(obj)
|
134
158
|
elsif obj.kind_of?(Hash)
|
135
|
-
|
159
|
+
dump_dictionary(obj)
|
136
160
|
else
|
137
161
|
assert false, "Object must be of a primitive type: #{obj.inspect}"
|
138
162
|
end
|
139
163
|
end
|
140
164
|
|
141
|
-
def self.
|
142
|
-
contents = list.map {|item|
|
165
|
+
def self.dump_list(list) # :nodoc:
|
166
|
+
contents = list.map {|item| dump(item)}.join
|
143
167
|
"#{contents.length}:#{contents}]"
|
144
168
|
end
|
145
169
|
|
146
|
-
def self.
|
170
|
+
def self.dump_dictionary(dict) # :nodoc:
|
147
171
|
contents = dict.map do |key, value|
|
148
|
-
assert key.kind_of?(String), "Dictionary keys must be Strings"
|
149
|
-
"#{
|
172
|
+
assert key.kind_of?(String) || key.kind_of?(Symbol), "Dictionary keys must be Strings or Symbols"
|
173
|
+
"#{dump(key)}#{dump(value)}"
|
150
174
|
end.join
|
151
175
|
"#{contents.length}:#{contents}}"
|
152
176
|
end
|
data/lib/tnetstring/version.rb
CHANGED
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 3
|
8
|
-
-
|
9
|
-
version: 0.3.
|
8
|
+
- 2
|
9
|
+
version: 0.3.2
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Matt Yoho
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2011-
|
17
|
+
date: 2011-06-21 00:00:00 -04:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|