Module: BEncodr::Object

Defined in:
lib/bencodr/object.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.bdecode(string) ⇒ Object



29
30
31
32
33
# File 'lib/bencodr/object.rb', line 29

def self.bdecode(string)
  scanner = StringScanner.new(string)
  object = Parser.parse_object(scanner)
  object or raise BEncodeError, "BEncodr::Object.bdecode was unable to parse the string passed in."
end

.bencode(object) ⇒ Object

Raises:



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

Instance Method Details

#bdecodeObject



35
36
37
# File 'lib/bencodr/object.rb', line 35

def bdecode
  Object.bdecode(self)
end