Module:Road data/parser/hooks and Module:Road data/parser/hooks/sandbox: Difference between pages

(Difference between pages)
Jump to navigation Jump to search
Page 1
Page 2
imported>Ahecht
Avoid errors for routes with a letter (e.g. Brazil's 174B)
 
imported>Chinissai
m Corrected parser argument order.
 
Line 1: Line 1:
local p = {}
local p = {}


local parserModuleName = "Module:Road data/parser" -- SANDBOX REFERENCE
-- Change to "" upon deployment.
local moduleSuffix = "/sandbox"
 
local parserModuleName = "Module:Road data/parser" .. moduleSuffix


function p.split(parameters, args)
function p.split(parameters, args)
local route = tonumber(string.match(args.route, "%d+")) or 0
local route = tonumber(args.route) or 0
if route < parameters.split then
if route < parameters.split then
return parameters.below
return parameters.below
Line 24: Line 27:
local lower = parameters.lower
local lower = parameters.lower
local upper = parameters.upper
local upper = parameters.upper
local route = tonumber(string.match(args.route, "%d+")) or 0
local route = tonumber(args.route) or 0
if route < lower or route >= upper then
if route < lower or route >= upper then
return parameters.no
return parameters.no
Line 42: Line 45:


function p.padroute(parameters, args)
function p.padroute(parameters, args)
local route = mw.ustring.match(args.route, "%d+")
local route = args.route
local paddedLength = parameters.paddedLength
local paddedLength = parameters.paddedLength
args.paddedRoute = mw.ustring.match(args.route, "^%D*") ..
args.paddedRoute = string.format("%0" .. tostring(paddedLength) .. "d", route)
string.format("%0" .. tostring(paddedLength) .. "d", route) ..
mw.ustring.match(args.route, "%D*$")
return parameters.default
return parameters.default
end
end
Line 75: Line 76:
--[[
--[[
For the first element (pattern, action) in .actions such that
For the first element (pattern, action) in .actions such that
require(Module:Road data/parser).parser(args, .entry, .path, .kind)
require(Module:Road data/parser).parser(args, .entry, .kind, .path)
matches pattern as a regular expression, return action.
matches pattern as a regular expression, return action.
If no such element exists, return .default (nil if unspecified).
If no such element exists, return .default (nil if unspecified).


.path and .kind are optional.
.kind and .path are optional.
]]
]]
function p.match(parameters, args)
function p.match(parameters, args)
Line 86: Line 87:


local entry = parameters.entry
local entry = parameters.entry
local kind = parameters.kind
local path = parameters.path
local path = parameters.path
local kind = parameters.kind
local actions = parameters.actions
local actions = parameters.actions
local value = parser(args, entry, path, kind)
local value = parser(args, entry, kind, path)
for pattern,action in pairs(actions) do
for pattern,action in pairs(actions) do
if mw.ustring.match(value, pattern) then
if mw.ustring.match(value, pattern) then
Line 97: Line 98:
return parameters.default
return parameters.default
end
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
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
return p