We've Moved! Just as Gamepedia has joined forces with Fandom, this wiki had joined forces with our Fandom equivalent. The wiki has been archived and we ask that readers and editors move to the now combined wiki on Fandom. Click to go to the new wiki.


From The Vault - Fallout Wiki
Jump to: navigation, search

To edit the documentation or categories for this module, click here.
This is an exact copy of the built-in mw.text.gsplit, mw.text.split, and mw.text.trim functions, just using the significantly faster string library instead of the ustring library. As such, this won't work properly if you're trying to split a string by unicode characters, or trim unicode characters from a string. Unicode characters being in the string should be fine though.

-- Source: https://phabricator.wikimedia.org/diffusion/ELUA/browse/master/includes/engines/LuaCommon/lualib/mw.text.lua
local p = {}

function p.gsplit( text, pattern, plain )
  local s, l = 1, text:len()
  return function ()
    if s then
      local e, n = text:find( pattern, s, plain )
      local ret
      if not e then
        ret = text:sub( s )
        s = nil
      elseif n < e then
        -- Empty separator!
        ret = text:sub( s, e )
        if e < l then
          s = e + 1
          s = nil
        ret = e > s and text:sub( s, e - 1 ) or ''
        s = n + 1
      return ret
  end, nil, nil

function p.split( text, pattern, plain )
  local ret = {}
  for m in p.gsplit( text, pattern, plain ) do
    ret[#ret+1] = m
  return ret

function p.trim( s, charset )
	charset = charset or '\t\r\n\f '
	s = s:gsub( '^[' .. charset .. ']*(.-)[' .. charset .. ']*$', '%1' )
	return s

return p