BERT (Binary ERlang Term) serialization library for Ruby.
Перейти к файлу
Aaron Patterson 3113c6f395 add a comment about ERL types
The two new types are extensions, so this commit adds a comment
documenting what these extensions are for (namely so that we can support
string encodings over the wire).
2016-04-18 08:19:34 -07:00
bench make decoder bench test C ext and Ruby version 2009-10-26 08:16:57 -07:00
ext/bert/c add a comment about ERL types 2016-04-18 08:19:34 -07:00
lib reduce diff 2016-04-14 15:32:04 -07:00
test add two new types, unicode strings, and other encoded strings 2016-04-14 15:00:46 -07:00
.document Initial commit to bert. 2009-10-07 19:18:16 -07:00
.gitignore remove reliance on erlectricity 2009-10-24 00:42:12 -07: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 Fix readme: complex type dictionary consisted of only 2 elements without 'bert' atom being the first element. 2011-12-10 03:19:07 -08:00
Rakefile Add provision for creating jruby-compatible gem 2010-04-03 22:42:25 -07:00
VERSION bert 1.1.6 2012-05-25 15:03:29 -07:00
bert.gemspec bert 1.1.6 2012-05-25 15:03:29 -07: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:

  • Fixnum
  • 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.