5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
# File 'lib/bencodr/object.rb', line 5
def self.bencode(object)
return object.bencode if object.respond_to?(:bencode)
case object
when ::String, Symbol, URI::Generic
return String.bencode(object)
when Numeric, Time
return Integer.bencode(object)
when Array
return List.bencode(object)
when Hash
return Dictionary.bencode(object)
else
[String, Integer, List, Dictionary].each do |type|
begin
return type.bencode(object)
rescue
end
end
end
raise BEncodeError, "BEncodr::Object.bencode was unable to infer the type of the object passed in."
end
|