From 0b8ede22a7c99f47fd60f6c0d102c70ae0ffeaf8 Mon Sep 17 00:00:00 2001 From: TKB Studios <69647028+tkbstudios@users.noreply.github.com> Date: Thu, 28 Mar 2024 12:40:00 +0100 Subject: [PATCH] Add splitString to textutils --- .../computercraft/lua/rom/apis/textutils.lua | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/projects/core/src/main/resources/data/computercraft/lua/rom/apis/textutils.lua b/projects/core/src/main/resources/data/computercraft/lua/rom/apis/textutils.lua index c32b619ea..88d5917bf 100644 --- a/projects/core/src/main/resources/data/computercraft/lua/rom/apis/textutils.lua +++ b/projects/core/src/main/resources/data/computercraft/lua/rom/apis/textutils.lua @@ -940,6 +940,32 @@ function urlEncode(str) return str end +--- Splits a string in a table +-- +-- @tparam string pString The string to split +-- @tparam string pPattern At which character/pattern to split the string +-- @treturn table A table containing the splitted strings. +-- @usage args = textutils.splitString("arg1 arg2", " ") +-- @since edit this if it goes live (I hope it does) +function splitString(pString, pPattern) + local Table = {} + local fpat = "(.-)" .. pPattern + local last_end = 1 + local s, e, cap = pString:find(fpat, 1) + while s do + if s ~= 1 or cap ~= "" then + table.insert(Table, cap) + end + last_end = e + 1 + s, e, cap = pString:find(fpat, last_end) + end + if last_end <= #pString then + cap = pString:sub(last_end) + table.insert(Table, cap) + end + return Table +end + local tEmpty = {} --- Provides a list of possible completions for a partial Lua expression.