# File lib/bcodec/encode.rb, line 26 def encode(obj) str = "" if obj.class == String str << "%d:%s" % [ obj.length, obj ] elsif obj.class == Fixnum or obj.class == Bignum str << "i" << obj.to_s << "e" elsif obj.class == Array str << "l" obj.each { |i| str += encode(i) } str << "e" elsif obj.class == Hash str << "d" obj.sort.each do |k, v| raise InvalidKey unless k.instance_of?(String) str << encode(k) str << encode(v) end str << "e" else raise InvalidDataType end return str end