Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Documentation for this module may be created at 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 )
  if not charset then
    return string.match( s, '^()%s*$' ) and '' or string.match( s, '^%s*(.*%S)' )
  else
    return ( string.gsub( s, '^[' .. charset .. ']*(.-)[' .. charset .. ']*$', '%1' ) )
  end
end

return p