Модул:Корисник:Ђидо/Инфокутија/функције

С Википедије, слободне енциклопедије

Документацију овог модула можете да направите на страници Модул:Корисник:Ђидо/Инфокутија/функције/док

local p = {}; 

local transliteration = require('Модул:Transliteration')

function getCannonicalName(param, paramNames)
	
	for k, v in pairs(paramNames) do
		for i, possibleParamName in ipairs(v) do
			local actualName = transliteration.latinize(param:lower():gsub('-', ' '):gsub('_', ' '))
			local expectedName = transliteration.latinize(possibleParamName:lower())
			if actualName == expectedName then
				return k
			end
		end
	end
	
	return nil
end

p.parseBoolean = function(text, default)
	if text then
		local value = transliteration.latinize(text:lower())
		if value == 'ne' or value == 'no' or value == '0' or value == 'false' then
			return false
		elseif value == 'da' or value == 'yes' or value == '1' or value == 'true' then
			return true
		else 
			error('Непозната вредност за да/не вредност: ' .. text)
		end
	end
	
	return default or false
end

p.parseParams = function(params, paramNames)
	local knownParams = {}
	local unknownParams = {}
	local positionalParams = {}
	for k, v in pairs(params) do
		local number = tonumber(k)
		if number then
			table.insert(positionalParams, v)
		else
			local cannonicalName = getCannonicalName(k, paramNames)
			if cannonicalName then
				knownParams[cannonicalName] = v
			else 
				unknownParams[k] = v
			end
		end
	end
	return { knownParams, unknownParams, positionalParams }
end

return p