diff --git a/worldeditadditions/utils/strings/split.lua b/worldeditadditions/utils/strings/split.lua index 69e5518..3b5a994 100644 --- a/worldeditadditions/utils/strings/split.lua +++ b/worldeditadditions/utils/strings/split.lua @@ -42,16 +42,37 @@ function worldeditadditions.gsplit(text, pattern, plain) end --- Split a string into substrings separated by a pattern. +--- Split a string into substrings separated by a pattern. -- @param text string The string to iterate over -- @param pattern string The separator pattern -- @param plain boolean If true (or truthy), pattern is interpreted as a -- plain string, not a Lua pattern -- @returns table A sequence table containing the substrings -function worldeditadditions.split(text, pattern, plain) +-- function worldeditadditions.split(text, pattern, plain) +-- local ret = {} +-- for match in worldeditadditions.gsplit(text, pattern, plain) do +-- table.insert(ret, match) +-- end +-- return ret +-- end + +--- Split a string into substrings separated by a pattern. +-- @param str string The string to iterate over +-- @param dlm string The delimiter (separator) pattern +-- @param plain boolean If true (or truthy), pattern is interpreted as a +-- plain string, not a Lua pattern +-- @returns table A sequence table containing the substrings +function worldeditadditions.split (str,dlm,plain) + local pos, ins = 0, 0 local ret = {} - for match in worldeditadditions.gsplit(text, pattern, plain) do - table.insert(ret, match) + repeat + ins = str:find(dlm,pos,plain) + table.insert(ret,str:sub(pos,ins - 1)) + pos = ins + #dlm + until not str:find(dlm,pos,plain) + print(pos..","..#str) + if str:sub(pos,#str) ~= "" then + table.insert(ret,str:sub(pos,#str)) end return ret end