UNPKG

zbencode

Version:
44 lines (37 loc) 874 B
module.exports = bencode function bencode (input) { var encoder = get_encoder(input) return encoder(input) } var types = { '[object String]': bencode_string, '[object Object]': bencode_dict, '[object Array]': bencode_list, '[object Number]': bencode_integer } function get_encoder (input) { var type = Object.prototype.toString.call(input) return types[type] } function bencode_list (array) { var list = 'l' var parts = array.map(bencode) return list.concat(parts.join(''), 'e') } function bencode_dict (object) { var dict = 'd' var keys = Object.keys(object) keys.sort() keys.forEach(function (key) { dict += bencode(key) dict += bencode(object[key]) }) dict += 'e' return dict } function bencode_string (string) { return string.length + ':' + string } function bencode_integer (integer) { return 'i' + integer + 'e' }