Module:Road data/parser/hooks
local p = {}
 
 local parserModuleName = &quot;Module:Road data/parser&quot; -- SANDBOX REFERENCE
 
 function p.split(parameters, args)
 	local route = tonumber(string.match(args.route, &quot;%d+&quot;)) or 0
 	if route &lt; parameters.split then
 		return parameters.below
 	else
 		return parameters.above
 	end
 end
 
 function p.splitlen(parameters, args)
 	local route = args.route
 	if #route &lt; 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, &quot;%d+&quot;)) or 0
 	if route &lt; lower or route &gt;= 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 = &quot;Module:&quot; .. parameters.mask
 	local mask = mw.loadData(maskModule)
 	args[maskedParam] = mask[args[baseParam]]
 	return parameters.default
 end
 
 function p.padroute(parameters, args)
 	local route = args.route
 	local paddedLength = parameters.paddedLength
 	args.paddedRoute = string.format(&quot;%0&quot; .. tostring(paddedLength) .. &quot;d&quot;, 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 = args[baseParam]
 	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 = args[subParam]
 
 	local iso3166Module = require(&quot;Module:ISO 3166&quot;)
 	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