erlang_js ** Overview
[[http://travis-ci.org/basho/erlang_js][Travis-CI]] :: [[https://secure.travis-ci.org/basho/erlang_js.png]]
=erlang_js= is a linked-in driver, API, and OTP application that embeds Mozilla's Spidermonkey Javascript Virtual Machine in Erlang. Originally created to facilitate usage of Riak's MapReduce by non-Erlang programmers, it supports multiple concurrent Javascript VMs, runtime evaluation of Javascript code, and invocation of Javascript functions.
=erlang_js= builds and executes only on Unix-based platforms, including Linux, Mac OS/X, and Solaris. It includes version 1.8.0 of Spidermonkey and Douglas Crockford's =json2.js= JSON parser. More information about the features available to Javascript inside =erlang_js= are detailed on the [[https://developer.mozilla.org/en/JavaScript/Reference][Mozilla Developer Center]].
** Quick Start You must have [[http://erlang.org/download.html][Erlang/OTP R13B04]] or later and a GNU-style build system to compile and run =erlang_js=.
git clone git://github.com/basho/erlang_js.git make all test
Start up an Erlang shell with the path to =erlang_js= included.
erl -pa path/to/erlang_js/ebin -boot start_sasl
Start the =erlang_js= application and create a Javascript VM.
1> application:start(erlang_js).
=PROGRESS REPORT==== 17-Feb-2011::11:31:51 === supervisor: {local,erlang_js_sup} started: [{pid,<0.46.0>}, {name,cache}, {mfargs,{js_cache,start_link,[]}}, {restart_type,permanent}, {shutdown,2000}, {child_type,worker}]
=PROGRESS REPORT==== 17-Feb-2011::11:31:51 === application: erlang_js started_at: nonode@nohost ok 2> {ok, JS} = js_driver:new().
Now you can evaluate Javascript expressions and call Javascript functions.
3> js:define(JS, <<"var addOne = function(a){ return a + 1; }">>). ok 4> js:call(JS, <<"addOne">>, [3]). {ok,4}
** Documentation Documentation about the API is extensive and can be generated by =edoc=.
$ make docs $ open docs/index.html
** Contributing We encourage contributions to =erlang_js= from the community.
1) Fork the =erlang_js= repository on [[https://github.com/basho/erlang_js][Github]]. 2) Clone your fork or add the remote if you already have a clone of the repository.
git clone git@github.com:yourusername/erlang_js.git
git remote add mine git@github.com:yourusername/erlang_js.git
3) Create a topic branch for your change.
git checkout -b some-topic-branch
4) Make your change and commit. Use a clear and descriptive commit message, spanning multiple lines if detailed explanation is needed. 5) Push to your fork of the repository and then send a pull-request through Github.
git push mine some-topic-branch
6) A Basho engineer or community maintainer will review your patch and merge it into the main repository or send you feedback.