BERT (Binary ERlang Term) serialization library for Ruby.
Перейти к файлу
Matt Burke 4fa5e2e2d3 Benchmark dat msgpack 2017-04-21 09:03:53 -04:00
bench Benchmark dat msgpack 2017-04-21 09:03:53 -04:00
ext/bert/c speed up string decoding 2016-05-19 10:28:17 -07:00
lib test ruby and c implementations 2017-01-12 12:13:18 +11:00
test only serialise a Time object with microsecond precision 2017-01-12 12:13:18 +11:00
.document Initial commit to bert. 2009-10-07 19:18:16 -07:00
.gitignore Bundlerize 2016-05-19 19:08:33 +02:00
.travis.yml test ruby and c implementations 2017-01-12 12:13:18 +11:00
Gemfile Bundlerize 2016-05-19 19:08:33 +02:00
Gemfile.lock Benchmark dat msgpack 2017-04-21 09:03:53 -04:00
History.txt bert 1.1.6 2012-05-25 15:03:29 -07:00
LICENSE Initial commit to bert. 2009-10-07 19:18:16 -07:00
README.md replace Fixnum and Bignum with Integer 2017-01-11 15:00:27 +11:00
Rakefile Use rake-compiler 2016-05-23 15:33:07 +02:00
VERSION Bump version to 1.1.10 2016-05-23 11:00:48 +02:00
bert.gemspec Benchmark dat msgpack 2017-04-21 09:03:53 -04:00

README.md

BERT

A BERT (Binary ERlang Term) serialization library for Ruby. It can encode Ruby objects into BERT format and decode BERT binaries into Ruby objects.

See the BERT specification at bert-rpc.org.

Instances of the following Ruby classes will be automatically converted to the proper simple BERT type:

  • Integer
  • Float
  • Symbol
  • Array
  • String

Instances of the following Ruby classes will be automatically converted to the proper complex BERT type:

  • NilClass
  • TrueClass
  • FalseClass
  • Hash
  • Time
  • Regexp

To designate tuples, simply prefix an Array literal with a t or use the BERT::Tuple class:

t[:foo, [1, 2, 3]]
BERT::Tuple[:foo, [1, 2, 3]]

Both of these will be converted to (in Erlang syntax):

{foo, [1, 2, 3]}

Installation

gem install bert -s http://gemcutter.org

Usage

require 'bert'

bert = BERT.encode(t[:user, {:name => 'TPW', :nick => 'mojombo'}])
# => "\203h\002d\000\004userh\003d\000\004bertd\000\004dictl\000\000\
      000\002h\002d\000\004namem\000\000\000\003TPWh\002d\000\004nickm\
      000\000\000\amojomboj"

BERT.decode(bert)
# => t[:user, {:name=>"TPW", :nick=>"mojombo"}]

Note on Patches/Pull Requests

  • Fork the project.
  • Make your feature addition or bug fix.
  • Add tests for it. This is important so I don't break it in a future version unintentionally.
  • Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
  • Send me a pull request. Bonus points for topic branches.

Copyright (c) 2009 Tom Preston-Werner. See LICENSE for details.