Module:StringUtils
From TwogPedia
            Documentation for this module may be created at Module:StringUtils/doc
local String = {}
function String.startsWith(str, start)
	return str:sub(1, #start) == start --str:find('^' .. start) ~= nil
end
function String.endsWith(str, ending)
	return ending == '' or str:sub(-#ending) == ending
end
function String.split(inputstr, sep)
	if inputstr ~= nil then
		if sep == nil then
			sep = '%s'
		end
		inputstr = inputstr:gsub(sep, '&')
		local t = {}
		local i = 1
		for str in string.gmatch(inputstr, '([^&]+)') do
			t[i] = str
			i = i + 1
		end
		return t
	else
		return {''}
	end
end
-- need to escape .()[]+-% with % for 'match'
function String.contains(str, match)
	return string.find(str, match) ~= nil
end
function String.trim(str)
	return (str:gsub('^%s*(.-)%s*$', '%1'))
end
function String.nilIfEmpty(str)
	return str ~= '' and str or nil
end
function String.isEmpty(str)
	return str == nil or str == ''
end
function String.isNotEmpty(str)
	return str ~= nil and str ~= ''
end
-- index counts up from 0
function String.explode(str, delimiter, index)
	return String.split(str, delimiter)[index + 1] or ''
end
--transforms a wiki code list
---->> * text
---->> * text
--into a html list (with ul/li tags)
function String.convertWikiListToHtmlList(str, delimiter)
	if String.isEmpty(str) then
		return ''
	end
	if String.isEmpty(delimiter) then
		delimiter = '*'
	end
	local strArray = mw.text.split(str, delimiter)
	local list = mw.html.create('ul')
	for _, item in ipairs(strArray) do
		if not String.isEmpty(item) then
			list:tag('li'):wikitext(item)
		end
	end
	return tostring(list)
end
-- Create a string with string interpolation
--
-- String.interpolation('I\'m ${age} years old', {age = 40})
-- Returns `I'm 40 years old`
--
-- Inspiration: http://lua-users.org/wiki/StringInterpolation
function String.interpolate(s, tbl)
	return (
		s:gsub('($%b{})',
			function(w)
				return tbl[w:sub(3, -2)] or w
			end
		)
	)
end
return String
No categories