Skip to content

Commit

Permalink
Upgrade to latest Elixir
Browse files Browse the repository at this point in the history
  • Loading branch information
Devin Torres committed May 27, 2014
1 parent bdd7e49 commit 5dfa2df
Show file tree
Hide file tree
Showing 6 changed files with 26 additions and 14 deletions.
13 changes: 8 additions & 5 deletions lib/execjs.ex
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
defmodule Execjs do
import Execjs.Escape, only: [escape: 1]

defexception Error, message: nil
defexception RuntimeError, message: nil
defexception RuntimeUnavailable, message: "Could not find JavaScript runtime"
defmodule Error, do: defexception [:message]
defmodule RuntimeError, do: defexception [:message]

defmodule RuntimeUnavailable do
defexception message: "Could not find JavaScript runtime"
end

@spec eval(String.t) :: any
def eval(source) when is_binary(source) do
Expand Down Expand Up @@ -69,9 +72,9 @@ defmodule Execjs do
[ "ok" ] ->
:undefined
[ "err", message ] ->
raise Execjs.RuntimeError, message: message
raise %RuntimeError{message: message}
[ "err" ] ->
raise Execjs.Error
raise %Error{}
end
end
end
2 changes: 1 addition & 1 deletion lib/execjs/escape.ex
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ defmodule Execjs.Escape do
{ "\x{2029}", "\\u2029" }
]

lc { char, escaped } inlist escape_map do
for { char, escaped } <- escape_map do
defp escape(<< unquote(char), rest :: binary >>, acc) do
escape(rest, << acc :: binary, unquote(escaped) >>)
end
Expand Down
2 changes: 1 addition & 1 deletion lib/execjs/runtime.ex
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
defmodule Execjs.Runtime do
app = Mix.project[:app]
app = Mix.Project.config[:app]

def runner_path(runner) do
Path.join([:code.priv_dir(unquote(app)), runner])
Expand Down
4 changes: 2 additions & 2 deletions mix.exs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ defmodule Execjs.Mixfile do
def project do
[ app: :execjs,
version: @version,
elixir: "~> 0.13.1",
elixir: "~> 0.13.3",
deps: deps ]
end

Expand All @@ -18,6 +18,6 @@ defmodule Execjs.Mixfile do
# Returns the list of dependencies in the format:
# { :foobar, "~> 0.1", git: "https://github.com/elixir-lang/foobar.git" }
defp deps do
[ { :jazz, "~> 0.1.0" } ]
[ { :jazz, github: "meh/jazz" } ]
end
end
1 change: 1 addition & 0 deletions mix.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
%{"jazz": {:git, "git://github.com/meh/jazz.git", "7af3b74e58eb1a3fc6b9874a2077efa420f6dfcc", []}}
18 changes: 13 additions & 5 deletions test/execjs_test.exs
Original file line number Diff line number Diff line change
@@ -1,19 +1,27 @@
defmodule ExecjsTest do
use ExUnit.Case

import Execjs

alias Execjs.RuntimeError

test "eval" do
assert Execjs.eval(~s{var a = "a"; a + "b"}) == "ab"
assert Execjs.eval(~s{\x{2028}\nvar str = "foo";\x{2029}\n})
assert eval(~s{var a = "a"; a + "b"}) == "ab"
assert eval(~s{\x{2028}\nvar str = "foo";\x{2029}\n})

assert_raise RuntimeError, fn ->
eval("xxx")
end
end

test "call" do
context = Execjs.compile ~S"""
context = compile ~S"""
function addOne(n) {
return n + 1;
}
"""

assert Execjs.call(context, "addOne", [3]) == 4
assert Execjs.call(context, "addOne", [-3]) == -2
assert call(context, "addOne", [3]) == 4
assert call(context, "addOne", [-3]) == -2
end
end

0 comments on commit 5dfa2df

Please sign in to comment.