请输入您要查询的百科知识:

 

',

"U", concat(unusedArgs, ", "))

local page = mw.title.getCurrentTitle().prefixedText -- Get transcluding page's title

msg = mw.ustring.gsub(msg, "%%page%%", page)

end

return result .. (msg or "")

end

return p

8 : Jctint template tracking category|Jctint template tracking category|Jctint template tracking category|Jctint template tracking category|Jctint template tracking category|Jctint template tracking category|Jctint template tracking category|Jctint template tracking category

词条 Module:Jctint/USA
释义

local p = {}

local format = mw.ustring.format

local concat = table.concat

local insert = table.insert

local roadDataModule = require("Module:Road data")

-- TODO transition-- begin transition code

local region_special = {

GA = "Georgia",

NY = "New York",

WA = "Washington"

}

local indep_city = {

CA = {

["San Francisco"] = {

prefix = "City and County of "

}

},

CO = {

["Denver"] = {

prefix = "City and County of "

},

default = {

prefix = "City and County of ",

linksuffix = ", Colorado"

}

},

MD = {

["Baltimore"] = {

namesuffix = " City"

}

}

}

local sub1Config = {

LA = "parish"

}

local sub1name = {

LA = "Parish"

}

local sub1span = {

LA = {"cspan", "pspan"}

}

local sub2params = {

NY = {"town"},

WI = {"town", "township"}

}

local subConfig = {

county = {

group = "county"

},

parish = {

group = "parish"

},

indep_city = {

group = "city"

},

town = {

sub2area = "town",

group = "town",

single = true

},

township = {

sub2area = "township",

group = "township",

single = true,

firstnonum = true

}

}

local pspan = {

LA = "plspan"

}

local function sub_special(args, subTypeConfig, specialPrefix, subType)

-- Find parameter.

local subParam

for _,p in ipairs(subTypeConfig) do

if args[p .. 1] or args[p] then

subParam = p

break

end

end

if not subParam then

return args[specialPrefix .. "_special"]

end

local config = subConfig[subParam] or {}

local subs = {}

-- Retrieve wikilinks for subdivisions.

local num = 1

while num == 1 or args[subParam .. num] do

-- Save parameters.

local saved = {}

saved[subType]= args[subType]

args[subType] = args[subParam .. num] or num == 1 and args[subParam]

saved.sub1dab = args.sub1dab

args.sub1dab = args["ctdab" .. num] or args.ctdab or num == 1 and config.firstnonum and args.county

saved.area = args.area

args.area = not (config.nosub1dab and args.sub1dab)

and (config.sub2area or args["area" .. num] or num == 1 and config.firstnonum and args.area)

local locns = roadDataModule.locations(args, "jctint", true)

-- Restore parameters.

args[subType] = saved[subType]

args.sub1dab = saved.sub1dab

args.area = saved.area

subs[num] = locns[subType]

num = num + 1

end

if #subs > 1 then

-- Construct wikitext for multiple subs.

local textParts = {}

insert(textParts, subs[1])

for i = 2, #subs do

insert(textParts, "–")

if i % 2 ~= 0 then

-- Odd subs after first begin a new line.

