diff --git a/src/kiss/Kiss.hx b/src/kiss/Kiss.hx index 496b0dc..5977941 100644 --- a/src/kiss/Kiss.hx +++ b/src/kiss/Kiss.hx @@ -60,6 +60,7 @@ class Kiss { "pairs" => Symbol("Prelude.pairs"), // TODO test pairs "reversed" => Symbol("Prelude.reversed"), // TODO test reversed "memoize" => Symbol("Prelude.memoize"), // TODO test memoize + "joinPath" => Symbol("Prelude.joinPath"), "symbolName" => Symbol("Prelude.symbolName"), "symbolNameValue" => Symbol("Prelude.symbolNameValue"), "symbol" => Symbol("Prelude.symbol"), diff --git a/src/kiss/Prelude.hx b/src/kiss/Prelude.hx index 963d702..8e316eb 100644 --- a/src/kiss/Prelude.hx +++ b/src/kiss/Prelude.hx @@ -12,6 +12,7 @@ import js.node.Buffer; import sys.io.Process; #end import uuid.Uuid; +import haxe.io.Path; using StringTools; using uuid.Uuid; @@ -239,7 +240,7 @@ class Prelude { // Ranges with a min, exclusive max, and step size, just like Python. public static function range(min, max, step):Iterator { - if (step <= 0) + if (step <= 0 || max < min) throw "(range...) can only count up"; var count = min; return { @@ -254,6 +255,12 @@ class Prelude { }; } + static function _joinPath(parts:Array) { + return Path.join([for (part in parts) cast(part, String)]); + } + + public static var joinPath:Function = Reflect.makeVarArgs(_joinPath); + public static dynamic function truthy(v:T) { return switch (Type.typeof(v)) { case TNull: false;