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