From 663f9df8c3ddef75ff1102a14a0e89f032fc6858 Mon Sep 17 00:00:00 2001 From: Nat Quayle Nelson Date: Mon, 29 Nov 2021 15:54:39 -0700 Subject: [PATCH] Prelude.substr allow negative indices --- kiss/src/kiss/Kiss.hx | 1 + kiss/src/kiss/Prelude.hx | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/kiss/src/kiss/Kiss.hx b/kiss/src/kiss/Kiss.hx index 48786922..67f15238 100644 --- a/kiss/src/kiss/Kiss.hx +++ b/kiss/src/kiss/Kiss.hx @@ -111,6 +111,7 @@ class Kiss { "zipThrow" => Symbol("Prelude.zipThrow"), "joinPath" => Symbol("Prelude.joinPath"), "readDirectory" => Symbol("Prelude.readDirectory"), + "substr" => Symbol("Prelude.substr") ], fieldList: [], fieldDict: new Map(), diff --git a/kiss/src/kiss/Prelude.hx b/kiss/src/kiss/Prelude.hx index 6e49997c..88682f5a 100644 --- a/kiss/src/kiss/Prelude.hx +++ b/kiss/src/kiss/Prelude.hx @@ -632,6 +632,16 @@ class Prelude { } #end + public static function substr(str:String, startIdx:Int, ?endIdx:Int) { + function negIdx(idx) { + return if (idx < 0) str.length + idx else idx; + } + + if (endIdx == null) endIdx = str.length; + + return str.substr(negIdx(startIdx), negIdx(endIdx)); + } + public static var newLine = "\n"; public static var backSlash = "\\"; }