Evaluate Javascript code and libraries in Clojure
Latest commit 2d1a74a Mar 5, 2012 @weavejester Released 0.1.2
Failed to load latest commit information.
src/evaljs Added coercions for nil Mar 4, 2012
test/evaljs/test Added coercions for nil Mar 4, 2012
.gitignore Initial commit Mar 4, 2012
README.md Released 0.1.2 Mar 4, 2012
project.clj Released 0.1.2 Mar 4, 2012



Evaljs is a library for evaluating Javascript code in Clojure.


Add the following dependency to your project.clj file:

[evaljs "0.1.2"]


You'll need both the evaljs.core and evaljs.rhino namespaces for this to work:

(use 'evaljs.core)
(use 'evaljs.rhino)

You can then evaluate a Javascript expression within a blank context:

(with-context (rhino-context)
  (prn (evaljs "1 + 1")))

Or a context with a map of initial variables:

(with-context (rhino-context {:x 2})
  (prn (evaljs "x + 1")))

The return value of evaljs is the last statement executed. Basic types like maps and arrays are automaitcally converted between Clojure and Javascript types.

If you want to import a Javascript library, you can evaluate an I/O object such as a file or resource:

(require '[clojure.java.io :as io])

(with-context (rhino-context)
  (evaljs (io/resource "some/js/library.js"))
  (evaljs "someJSLibrary()"))


Copyright (C) 2012 James Reeves

Distributed under the Eclipse Public License, the same as Clojure.