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

Module:Text: Difference between revisions

From Mine in Abyss
minecraft>Unavailablehoax
update p.trim (https://phabricator.wikimedia.org/rELUAb3f55c05e963d9f36f092bba6d0a9deb9e468265), update source link
 
m 1 revision imported
 
(No difference)

Latest revision as of 14:43, 11 October 2024

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