Module:Text

From Minecraft Wiki
Jump to: navigation, search
[view | edit | history | purge]DocumentationJump to code ↴

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.

[view | edit | history | purge]The above documentation is transcluded from Module:Text/doc.
-- 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
        else
          s = nil
        end
      else
        ret = e > s and text:sub( s, e - 1 ) or ''
        s = n + 1
      end
      return ret
    end
  end, nil, nil
end

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

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

return p