basho / Erlang_js
Programming Languages
-
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=.
#+BEGIN_SRC shell git clone git://github.com/basho/erlang_js.git make all test #+END_SRC
Start up an Erlang shell with the path to =erlang_js= included.
#+BEGIN_SRC shell erl -pa path/to/erlang_js/ebin -boot start_sasl #+END_SRC
Start the =erlang_js= application and create a Javascript VM. #+BEGIN_SRC erlang 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: [email protected] ok 2> {ok, JS} = js_driver:new(). #+END_SRC
Now you can evaluate Javascript expressions and call Javascript functions.
#+BEGIN_SRC erlang 3> js:define(JS, <<"var addOne = function(a){ return a + 1; }">>). ok 4> js:call(JS, <<"addOne">>, [3]). {ok,4} #+END_SRC
** Documentation Documentation about the API is extensive and can be generated by =edoc=.
#+BEGIN_SRC shell $ make docs $ open docs/index.html #+END_SRC
** Contributing We encourage contributions to =erlang_js= from the community.
- Fork the =erlang_js= repository on [[https://github.com/basho/erlang_js][Github]].
- Clone your fork or add the remote if you already have a clone of the repository. #+BEGIN_SRC shell git clone [email protected]:yourusername/erlang_js.git
or
git remote add mine [email protected]:yourusername/erlang_js.git #+END_SRC 3) Create a topic branch for your change. #+BEGIN_SRC shell git checkout -b some-topic-branch #+END_SRC 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. #+BEGIN_SRC shell git push mine some-topic-branch #+END_SRC 6) A Basho engineer or community maintainer will review your patch and merge it into the main repository or send you feedback.