FANDOM


local StringOperations = {}
 
function StringOperations.format(s, lookup)
	if not lookup then
		lookup = s
		s = lookup[1]
		table.remove(lookup, 1)
	end
	return (mw.ustring.gsub(s, '($%b{})', function(x) 
		local start_of_value, end_of_value, value = mw.ustring.find(x, '^${(.-)[[.!:}]')
		local start_of_access, end_of_access, access = mw.ustring.find(x, '^${.-%[(.-)%][!:}]')
		if not access then
			start_of_access, end_of_access, access = mw.ustring.find(x, '^${[^:]-%.(.-)[!:}]')
		end
		local start_of_conversion, end_of_conversion, conversion = mw.ustring.find(x, '^${.-!(.)[:}]')
		local start_of_format_spec, end_of_format_spec, format_spec = mw.ustring.find(x, ':(.*)}$')
 
		if access then
			value = lookup[value][access]
		else
			value = lookup[value]
		end
 
		if conversion then
			if conversion == 's' then
				value = tostring(value)
			end
		end
 
		if format_spec then
			local start_of_sign, end_of_sign, sign = mw.ustring.find(format_spec, '([+%- ])')
			local start_of_width, end_of_width, width, comma, precision, option = mw.ustring.find(format_spec, '(%d*)(,?)([.0-9]*)([bcdeEfFgGnosxX%%]?)$')
			precision = mw.ustring.sub(precision, 2)
			local number = tonumber(value)
			if #width > 0 then
				if number then
					value = mw.ustring.format(mw.ustring.format(number % 1 ~= 0 and "%%0%s.%sf" or "%%0%sd", width, #precision > 0 and precision or 0), number)
				end
				value = mw.ustring.format(mw.ustring.format("%%0%ss", width), value)
			elseif #precision > 0 and number then
				value = mw.ustring.format(mw.ustring.format("%%0%s.%sf", width, precision), number)
			end
			if sign then
				if number and number > 0 then
					if sign == "+" then
						value = "+" .. value
					elseif sign == " " then
						value = " " .. value
					end
				end
			end
		end
 
		return value
	end))
end
 
function StringOperations.split(string, separator, max_split, plain)
	assert(separator ~= '')
	assert(max_split == nil or max_split >= 1)
 
	local default_separator = false
 
	local result = {}
 
	if not separator or separator == '' then
		separator = '%s+'
		plain = false
		string = mw.text.trim(string)
		if string == '' then
			return result
		end
	end
 
	max_split = max_split or -1
 
	local item_index, start_index = 1, 1
	local separator_start, separator_end = mw.ustring.find(string, separator, start_index, plain)
	while separator_start and max_split ~= 0 do
		result[item_index] = mw.ustring.sub(string, start_index, separator_start - 1)
		item_index = item_index + 1
		start_index = separator_end + 1
		separator_start, separator_end = mw.ustring.find(string, separator, start_index, plain)
		max_split = max_split - 1
	end
	result[item_index] = mw.ustring.sub(string, start_index)
 
	return result
end
 
return StringOperations

Interferência de bloqueador de anúncios detectada!


A Wikia é um site grátis que ganha dinheiro com publicidade. Nós temos uma experiência modificada para leitores usando bloqueadores de anúncios

A Wikia não é acessível se você fez outras modificações. Remova o bloqueador de anúncios personalizado para que a página carregue como esperado.