Permanently protected module
From Wikipedia, the free encyclopedia


local p = {}



local parserModuleName = "Module:Road data/parser" -- SANDBOX REFERENCE



function p.split(parameters, args)

	local route = tonumber(string.match(args.route, "%d+")) or 0

	if route < parameters.split then

		return parameters.below

	else

		return parameters.above

	end

end



function p.splitlen(parameters, args)

	local route = args.route

	if #route < parameters.split then

		return parameters.below

	else

		return parameters.above

	end

end



function p.between(parameters, args)

	local lower = parameters.lower

	local upper = parameters.upper

	local route = tonumber(string.match(args.route, "%d+")) or 0

	if route < lower or route >= upper then

		return parameters.no

	else

		return parameters.yes

	end

end



function p.mask(parameters, args)

	local baseParam = parameters.base

	local maskedParam = parameters.masked

	local maskModule = "Module:" .. parameters.mask

	local mask = mw.loadData(maskModule)

	argsmaskedParam = maskargsbaseParam]]

	return parameters.default

end



function p.padroute(parameters, args)

	local route = args.route

	local paddedLength = parameters.paddedLength

	args.paddedRoute = string.format("%0" .. tostring(paddedLength) .. "d", route)

	return parameters.default

end



function p.lowercase(parameters, args)

	local route = args.route

	args.lowercase = string.lower(route)

	return parameters.default

end



--[[

For the first element (pattern, action) in .actions such that

args[.base] begins with pattern, return action.

If no such element exists, return .default (nil if unspecified).

]]

function p.beginswith(parameters, args)

	local baseParam = parameters.base

	local actions = parameters.actions

	local arg = argsbaseParam

	for pattern,action in pairs(actions) do

		if mw.ustring.sub(arg, 1, mw.ustring.len(pattern)) == pattern then

			return action

		end

	end

	return parameters.default

end



--[[

For the first element (pattern, action) in .actions such that

require(Module:Road data/parser).parser(args, .entry, .path, .kind)

matches pattern as a regular expression, return action.

If no such element exists, return .default (nil if unspecified).



.path and .kind are optional.

]]

function p.match(parameters, args)

	local parserModule = require(parserModuleName)

	local parser = parserModule.parser



	local entry = parameters.entry

	local path = parameters.path

	local kind = parameters.kind

	local actions = parameters.actions

	local value = parser(args, entry, path, kind)

	for pattern,action in pairs(actions) do

		if mw.ustring.match(value, pattern) then

			return action

		end

	end

	return parameters.default

end



function p.iso3166Sub(parameters, args)

	local country = args.country

	local subParam = parameters.sub

	local subCode = argssubParam



	local iso3166Module = require("Module:ISO 3166")

	args.iso3166Sub = iso3166Module.luaname{country, subCode}

	return parameters.default

end



function p.pagename(parameters, args)

	local pagename = mw.title.getCurrentTitle().text

	local article = parameters.article

	

	if article == pagename then

		return parameters.iftrue

	else

		return parameters.default or ''

	end

end





return p