insert(textParts, "
")

end

insert(textParts, subs[i])

end

local groupSuffix = args[specialPrefix .. "_group"] or config.group

if groupSuffix then

insert(textParts,

format("%s%s", #subs % 2 == 0 and "
" or " ", groupSuffix))

end

if #subs == 2 then

insert(textParts, " line")

elseif #subs == 3 then

insert(textParts, " tripoint")

elseif #subs == 4 then

insert(textParts, " quadripoint")

else

insert(textParts, " multipoint")

end

return concat(textParts)

elseif #subs == 1 and config.single then

-- TODO transition

-- Save parameters.

local saved = {}

saved[subType]= args[subType]

args[subType] = args[subParam .. 1] or args[subParam]

saved.sub1dab = args.sub1dab

args.sub1dab = args.ctdab1 or args.ctdab or config.firstnonum and args.county

saved.area = args.area

args.area = not (config.nosub1dab and args.sub1dab)

and (config.sub2area or args.area1 or config.firstnonum and args.area)

local locns = roadDataModule.locations(args, "jctint")

-- Restore parameters.

args[subType] = saved[subType]

args.sub1dab = saved.sub1dab

args.area = saved.area

return locns[subType]

end

end

-- end transition code

local function trackedArray(arr)

local origArr = arr

arr = {}

local mt = {

__index = function(t, k)

local result = origArr[k]

origArr[k] = nil

t[k] = result

return result

end

}

setmetatable(arr, mt)

return arr

end

function p._jctint(args)

local sub1config = sub1Config[args.state] or "county"

-- Tracked parameters

local msgs = {}

if (args.township or args.township1) and args[sub1config] and not (args.ctdab or args.ctdab1) then

insert(msgs, format("", "D"))

elseif not (args.location3 or args.township3 or args.town3) and args.ctdab and (args.ctdab1 or args.ctdab2) then

insert(msgs, format("", "D"))

end

if args.township2 and args.township then

insert(msgs, format("", "T"))

end

if args.type == "mplex" then

insert(msgs, format("", "M"))

end

local blanks = {"location", "altunit", "exit", "road", "notes"}

for _,param in ipairs(blanks) do

if args[param] == " " then

insert(msgs, format("", "B"))

break

end

end

local spans = {"cspan", "lspan", "mspan", "auspan", "ospan", "espan", "namespan", "rspan", "nspan", "pspan", "xcspan"}

for _,param in ipairs(spans) do

if args[param] == "1" then

insert(msgs, format("", "S"))

break

end

end

local trackedParams = {

R = "length_ref",

X = "indep_city_special",

Y = sub1config .. "_special",

Z = "location_special"

}

for key,param in pairs(trackedParams) do

if args[param] then

insert(msgs, format("", key))

end

end

-- Track used arguments

local origArgs = args

args = trackedArray(args)

local lengthUnit = args.unitdef or "mile"

-- Extra parameters

local moduleArgs = {}

-- Parameters to be renamed

local paramSubst = {

region_special = "state_special",

regionspan = "sspan",

sub1 = sub1config,

sub1_note = sub1config .. "_note",

sub1span = sub1span[args.state] or "cspan",

sub1dab = "ctdab",

sub2 = "location",

sub2span = "lspan",

unit = lengthUnit,

unit2 = lengthUnit .. "2",

unit_ref = {lengthUnit .. "_ref", "length_ref" --TODO transition},

uspan = "mspan",

place = {"place", "bridge", "tunnel"},

pspan = pspan[args.state] or "pspan"

}

-- Redirect undefined arguments to passed arguments

local mt = {

__index = function(t, k)

if paramSubst[k] then

-- Renamed parameter

local src = paramSubst[k]

if type(src) == "table" then

for _,param in ipairs(src) do

if args[param] then return args[param] end

end

else

if args[src] then return args[src] end

end

end

return args[k]

end

}

setmetatable(moduleArgs, mt)

moduleArgs.country = "USA"

-- TODO transition

-- begin transition code

moduleArgs.primary_topic = "no"

moduleArgs.sub1name = sub1name[args.state] or "County"

moduleArgs.region_special = region_special[args.state]

moduleArgs.region = mw.loadData("Module:Jct/statename")[args.state]

-- Independent city

local indepCityText = sub_special(moduleArgs, {"indep_city"}, "indep_city", "sub2")

if not indepCityText and args.indep_city then

local indepCity = args.indep_city

local spec = indep_city[args.state] and

(indep_city[args.state][indepCity] or indep_city[args.state].default)

if spec then

local link = format("%s%s%s",

spec.linkprefix or "", indepCity, spec.linksuffix or "")

local name = format("%s%s%s",

spec.nameprefix or "", indepCity, spec.namesuffix or "")

indepCityText = format("%s%s",

spec.prefix or "", link, name)

else

-- Specialize independent city to the region.

local cityLink = format('%s', indepCity, moduleArgs.region, indepCity)

indepCityText = "City of " .. cityLink

end

args.indep_city = nil

end

moduleArgs.indep_city_special = indepCityText

moduleArgs.sub1_special = sub_special(moduleArgs, {sub1config}, sub1config, "sub1")

local sub2Config = {}

if args.sub2param then

insert(sub2Config, args.sub2param)

end

if sub2params[args.state] then

for _,param in ipairs(sub2params[args.state]) do

insert(sub2Config, param)

end

end

insert(sub2Config, "location")

moduleArgs.sub2_special = sub_special(moduleArgs, sub2Config, "location", "sub2")

-- end transition code

moduleArgs.unitdef = args.unitdef or "mi"

-- Crossing

if args.xing then

local colType

local colAlignType

if args.xcspan == "3" then

colType = "unitary"

colAlignType = "unitary_align"

elseif args.xcspan == "2" then

colType = "indep_city_special"

colAlignType = "indep_city_align"

else

colType = "sub2_special"

colAlignType = "sub2_align"

end

moduleArgs[colType] = args.xing

moduleArgs[colAlignType] = "center"

end

local coreModule = require("Module:Jctint/core")

local coreResult = coreModule._jctint(moduleArgs)

-- Report unused arguments

local unusedArgs = {}

for key,_ in pairs(origArgs) do

insert(unusedArgs, key)

end

local msg

if #msgs > 0 then

local page = mw.title.getCurrentTitle().prefixedText -- Get transcluding page's title

msg = mw.ustring.gsub(concat(msgs), "%%page%%", page)

end

return coreResult .. (msg or ""), unusedArgs

end

function p.jctint(frame)

-- Import module function to work with passed arguments

local getArgs = require('Module:Arguments').getArgs

local args = getArgs(frame)

-- Remove parameters already used in the template definition

if args.used_params then

for param in mw.text.gsplit(args.used_params, ",") do

args[param] = nil

end

args.used_params = nil

end

local result, unusedArgs = p._jctint(args)

-- Check for overridden arguments

local frameArgs = getArgs(frame, {frameOnly = true})

local parentArgs = getArgs(frame, {parentOnly = true})

for key,_ in pairs(frameArgs) do

if parentArgs[key] then insert(unusedArgs, key) end

end

-- Report unused arguments

local msg

if #unusedArgs > 0 then

msg = format("" ..

'

Module:Jctint/USA warning: Unused argument(s): %s
随便看

 

开放百科全书收录14589846条英语、德语、日语等多语种百科知识,基本涵盖了大多数领域的百科知识,是一部内容自由、开放的电子版国际百科全书。

 

Copyright © 2023 OENC.NET All Rights Reserved
京ICP备2021023879号 更新时间:2024/9/30 4:17:39