module Encoder
The encoding class, to encapsulate all encoding behaviour in one module
Public Class Methods
encode(data)
click to toggle source
# File lib/rbencode.rb, line 25 def self.encode(data) if data.is_a? Integer encode_int(data) elsif data.is_a? String encode_string(data) elsif data.is_a? Array encode_array(data) elsif data.is_a? Hash encode_hash(data) else raise UnsupportedDataError end end
Public Instance Methods
encode_array(data)
click to toggle source
# File lib/rbencode.rb, line 47 def encode_array(data) "l#{data.collect { |item| encode(item) }.join}e" end
encode_hash(data)
click to toggle source
# File lib/rbencode.rb, line 51 def encode_hash(data) "d#{data.to_a.flatten(1).collect { |item| encode(item) }.join}e" end
encode_int(data)
click to toggle source
# File lib/rbencode.rb, line 39 def encode_int(data) "i#{data}e" end
encode_string(data)
click to toggle source
# File lib/rbencode.rb, line 43 def encode_string(data) "#{data.length}:#{data}" end