Skip to content

kyrylo/rmarshal

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RMarshal

Build Status semver

Introduction

This Erlang library deserialises Ruby objects dumped by Marshal.dump into Erlang terms. It's like Ruby's Marshal.load, but for Erlang. Currently, it doesn't support loading advanced objects like classes, but the bare minimum is supported. The list of supported objects includes:

  • Fixnum
  • Hash
  • Array
  • Bignum
  • Symbol
  • Float
  • String

Installation

Rebar3

%% rebar.config
{deps, [
  {rmarshal, {git, "git://github.com/kyrylo/rmarshal.git", {tag, "v0.0.4"}}}
]}.

Examples

Basic example

Dump some Ruby objects into a binary file:

# data.rb
data = Marshal.dump(hello: 'world')
File.open('data.dat', 'w') do |f|
  f.write(data)
end

Read the dumped data with Erlang and load it with help of the RMarshal library:

%% loader.erl
load_ruby_data() ->
    case file:read_file("data.dat") of
        {ok, BinaryData} -> rmarshal:load(BinaryData);
        Any -> Any
    end.

load_ruby_data()
%% Returns:
%% {ok, #{hello => "world"}}

API

rmarshal:load/1

Accepts binary string formatted according to the official Marshal Format. Returns a tuple with in the format {ok, rterm()}.

{ok, Decoded} = rmarshal:load(BinaryData).

Testing

Run the following command:

make test

Supported Erlang versions

  • ≥17.0

Contact

In case you have a problem, question or a bug report, feel free to:

Licence

The project uses the zlib License. See the LICENCE.txt file for more information.

About

Decodes Ruby's Marshal.dump gibberish into orthodox Erlang

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors