Ruby bencode binding
This is a simple library for reading and writing bencoded data.
What is bencode?
Bencode is a simple data serialization format used by the popular
BitTorrent P2P file sharing system.
It contains only four data types, namely:
- byte strings
- integers
- lists
- dictionaries
Examples
Encoding objects is as simple as calling #bencode
on them:
"foo bar".bencode
42.bencode
[1, 2, 3].bencode
{"foo" => 1, "bar" => -10}.bencode
Decoding a complete data stream is as easy as calling BEncode.load(data)
.
Decoding a data stream in chunks works as follows:
irb(main):007:0> stream = BEncode::Parser.new(StringIO.new "d3:foo3:bared3:baz3:quxe")
=> #<BEncode::Parser:0x007fbe6b008c88 @stream=#<StringIO:0x007fbe6b008cd8>>
irb(main):008:0> stream.parse!
=> {"foo"=>"bar"}
irb(main):009:0> stream.parse!
=> {"baz"=>"qux"}
License
Released under the MIT license.
Contributors