Module:Роад дата/стрингс/УСА/доc
This is the documentation page for Modul:Road data/strings/USA
Тҳис модуле ис усед то сторе тйпе дата фор усе wитҳ северал роад темплатес, инcлудинг {{жcт}} анд {{роутелист роw}}. Баcкгроунд информатион анд а суммарй оф тҳе сйнтах аре листед белоw.
Сйнтах
[edit source]Ҳиэрарчй анд фиэлдс
[edit source]Ат иц мост басиc левел, тҳис модуле ис а нестед табле оф стрингс. Ат тҳе топ ис тҳе роот табле, намед фор тҳе аббревиатион оф а cоунтрй, стате, ор провинcе. Тҳис табле сторес тҳе тйпе дата фор а партиcулар плаcе, wҳич ис намед ин тҳе cоммент ин тҳе фирст лине, анд ис ретурнед ат тҳе энд оф тҳе модуле. Тҳе табле ис cомпосед оф фуртҳер таблес, оне пер тйпе. Тҳе басиc сйнтах фор а тйпе табле ис:
place.type = {
shield = "",
name = "",
link = "",
abbr = ""
}
Тҳе фоур маин фиэлдс ин а тйпе табле аре shield
, name
, link
, анд abbr
. Cуррентлй, тҳесе аре тҳе тйпес усед бй алл cоунтриэс. Бй cонвентион, тҳей аре алwайс спеcифиэд, усинг ан эмптй стринг "",
иф тҳере ис но валуэ.
shield
детерминес тҳе шиэлд тҳат ис дисплаед, иф анйname
спеcифиэс тҳе наме оф тҳе роуте дисплаед бй ан инфобохlink
спеcифиэс тҳе таргет оф а линк генератед, иф анйabbr
детерминес тҳе дисплаед аббревиатион.
Отҳер cоммон фиэлдс ин роад дата таблес
shieldmain
ис усед wҳен а дифферент шиэлд ис десиред ат тҳе топ оф ан инфобох, суч ас фор cоунтй роадс.
USA.CR = {
shield = "CR %route% jct.svg",
shieldmain = "[county||%county% |]County %route%.svg",
name = "County Road %route%",
link = "",
abbr = "CR %route%"
}
shieldlist
ис усед wҳен а дифферент шиэлд ис десиред ин лисц тҳат утилизе тҳе {{Роутелист роw}} сериэс оф темплатес.
base
cан бе усед фор алиасинг дифферент тйпес тҳат ҳаве а симилар басе струcтуре, суч ас У.С. Ҳигҳwай спеcиал роутес.
banner
сторес тҳе наме оф тҳе спеcиал роуте плате, суч асBusiness plate.svg
. Cан бе омиттед wҳен унусед.width
сторес а cоде репресентинг тҳе wидтҳ оф тҳе шиэлд. Ит ис мост офтен ҳелпфул wҳен усед wитҳbanner
. Cан бе омиттед энтирелй wҳен унусед; cоммон валуэс ареsquare
андexpand
.
section
сторес тҳе спеcифиc сеcтион нумбер фор тҳосе роутес тҳат аре дефинед бй лаw.
translation
спеcифиэс тҳе нативе лангуаге наме оф тҳе роуте дисплаед бй ан инфобохlang
ис тҳе ИСО 639-2 cоде оф тҳе нативе лангуаге; тҳис cоде ис усед бй {{Ланг}} анд {{Ланг-хх}}.
PER.RN = {
shield = "PE-%route% route sign.svg",
name = "National Route %route%",
link = "Peru Highway %route%",
abbr = "PE-%route%",
translation = "Ruta nacional %route%",
lang = "es-pe"
}
Онcе а тйпе ис дефинед, ит cан бе референcед латер ин тҳе cоде. Ас сеэн ҳере, ит ис cоммон то дефине алл параметерс фор маин тйпес лике US
анд тҳен то усе алиасес фор субтйпес суч ас US-Alt
.
MO.US = {
shield = "US %route%.svg",
base = "U.S. Route %route%",
link = "U.S. Route %route% in Missouri",
abbr = "US %route%",
width = "expand"
}
MO["US-Alt"] = {
shield = MO.US.shield,
link = MO.US.base .. " Alternate ([dab||%dab%, |]Missouri)",
abbr = MO.US.abbr .. " Alt.",
banner = "Alternate plate.svg",
width = "expand"
}
Парсер аргуменц
[edit source]Wҳен тҳе парсер фунcтион оф Модуле:Роад дата/парсер ис cаллед, ит ис пассед уп то тҳреэ параметерс. Тҳе сеcонд оне ис тҳе фиэлд то парсе, анд тҳе ласт оне ис а рарелй-усед оптион десигнед фор мултипле-шиэлд тйпес. Тҳе фирст анд мост импортант параметер ис а табле оф аргуменц cоллеcтед бй тҳе cаллинг модуле, wҳич генераллй инcлудес тҳе стате, cоунтрй, ор ботҳ; тҳе тйпе анд нумбер оф тҳе роуте; анд а феw мисcелланеоус аргуменц. Тҳис табле оф аргуменц формс тҳе басис оф тҳе парсер'с формат стринг сйнтах.
Тҳе табле аccессибле бй тҳе стрингс инcлудес тҳе фоллоwинг энтриэс бй дефаулт:
state
: Тҳе стате ор провинcе тҳе роуте ис лоcатед ин.country
: Тҳе cоунтрй тҳе роуте ис лоcатед ин. Иф тҳе cоунтрй ис нот пассед бй тҳе cаллинг модуле, тҳе парсер wилл аттемпт то инcлуде ит.
Тҳе абове энтриэс аре примарилй усед то финд тҳе стринг модуле ицелф, со тҳей шоулд нот бе а cонcерн фор модуле wритерс.
type
: Тҳе тйпе оф тҳе роуте. Тҳис детерминес тҳе энтрй оф тҳе роот табле тҳат ис усед бй тҳе парсер.route
: Тҳе роуте "нумбер". Тҳис ис эасилй тҳе мост импортант аргумент фор модуле wритерс.
Тҳе фоллоwинг энтриэс аре усед лесс офтен:
county
: Тҳе cоунтй тҳе роуте ис лоcатед ин. Тҳис ис усуаллй усед фор cоунтй роутес ин тҳе Унитед Статес.township
: Тҳис энтрй ис симилар ин фунcтион анд утилитй то тҳеcounty
энтрй.dab
: А таг усед то дисамбигуате тҳе линк таргет. Тҳис ис мостлй усед фор баннеред роутес ин тҳе Унитед Статес.denom
: Тҳис раре энтрй ис усед эхcлусивелй фор Wест Виргиниа cоунтй роутес.
Парсер ҳоокс, wҳич wилл бе десcрибед латер, cан адд энтриэс то тҳис табле тҳат май бе усед бй стрингс.
Басиc стринг сйнтах
[edit source]Тҳе мост басиc валуэ тҳат cан бе усед фор мост тйпе табле фиэлдс ис а спеcиаллй форматтед стринг, wҳич wилл бе реферред то ин тҳис доcументатион ас а формат стринг. Тҳис ис тҳе стринг тҳат wилл ултимателй бе парсед анд ретурнед бй тҳе парсер. А формат стринг ис ан ординарй стринг обжеcт. Тҳе поwер оф тҳесе стрингс cомес ин тҳе форм оф тwо спеcиал инструcтионс тҳат аре реcогнизед бй тҳе парсер.
Тҳе фирст ис анйтҳинг ин %argument%
форм. Тҳе парсер wилл реплаcе суч а статемент wитҳ тҳе валуэ оф тҳе argument
энтрй ин тҳе аргуменц табле десcрибед эарлиэр. Тҳис ис wҳат аллоwс тҳе роуте нумбер то бе сплиcед инто а шиэлд ор линк наме.
Тҳе сеcонд спеcиал стринг ис ин тҳе форм оф [arg|equals|then|else]
. Тҳис фунcтионс ас а рудиментарй иф-тҳен-элсе статемент. Тҳе парсер тесц тҳе валуэ оф arg
то сеэ иф ит ис эқуал то тҳе валуэ спеcифиэд ин equals
. equals
май бе эмптй, ин wҳич cасе тҳе парсер тесц тҳе эхистенcе оф тҳе arg
аргумент. Иф тҳе ресулт оф тҳе тест ис труэ, тҳе статемент ис реплаcед wитҳ тҳе валуэ оф тҳе then
блоcк. Отҳерwисе, ит ис реплаcед wитҳ тҳе валуэ оф тҳе else
блоcк.
Тҳе тwо статеменц май бе cомбинед. Тҳе парсер wилл парсе тҳе иф-тҳен-элсе статемент фирст, анд тҳен перформ тҳе аргумент инcлусион. Тҳис cомбинатион ис cоммонлй усед wитҳ баннеред роутес ин тҳе Унитед Статес, wҳере тҳе dab
аргумент ис тестед анд тҳе линк дисамбигуатион ис аджустед аccординглй, ас фоллоwс:
AL["US-Bus"] = {
shield = "US %route%.svg",
link = "U.S. Route %route% Business ([dab||%dab%, |]Alabama)",
abbr = "US-%route% Bus.",
banner = "Business plate.svg",
width = "expand"
}
Wҳен парсинг тҳе link
фиэлд, тҳе парсер фирст чеcкс то сеэ иф тҳе dab
аргумент wас провидед. Иф со, ит реплаcес тҳе статемент wитҳ %dab%,
. Иф нот, тҳе статемент ис реплаcед wитҳ тҳе эмптй стринг плаcед ин тҳе else
блоcк. Тҳен, тҳе парсер реплаcес %route%
wитҳ тҳе роуте нумбер анд, иф тҳе dab
аргумент wас провидед, %dab%
wитҳ тҳе валуэ оф тҳат аргумент.
Сwитчинг
[edit source]Соме логиc ис тоо cомплиcатед то репресент wитҳ онлй формат стрингс. Тҳис фрамеwорк провидес северал метҳодс то эхпресс cомплех дата. Алл оф тҳесе инволве сторинг а нестед табле ас тҳе валуэ оф а фиэлд.
Тҳе мост страигҳтфорwард фунcтионалитй провидед бй нестед таблес ис сwитчинг. Ин иц мост басиc форм, тҳе табле cонсисц оф а сериэс оф кей-валуэ паирс, wитҳ тҳе кейс беинг роуте нумберс анд тҳе валуэс беинг тҳе формат стрингс усед бй тҳосе роутес. Усуаллй, тҳе формат стринг ретурнед доэс нот неэд парсинг, бут тҳе оптион ис тҳере. А default
энтрй шоулд бе провидед то ҳандле анй роуте нумберс нот эхплиcитлй статед. Тҳе фоллоwинг ис а репресентативе эхампле оф роуте-басед сwитчинг (фром Модуле:Роад дата/стрингс/УСА/АР):
AR.AR = {
shield = {
default = "Arkansas %route%.svg",
["917"] = "Arkansas 917-1.svg",
["980"] = "Arkansas 980(Airport).svg"
},
link = "Arkansas Highway %route% [dab||(%dab%)|]",
abbr = "Hwy. %route%",
width = "expand"
}
Ин тҳис эхампле, Ҳигҳwайс 917 анд 980 ҳаве нон-стандард шиэлд намес, wҳич аре эхплиcитлй провидед. Отҳер роуте нумберс усе тҳе дефаулт формат.
Сwитчинг он отҳер аргуменц ис алсо аллоwед. Тҳе наме оф тҳе аргумент то бе усед фор сwитчинг ис статед ин тҳе arg
фиэлд оф тҳе табле. Нестинг сwитчес он дифферент аргуменц ис алсо аллоwед. А гоод эхампле тҳат усес ботҳ формс оф сwитчинг cан бе фоунд ин Онтарио:
local regionalShields = {
arg = "county",
["Essex"] = "Essex County Road %route%.png",
["York"] = "York Regional Road %route%.svg",
["Durham"] = "Durham Regional Road %route%.svg",
["Niagara"] = "Niagara Regional Road %route%.svg",
["Simcoe"] = {
["52"] = "Simcoe county road 52.png",
default = "Simcoe County Road %route%.JPG"
}
}
Ин тҳис эхампле, wҳич ис а шиэлд табле тҳат ис реусед бй северал тйпес ин Онтарио, тҳе county
аргумент ис усед фор тҳе примарй сwитч. Иф тҳе роуте ис ин Симcоэ Cоунтй, а сеcонд сwитч ис перформед, тҳис тиме он тҳе роуте нумбер.
Эхистенcе тестинг
[edit source]Анотҳер усе фор таблес ис эхистенcе тестинг. Иф а табле ҳас тҳе ifexists
фиэлд сет то true
, тҳе парсер wилл перформ эхистенcе тестинг он тҳе ресулт оф парсинг тҳе default
фиэлд. Иф тҳе тест фаилс, тҳе ресулт оф парсинг тҳе otherwise
фиэлд ис ретурнед. Эхистенcе тестинг май бе чаинед бй усинг а сеcонд ифехисц табле ас тҳе валуэ оф тҳе фирст табле'с otherwise
фиэлд, анд со он. Ҳере'с ан эхампле оф нестед эхистенcе тестинг (фром Модуле:Роад дата/стрингс/ГБР):
GBR.B = {
shield = {
ifexists = true,
default = "UK road B%route%.svg",
otherwise = {
ifexists = true,
default = "UK road B%route%.png"
}
},
link = "",
abbr = "B%route%"
}
Ҳоокс
[edit source]Дуэ то течниcал лимитатионс, тҳесе стринг модулес cаннот cонтаин фунcтионс. Ратҳер тҳан форcе фунcтионалитй инто тҳе стринг фрамеwорк, тҳе парсер cан cалл фунcтионс ин а сепарате ҳоокс модуле. Тҳе фунcтионс ин тҳис модуле, Модуле:Роад дата/парсер/ҳоокс, аре море-ор-лесс фуллй фунcтионал фунcтионс. Тҳе эхаcт фунcтионалитиэс оф тҳесе ҳоокс аре беёнд тҳе сcопе оф тҳис доcументатион. Десcриптионс оф тҳесе ҳоокс май бе фоунд он тҳеир доcументатион паге.
Генераллй спеакинг, а ҳоок ис cаллед бй сеттинг тҳе hook
фиэлд ин а табле ас эқуал то тҳе наме оф а ҳоок. Ҳоокс реcеиве тwо аргуменц, ботҳ таблес: parameters
, wҳич ис тҳе табле ин тҳе дефинитион; анд args
, wҳич ис симплй тҳе табле оф аргуменц нормаллй пассед то тҳе парсер. Тҳе ҳоок ретурнс а стринг, wҳич ис тҳен парсед ас усуал. А поwерфул феатуре оф ҳоокс ис тҳат тҳей cан адд арбитрарй валуэс то тҳе аргумент табле, wҳич май бе референcед ин тҳе стринг ретурнед бй тҳе ҳоок. Генераллй, тҳе формат стринг ретурнед бй тҳе ҳоок ис спеcифиэд ин соме форм бй тҳе default
фиэлд оф тҳе табле, тҳоугҳ тҳере аре эхcептионс. Ҳере ис ан эхампле оф а ҳоок (фром Модуле:Роад дата/стрингс/МЕХ):
MEX.SH = {
shield = {
ifexists = true,
arg = "state",
SON = "HIGHWAYSON %route%.jpg",
NLE = "Nuevo Leon State Highway %route%.PNG",
default = ""
},
link = {
hook = "mask",
mask = "Road data/masks/MEX",
base = "state",
masked = "fullstate",
default = "%fullstate% State Highway %route%"
},
abbr = "SH %route%"
}
Ин тҳис эхампле, тҳе парсер wилл проcесс тҳе линк бй cаллинг тҳе mask
ҳоок. Ин шорт, тҳис ҳоок такес тҳе аргумент референcед ин base
, пассес ит тҳроугҳ тҳе маск модуле спеcифиэд ин mask
, анд сторес ит ин тҳе фиэлд ин тҳе аргуменц нотед ин masked
. Тҳе ҳоок ретурнс тҳе стринг гивен ин default
, wҳич ҳас аccесс то тҳе fullstate
аргумент аддед бй тҳе ҳоок.
Отҳер фунcтионалитй
[edit source]Фунcтионалитй эхисц то дисплай мултипле шиэлдс фор оне роуте, wҳич ис усед то дисплай толлед анд фреэ шиэлдс фор роутес wҳере тҳей диффер. Тҳис ис доне бй супплйинг а табле wитҳ тwо валуэс, wҳич аре листед wитҳоут индиcес. Тҳе парсер ис cаллед тwиcе бй тҳе cаллинг модуле, анд ит ретурнс оне шиэлд пер cалл. Ан эхампле май бе фоунд ин Техас:
TX.Both = {
shield = {"Texas %route%.svg", "Toll Texas %route% new.svg"},
link = "Texas State Highway %route%",
abbr = "SH %route%",
width = 40
}
Струcтуре
[edit source]Эач cоунтрй ҳас иц оwн модуле. Ин тҳе Унитед Статес анд Cанада, эач стате/территорй/провинcе алсо ҳас иц оwн модуле. Эач модуле бегинс wитҳ а cоммент статинг тҳе наме оф тҳе cоунтрй ор стате, фоллоwед бй тҳе роот табле деcларатион, ас фоллоwс (фром Модуле:Роад дата/стрингс/УСА/АС):
-- American Samoa
local AS = {}
Тҳе роот табле ис намед басед он тҳе эстаблишед аббревиатион фор тҳе cоунтрй ор стате, wҳич ис тҳе саме ас тҳе аббревиатион усед ин тҳе модуле титле. Тҳис табле сторес тҳе вариоус тйпес усед ин тҳат партиcулар плаcе. Мост оф тҳе ремаининг cоде ин тҳе модуле дефинес тҳесе вариоус тйпес. Тҳе модуле эндс бй ретурнинг тҳе роот табле:
return AS
Алиасинг
[edit source]Тҳере аре тwо wайс то дефине а тйпе ас ан алиас. Иф тҳе тйпе ис дефинед wитҳин тҳе модуле, симплй сет тҳе неw тйпе ас эқуал то тҳе тйпе беинг алиасед, ас шоwн абове (фром Модуле:Роад дата/стрингс/ҲКГ):
HKG.Route = {
shield = "HK Route%route%.svg",
link = "Route %route% (Hong Kong)",
abbr = "Route %route%"
}
HKG.route = HKG.Route
Иф тҳе тйпе ис дефинед ин а сепарате модуле, суч ас а стате ҳигҳwай тйпе беинг усед ин анотҳер стате'с модуле, а спеcиал сйнтах май бе усед то рефер то тҳат модуле (фром Модуле:Роад дата/стрингс/УСА/НЖ):
NJ.NY = {alias = {module = "USA/NY", type = "NY"}}
Тҳис cоде сец тҳе NY
тйпе ас а линк то тҳе NY
тйпе ин Модуле:Роад дата/стрингс/УСА/НЙ. Тҳе парсер wилл импорт тҳат модуле анд проcесс тҳе тйпе ас иф тҳе оригинал модуле ҳад деcларед ит ицелф. Тҳе алиас деcларатион май нот адд ор оверриде анй дата ин тҳе тйпе табле ит поинц то.
Инҳеритинг тйпес
[edit source]Ит ис поссибле то предефине северал тйпес фор а лоcатион бй инҳеритинг тҳем фром анотҳер модуле. Ин тҳис эхампле, тҳе модуле фор Албаниа инҳериц алл оф тҳе спеcифиэд тйпес фром тҳе Эуропе модуле.
-- Albania
local ALB = {}
local util = require("Module:Road data/util")
util.addAll(ALB, require("Module:Road data/strings/EUR"))
Андоза:Н.б. Онлй оне модуле май бе инҳеритед ат тҳис тиме.
Адванcед усес
[edit source]Ит ис поссибле то cреате мултипле тйпес басед он а спеcифиэд паттерн усинг ipairs
. Ин тҳис эхампле фром Модуле:Роад дата/стрингс/УСА/WА, тҳе US 1926
, US 1948
, анд US 1961
тйпес аре алл cреатед фром тҳе саме cоде. Ат тҳе боттом тҳат ис ан оверриде фор US 1961
'с shieldmain
.
for _,year in ipairs({"1926", "1948", "1961"}) do
WA["US " .. year] = {
shield = format("US %%route%% (%s).svg", year),
shieldmain = format("US %%route%% Washington %s.svg", year),
base = WA.US.base,
name = WA.US.name,
link = WA.US.link,
abbr = WA.US.abbr,
width = "square",
}
end
WA["US 1961"].shieldmain = "US %route% (1961).svg"
Симиларлй, субтйпес cан бе cреатед ин тҳе саме маннер. Тҳис эхампле cреатес 9 субтйпес эач фор WA
анд SR
. Тҳе aux
ис инҳеритед фром Модуле:Роад дата/стрингс/УСА. Тҳат, ин турн, модифиэс auxType
анд spec
аccординглй.
for _,type in ipairs({'WA', 'SR'}) do
for _,auxType in ipairs({"Alt", "Bus", "Byp", "Conn", "Opt", "Scenic", "Spur", "Temp", "Truck"}) do
local spec = WA[" aux "][auxType]
WA[type .. "-" .. auxType] = {
shield = WA[type].shield,
shieldmain = WA[type].shieldmain,
name = WA[type].name .. " " .. spec.name,
link = WA[type].link .. " " .. spec.name .. suffix,
abbr = WA[type].abbr .. " " .. spec.abbrsuffix,
banner = spec.bannerprefix .. " plate.svg",
aux = spec.aux,
width = WA[type].width
}
end
end
Стйле
[edit source]Тҳере аре а феw стйле гуиделинес тҳат шоулд бе фоллоwед:
- Алигн табле фиэлдс усинг табс. Алл таблес шоулд бе алигнед со тҳат фиэлдс лине уп wитҳ эач отҳер, ас шоwн ин тҳе абове эхамплес.
- Эач табле фиэлд шоулд бе он иц оwн лине.
- Адд спаcес то эитҳер сиде оф ан ассигнмент оператор (эқуалс сигн).
- Леаве а бланк лине бетwеэн тйпес. Тйпе алиасес шоулд бе сет офф фром тҳеир басе тйпе бй а бланк лине, бут но бланк линес шоулд бе плаcед бетwеэн тҳе алиасес тҳемселвес.