Module:UtilsString

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

function p.CapitalizeFirstLetter(str) return (str:gsub("^%l", string.upper)) end

function p.isEmpty(str) return str == nil or str == "" end

function p.nilIfEmpty(str) if str and str ~= "" then return str end end

function p.format(formatString) return function(...) return string.format(formatString, ...) end end

function p.startsWith(pattern, str) return str:sub(1, #pattern) == pattern end

function p.endsWith(pattern, str) return str.match(str, pattern, #str - #pattern + 1) == pattern end

function p.gsplit( text, pattern, plain ) if not pattern then pattern = '%s*,%s*' end 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

-- By http://lua-users.org/wiki/RiciLake -- See http://lua-users.org/wiki/StringInterpolation function p.interpolate(s, tab) return (s:gsub('($%b{})', function(w) return tab[w:sub(3, -2)] or w end)) end

return p