Skip to content

Commit 1fe2833

Browse files
committed
Added Keyword module functions that were implemented in JavaScript
1 parent 2502ce2 commit 1fe2833

File tree

4 files changed

+42
-64
lines changed

4 files changed

+42
-64
lines changed
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
defmodule ElixirScript.Keyword do
2+
3+
def has_key?(kw, key) do
4+
do_has_key?(kw, key)
5+
end
6+
7+
defp do_has_key?([], _) do
8+
false
9+
end
10+
11+
defp do_has_key?(kw, key) do
12+
case hd(kw) do
13+
{the_key, _} when the_key == key ->
14+
true
15+
_ ->
16+
do_has_key?(tl(kw), key)
17+
end
18+
end
19+
20+
def get(kw, key) do
21+
get(kw, key, nil)
22+
end
23+
24+
def get(kw, key, default) do
25+
case has_key?(kw, key) do
26+
true ->
27+
do_get(kw, key)
28+
false ->
29+
default
30+
end
31+
end
32+
33+
defp do_get(kw, key) do
34+
case hd(kw) do
35+
{ kw_key, value } when kw_key == key ->
36+
value
37+
_ ->
38+
do_get(tl(kw), key)
39+
end
40+
end
41+
end

lib/elixir_script/translator/state.ex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ defmodule ElixirScript.Translator.State do
2525
|> Map.put(Base, ElixirScript.Base)
2626
|> Map.put(Module, ElixirScript.Module)
2727
|> Map.put(Map, ElixirScript.Map)
28+
|> Map.put(Keyword, ElixirScript.Keyword)
2829
end
2930

3031
def add_module(module) do

src/javascript/lib/keyword.js

Lines changed: 0 additions & 25 deletions
This file was deleted.

src/javascript/tests/map.spec.js

Lines changed: 0 additions & 39 deletions
This file was deleted.

0 commit comments

Comments
 (0)