Module:Road data/parser/hooks: Difference between revisions
< Module:Road data | parser
(Only use numeric part of route number in split and between hooks) |
m (1 revision imported) |
(No difference)
|
Latest revision as of 11:46, 7 September 2021
Documentation for this module may be created at Module:Road data/parser/hooks/doc
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) 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("%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 = 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("Module:ISO 3166") args.iso3166Sub = iso3166Module.luaname{country, subCode} return parameters.default end return p