3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
# File 'lib/bencodr/object.rb', line 3
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
|