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