|
1 | 1 | defmodule ElixirScript.Translator.Rewriter do |
2 | 2 |
|
| 3 | + # :erlang, :lists, :maps, :beam_lib, :binary, :calendar, :digraph, |
| 4 | + # :epp, :erl_lint, :erl_internal, :erl_expand_records, :erl_eval, |
| 5 | + # :ets, :filename, :gen_event, :gen_server, :io, :io_lib, :math, |
| 6 | + # :ordsets, :proc_lib, :rand, :re, :sets, :supervisor,:sys, :timer, |
| 7 | + # :unicode, :os, :application, :code, :gen_tcp, :error_logger, :gen, |
| 8 | + # :file |
| 9 | + # http://erlang.org/doc/applications.html |
| 10 | + |
3 | 11 |
|
4 | 12 | def rewrite({{:., _, [:erlang, :abs]}, _, [number]}) do |
5 | 13 | quote do: Math.abs(unquote(number)) |
@@ -55,7 +63,7 @@ defmodule ElixirScript.Translator.Rewriter do |
55 | 63 | end |
56 | 64 |
|
57 | 65 | def rewrite({{:., _, [:erlang, :is_float]}, _, [term]}) do |
58 | | - quote do: (JS.typeof(unquote(term)) === "number" || JS.instanceof(unquote(term, Number))) && !Number.isInteger(unquote(term)) |
| 66 | + quote do: (JS.typeof(unquote(term)) === "number" || JS.instanceof(unquote(term), Number)) && !Number.isInteger(unquote(term)) |
59 | 67 | end |
60 | 68 |
|
61 | 69 | def rewrite({{:., _, [:erlang, :is_function]}, _, [term]}) do |
@@ -177,11 +185,6 @@ defmodule ElixirScript.Translator.Rewriter do |
177 | 185 | quote do: nil |
178 | 186 | end |
179 | 187 |
|
180 | | - def rewrite({{:., _, [:erlang, :spawn_monitor]}, _, [_module, _fun, _args]}) do |
181 | | - #TODO: implement spawn_monitor |
182 | | - quote do: nil |
183 | | - end |
184 | | - |
185 | 188 | def rewrite({{:., _, [:erlang, :throw]}, _, [term]}) do |
186 | 189 | quote do: JS.throw(unquote(term)) |
187 | 190 | end |
@@ -258,6 +261,43 @@ defmodule ElixirScript.Translator.Rewriter do |
258 | 261 | quote do: JS.throw(unquote(reason)) |
259 | 262 | end |
260 | 263 |
|
| 264 | + def rewrite({{:., _, [:erlang, :atom_to_binary]}, _, [atom, _]}) do |
| 265 | + quote do: Symbol.keyFor(unquote(atom)) |
| 266 | + end |
| 267 | + |
| 268 | + def rewrite({{:., _, [:erlang, :atom_to_list]}, _, [atom]}) do |
| 269 | + quote do: to_string(unquote(atom)).split("") |
| 270 | + end |
| 271 | + |
| 272 | + def rewrite({{:., _, [:erlang, :bnot]}, _, [expr]}) do |
| 273 | + {:"~", [], [expr]} |
| 274 | + end |
| 275 | + |
| 276 | + def rewrite({{:., _, [:erlang, :band]}, _, [left, right]}) do |
| 277 | + {:&, [], [left, right]} |
| 278 | + end |
| 279 | + |
| 280 | + def rewrite({{:., _, [:erlang, :bor]}, _, [left, right]}) do |
| 281 | + {:|, [], [left, right]} |
| 282 | + end |
| 283 | + |
| 284 | + def rewrite({{:., _, [:erlang, :bxor]}, _, [left, right]}) do |
| 285 | + {:^, [], [left, right]} |
| 286 | + end |
| 287 | + |
| 288 | + def rewrite({{:., _, [:erlang, :bsl]}, _, [left, right]}) do |
| 289 | + {:"<<", [], [left, right]} |
| 290 | + end |
| 291 | + |
| 292 | + def rewrite({{:., _, [:erlang, :bsr]}, _, [left, right]}) do |
| 293 | + {:">>", [], [left, right]} |
| 294 | + end |
| 295 | + |
| 296 | + def rewrite({{:., _, [:erlang, :function_exported]}, _, [_, _, _]}) do |
| 297 | + quote do: true |
| 298 | + end |
| 299 | + |
| 300 | + |
261 | 301 | def rewrite({{:., _, [:lists, :map]}, _, [fun, list]}) do |
262 | 302 | quote do: unquote(list).map(unquote(fun)) |
263 | 303 | end |
@@ -298,5 +338,9 @@ defmodule ElixirScript.Translator.Rewriter do |
298 | 338 | quote do: Elixir.Core.Functions.update_map(unquote(map), unquote(key), unquote(value)) |
299 | 339 | end |
300 | 340 |
|
| 341 | + def rewrite({{:., _, [:maps, :find]}, _, [key, map]}) do |
| 342 | + quote do: Elixir.Core.Functions.maps_find(unquote(key), unquote(map)) |
| 343 | + end |
| 344 | + |
301 | 345 |
|
302 | 346 | end |
0 commit comments