Skip to content

Commit 634cc05

Browse files
committed
Add erlang functions used in Kernel
1 parent c655d99 commit 634cc05

File tree

2 files changed

+96
-17
lines changed

2 files changed

+96
-17
lines changed

lib/elixir_script/passes/translate/function.ex

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -68,23 +68,23 @@ defmodule ElixirScript.Translate.Function do
6868
)
6969

7070
function_dec = J.function_declaration(
71-
ElixirScript.Translate.Identifier.make_function_name(name),
72-
[J.rest_element(J.identifier("__function_args__"))],
73-
[],
74-
J.block_statement([
75-
arg_matches_declaration,
76-
clauses,
77-
J.throw_statement(
78-
J.new_expression(
79-
J.member_expression(
80-
patterns_ast(),
81-
J.identifier("MatchError")
82-
),
83-
[J.identifier("__function_args__")]
84-
)
85-
)
86-
])
87-
)
71+
ElixirScript.Translate.Identifier.make_function_name(name),
72+
[J.rest_element(J.identifier("__function_args__"))],
73+
[],
74+
J.block_statement([
75+
arg_matches_declaration,
76+
clauses,
77+
J.throw_statement(
78+
J.new_expression(
79+
J.member_expression(
80+
patterns_ast(),
81+
J.identifier("MatchError")
82+
),
83+
[J.identifier("__function_args__")]
84+
)
85+
)
86+
])
87+
)
8888

8989
{ function_dec, state }
9090
end

src/javascript/lib/core/erlang_compat/erlang.js

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,70 @@ function tuple_to_list(tuple) {
245245
return list;
246246
}
247247

248+
function abs(number) {
249+
return Math.abs(number);
250+
}
251+
252+
function apply(...args) {
253+
if (args.length === 2) {
254+
return args[0].apply(this, ...args[1]);
255+
}
256+
257+
return args[0][atom_to_binary(args[1])].apply(this, ...args[2]);
258+
}
259+
260+
function binary_part(binary, start, length) {
261+
return binary.substring(start, start + length);
262+
}
263+
264+
function bit_size(bitstring) {
265+
return bitstring.bit_size;
266+
}
267+
268+
function byte_size(bitstring) {
269+
return bitstring.byte_size;
270+
}
271+
272+
function hd(list) {
273+
return list[0];
274+
}
275+
276+
function length(list) {
277+
return list.length;
278+
}
279+
280+
function make_ref() {
281+
return new ErlangTypes.Reference();
282+
}
283+
284+
function map_size(map) {
285+
return Object.keys(map).length;
286+
}
287+
288+
function max(first, second) {
289+
return Math.max(first, second);
290+
}
291+
292+
function min(first, second) {
293+
return Math.min(first, second);
294+
}
295+
296+
function round(number) {
297+
return Math.round(number);
298+
}
299+
300+
function tl(list) {
301+
return list.slice(1);
302+
}
303+
304+
function trunc(number) {
305+
return Math.trunc(number);
306+
}
307+
308+
function tuple_size(tuple) {
309+
return tuple.length;
310+
}
311+
248312
export default {
249313
atom_to_binary,
250314
binary_to_atom,
@@ -294,4 +358,19 @@ export default {
294358
append_element,
295359
delete_element,
296360
tuple_to_list,
361+
abs,
362+
apply,
363+
binary_part,
364+
bit_size,
365+
byte_size,
366+
hd,
367+
length,
368+
make_ref,
369+
map_size,
370+
max,
371+
min,
372+
round,
373+
tl,
374+
trunc,
375+
tuple_size
297376
};

0 commit comments

Comments
 (0)