diff --git a/src/main/java/com/annimon/ownlang/modules/std/NumberFunctions.java b/src/main/java/com/annimon/ownlang/modules/std/NumberFunctions.java new file mode 100644 index 0000000..31d2cd6 --- /dev/null +++ b/src/main/java/com/annimon/ownlang/modules/std/NumberFunctions.java @@ -0,0 +1,21 @@ +package com.annimon.ownlang.modules.std; + +import com.annimon.ownlang.lib.Arguments; +import com.annimon.ownlang.lib.NumberValue; +import com.annimon.ownlang.lib.StringValue; +import com.annimon.ownlang.lib.Types; +import com.annimon.ownlang.lib.Value; + +public final class NumberFunctions { + + public static Value toHexString(Value... args) { + Arguments.check(1, args.length); + long value; + if (args[0].type() == Types.NUMBER) { + value = ((NumberValue) args[0]).asLong(); + } else { + value = (long) args[0].asNumber(); + } + return new StringValue(Long.toHexString(value)); + } +} diff --git a/src/main/java/com/annimon/ownlang/modules/std/std.java b/src/main/java/com/annimon/ownlang/modules/std/std.java index ffce722..a8618db 100644 --- a/src/main/java/com/annimon/ownlang/modules/std/std.java +++ b/src/main/java/com/annimon/ownlang/modules/std/std.java @@ -27,6 +27,9 @@ public final class std implements Module { Functions.set("sync", new std_sync()); Functions.set("try", new std_try()); + // Numbers + Functions.set("toHexString", NumberFunctions::toHexString); + // String Functions.set("sprintf", new std_sprintf()); Functions.set("split", new std_split());