1,226 bytes added
	
		,  23:22, 15 July 2021
	
 
local p = {}
local subtypeDefaults = {Alt = "Alternate", Bus = "Business", Byp = "Bypass", Conn = "Connector", Emerg = "Emergency", Loop = "Loop", Old = "Old",
                         Opt = "Optional", Scenic = "Scenic", Spur = "Spur", Temp = "Temporary", Toll = "Toll", Truck = "Truck"}
function p._subtype(subtype, subtypes)
    setmetatable(subtypes, {__index = subtypeDefaults})
    return subtypes[subtype]
end
function p.subtype(frame)
    local pframe = frame:getParent()
    local config = frame.args -- the arguments passed BY the template, in the wikitext of the template itself
    local args = pframe.args -- the arguments passed TO the template, in the wikitext that transcludes the template
    local subtype = config.subtype or args.subtype
    local subtypes = {}
    subtypes.Alt = args.alt
    subtypes.Bus = args.bus
    subtypes.Byp = args.byp
    subtypes.Conn = args.con
    subtypes.Emerg = args.eme
    subtypes.Loop = args.lop
    subtypes.Old = args.old
    subtypes.Opt = args.opt
    subtypes.Scenic = args.sce
    subtypes.Spur = args.spr
    subtypes.Temp = args.tmp
    subtypes.Toll = args.tol
    subtypes.Truck = args.trk
    
    return p._subtype(subtype, subtypes) or ''
end
return p