BERT (Binary ERlang Term) serialization library for Ruby.
Перейти к файлу
Charlie Somerville 7c2173d1db only serialise a Time object with microsecond precision
Time.now on Linux returns a Time instance with nanosecond precision,
but BERT only serialises times down to microsecond precision.
2017-01-11 15:47:09 +11:00
bench Bring back the smaller 'large' decode payload 2017-01-11 15:18:05 +11:00
ext/bert/c speed up string decoding 2016-05-19 10:28:17 -07:00
lib test ruby and c implementations 2017-01-11 15:47:07 +11:00
test only serialise a Time object with microsecond precision 2017-01-11 15:47:09 +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-11 15:47:07 +11:00
Gemfile Bundlerize 2016-05-19 19:08:33 +02:00
Gemfile.lock update rake dev dependency for ruby 2.4 2017-01-11 15:24:03 +11: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:23:19 +11:00
Rakefile Use rake-compiler 2017-01-11 15:18:02 +11:00
VERSION bumping version 2016-04-28 15:37:49 -07:00
bert.gemspec add test-unit as development dependency 2017-01-11 15:18:47 +11: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.