From 981d81d2208d6fc9991939c370fa5d7aa5f7b3ee Mon Sep 17 00:00:00 2001 From: DiamondNether90 Date: Wed, 10 Sep 2025 19:31:08 +1000 Subject: [PATCH] Add packages/strings/strings.grnd --- packages/strings/strings.grnd | 85 +++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 packages/strings/strings.grnd diff --git a/packages/strings/strings.grnd b/packages/strings/strings.grnd new file mode 100644 index 0000000..862914b --- /dev/null +++ b/packages/strings/strings.grnd @@ -0,0 +1,85 @@ +fun -char !findChar -string &str -char &char + set &idx 0 + getstrsize $str &len + + @loop + equal $idx $len &store + if $store %end + getstrcharat $str $idx &stridx + equal $stridx $char &store + if $store %return + add $idx 1 &idx + jump %loop + + @return + return $idx + + @end +endfun + +fun -char !findCharInstance -string &str -char &char -int &instance + set &idx 0 + getstrsize $str &len + + @loop + equal $idx $len &store + if $store %end + getstrcharat $str $idx &stridx + equal $stridx $char &store + if $store %decrement + @increment + add $idx 1 &idx + jump %loop + + @decrement + equal $instance 0 &store + if $store %return + subtract $instance 1 &instance + jump %increment + + @return + return $idx + + @end +endfun + +fun -string !mid -string &str -int &idx -int &len + set &ans "" + lesser $idx 0 &store + if $store %end + @loop + getstrsize $str &store + equal $store $idx &store + if $store %end + getstrcharat $str $idx &store + add $ans $store &ans + add $idx 1 &idx + getstrsize $ans &store + equal $store $len &store + if $store %return + jump %loop + + @return + return $ans + + @end +endfun + +fun -string !inBrackets -string &str -char &left -char &right -int &instance + # Get start idx + pusharg $str + pusharg $left + pusharg $instance + call !findCharInstance &store + stdlnout $store +endfun + +fun -string !matchStart -string &str -string &instr + getstrsize $instr &store + pusharg $str + pusharg 0 + pusharg $store + call !mid &store + equal $store $instr &store + return $store +endfun \ No newline at end of file