Module:Road data/strings/JPN
This module is used to store type data for use with several road templates, including {{jct}} and {{routelist row}}. Background information and a summary of the syntax are listed below.
Exported types
This module exports the following types:
C2
, C3_TG
, C3_TK
, C4
, CA
, E10_H
, E10_M
, E11_M
, E11_TA
, E11_TO
, E13_T
, E13_TC
, E13_Y
, E14_F
, E14_K
, E14_T
, E16
, E17
, E18
, E19_C
, E19_N
, E1_M
, E1_T
, E1A_I
, E1A_SM
, E1A_ST
, E2
, E20
, E23_H
, E23_I
, E24
, E25_M
, E25_NM
, E26_H
, E26_K
, E27
, E28
, E29_C
, E29_H
, E29_T
, E2A_C
, E2A_K
, E3
, E30
, E31
, E32_K
, E32_T
, E34_N
, E34_ND
, E34_O
, E35
, E38
, E39
, E3A
, E4
, E41_N
, E41_T
, E42_H
, E42_K
, E44
, E45_HK
, E45_S
, E45_SK
, E46_A
, E46_K
, E46_T
, E48_S
, E48_T
, E48_Y
, E49
, E4A_A
, E4A_DM
, E4A_H
, E4A_K
, E4A_M
, E4A_MO
, E5
, E50_HM
, E50_HN
, E50_K
, E51
, E52_C
, E52_CO
, E52_T
, E54_M
, E54_O
, E55
, E56
, E58
, E58_Airport
, E59
, E5_H
, E5A_K
, E5A_SA
, E5A_SH
, E60
, E61_D
, E61_T
, E62
, E63
, E64
, E65
, E66
, E67
, E68_C
, E68_H
, E69_SN
, E69_ST
, E6_J
, E6_S
, E6_SH
, E6_ST
, E70
, E71
, E71_Bridge
, E72
, E73_C
, E73_O
, E73_Y
, E74_C
, E74_HA
, E74_HI
, E75
, E76_I
, E76_N
, E76_O
, E77
, E78
, E7_A
, E7_N
, E8
, E80
, E81
, E82
, E83_D
, E83_Y
, E84_S
, E84_SS
, E85
, E86
, E87
, E88
, E89
, E90
, E91_M
, E91_Y
, E92
, E93
, E94
, E95
, E96
, E97
, E97_Airport
, E98
, E9_K
, E9_S
, E9_SK
, Ex
, Exp
, National
, NR
and Route
Syntax
Hierarchy and fields
At its most basic level, this module is a nested table of strings. At the top is the root table, named for the abbreviation of a country, state, or province. This table stores the type data for a particular place, which is named in the comment in the first line, and is returned at the end of the module. The table is composed of further tables, one per type. The basic syntax for a type table is:
place.type = {
shield = "",
name = "",
link = "",
abbr = ""
}
The four main fields in a type table are shield
, name
, link
, and abbr
. Currently, these are the types used by all countries. By convention, they are always specified, using an empty string "",
if there is no value.
shield
determines the shield that is displayed, if anyname
specifies the name of the route displayed by an infoboxlink
specifies the target of a link generated, if anyabbr
determines the displayed abbreviation.
Other common fields in road data tables
shieldmain
is used when a different shield is desired at the top of an infobox, such as for county roads.
USA.CR = {
shield = "CR %route% jct.svg",
shieldmain = "[county||%county% |]County %route%.svg",
name = "County Road %route%",
link = "",
abbr = "CR %route%"
}
shieldlist
is used when a different shield is desired in lists that utilize the {{Routelist row}} series of templates.
base
can be used for aliasing different types that have a similar base structure, such as U.S. Highway special routes.
banner
stores the name of the special route plate, such asBusiness plate.svg
. Can be omitted when unused.width
stores a code representing the width of the shield. It is most often helpful when used withbanner
. Can be omitted entirely when unused; common values aresquare
andexpand
.
section
stores the specific section number for those routes that are defined by law.
translation
specifies the native language name of the route displayed by an infoboxlang
is the ISO 639-2 code of the native language; this code is used by {{Lang}} and Lang-xx templates.
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"
}
Once a type is defined, it can be referenced later in the code. As seen here, it is common to define all parameters for main types like US
and then to use aliases for subtypes such as 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"
}
Parser arguments
When the parser function of Module:Road data/parser is called, it is passed up to three parameters. The second one is the field to parse, and the last one is a rarely-used option designed for multiple-shield types. The first and most important parameter is a table of arguments collected by the calling module, which generally includes the state, country, or both; the type and number of the route; and a few miscellaneous arguments. This table of arguments forms the basis of the parser's format string syntax.
The table accessible by the strings includes the following entries by default:
state
: The state or province the route is located in.country
: The country the route is located in. If the country is not passed by the calling module, the parser will attempt to include it.
The above entries are primarily used to find the string module itself, so they should not be a concern for module writers.
type
: The type of the route. This determines the entry of the root table that is used by the parser.route
: The route "number". This is easily the most important argument for module writers.
The following entries are used less often:
county
: The county the route is located in. This is usually used for county routes in the United States.township
: This entry is similar in function and utility to thecounty
entry.dab
: A tag used to disambiguate the link target. This is mostly used for bannered routes in the United States.denom
: This rare entry is used exclusively for West Virginia county routes.
Parser hooks, which will be described later, can add entries to this table that may be used by strings.
Basic string syntax
The most basic value that can be used for most type table fields is a specially formatted string, which will be referred to in this documentation as a format string. This is the string that will ultimately be parsed and returned by the parser. A format string is an ordinary string object. The power of these strings comes in the form of two special instructions that are recognized by the parser.
The first is anything in %argument%
form. The parser will replace such a statement with the value of the argument
entry in the arguments table described earlier. This is what allows the route number to be spliced into a shield or link name.
The second special string is in the form of [arg|equals|then|else]
. This functions as a rudimentary if-then-else statement. The parser tests the value of arg
to see if it is equal to the value specified in equals
. equals
may be empty, in which case the parser tests the existence of the arg
argument. If the result of the test is true, the statement is replaced with the value of the then
block. Otherwise, it is replaced with the value of the else
block.
The two statements may be combined. The parser will parse the if-then-else statement first, and then perform the argument inclusion. This combination is commonly used with bannered routes in the United States, where the dab
argument is tested and the link disambiguation is adjusted accordingly, as follows:
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"
}
When parsing the link
field, the parser first checks to see if the dab
argument was provided. If so, it replaces the statement with %dab%,
. If not, the statement is replaced with the empty string placed in the else
block. Then, the parser replaces %route%
with the route number and, if the dab
argument was provided, %dab%
with the value of that argument.
Switching
Some logic is too complicated to represent with only format strings. This framework provides several methods to express complex data. All of these involve storing a nested table as the value of a field.
The most straightforward functionality provided by nested tables is switching. In its most basic form, the table consists of a series of key-value pairs, with the keys being route numbers and the values being the format strings used by those routes. Usually, the format string returned does not need parsing, but the option is there. A default
entry should be provided to handle any route numbers not explicitly stated. The following is a representative example of route-based switching (from Module:Road data/strings/USA/AR):
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"
}
In this example, Highways 917 and 980 have non-standard shield names, which are explicitly provided. Other route numbers use the default format.
Switching on other arguments is also allowed. The name of the argument to be used for switching is stated in the arg
field of the table. Nesting switches on different arguments is also allowed. A good example that uses both forms of switching can be found in Ontario:
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"
}
}
In this example, which is a shield table that is reused by several types in Ontario, the county
argument is used for the primary switch. If the route is in Simcoe County, a second switch is performed, this time on the route number.
Existence testing
Another use for tables is existence testing. If a table has the ifexists
field set to true
, the parser will perform existence testing on the result of parsing the default
field. If the test fails, the result of parsing the otherwise
field is returned. Existence testing may be chained by using a second ifexists table as the value of the first table's otherwise
field, and so on. Here's an example of nested existence testing (from Module:Road data/strings/GBR):
GBR.B = {
shield = {
ifexists = true,
default = "UK road B%route%.svg",
otherwise = {
ifexists = true,
default = "UK road B%route%.png"
}
},
link = "",
abbr = "B%route%"
}
Hooks
Due to technical limitations, these string modules cannot contain functions. Rather than force functionality into the string framework, the parser can call functions in a separate hooks module. The functions in this module, Module:Road data/parser/hooks, are more-or-less fully functional functions. The exact functionalities of these hooks are beyond the scope of this documentation. Descriptions of these hooks may be found on their documentation page.
Generally speaking, a hook is called by setting the hook
field in a table as equal to the name of a hook. Hooks receive two arguments, both tables: parameters
, which is the table in the definition; and args
, which is simply the table of arguments normally passed to the parser. The hook returns a string, which is then parsed as usual. A powerful feature of hooks is that they can add arbitrary values to the argument table, which may be referenced in the string returned by the hook. Generally, the format string returned by the hook is specified in some form by the default
field of the table, though there are exceptions. Here is an example of a hook (from Module:Road data/strings/MEX):
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%"
}
In this example, the parser will process the link by calling the mask
hook. In short, this hook takes the argument referenced in base
, passes it through the mask module specified in mask
, and stores it in the field in the arguments noted in masked
. The hook returns the string given in default
, which has access to the fullstate
argument added by the hook.
Other functionality
Functionality exists to display multiple shields for one route, which is used to display tolled and free shields for routes where they differ. This is done by supplying a table with two values, which are listed without indices. The parser is called twice by the calling module, and it returns one shield per call. An example may be found in Texas:
TX.Both = {
shield = {"Texas %route%.svg", "Toll Texas %route% new.svg"},
link = "Texas State Highway %route%",
abbr = "SH %route%",
width = 40
}
Structure
Each country has its own module. In the United States and Canada, each state/territory/province also has its own module. Each module begins with a comment stating the name of the country or state, followed by the root table declaration, as follows (from Module:Road data/strings/USA/AS):
-- American Samoa
local AS = {}
The root table is named based on the established abbreviation for the country or state, which is the same as the abbreviation used in the module title. This table stores the various types used in that particular place. Most of the remaining code in the module defines these various types. The module ends by returning the root table:
return AS
Aliasing
There are two ways to define a type as an alias. If the type is defined within the module, simply set the new type as equal to the type being aliased, as shown above (from Module:Road data/strings/HKG):
HKG.Route = {
shield = "HK Route%route%.svg",
link = "Route %route% (Hong Kong)",
abbr = "Route %route%"
}
HKG.route = HKG.Route
If the type is defined in a separate module, such as a state highway type being used in another state's module, a special syntax may be used to refer to that module (from Module:Road data/strings/USA/NJ):
NJ.NY = {alias = {module = "USA/NY", type = "NY"}}
This code sets the NY
type as a link to the NY
type in Module:Road data/strings/USA/NY. The parser will import that module and process the type as if the original module had declared it itself. The alias declaration may not add or override any data in the type table it points to.
Inheriting types
It is possible to predefine several types for a location by inheriting them from another module. In this example, the module for Albania inherits all of the specified types from the Europe module.
-- Albania
local ALB = {}
local util = require("Module:Road data/util")
util.addAll(ALB, require("Module:Road data/strings/EUR"))
Only one module may be inherited at this time.
Advanced uses
It is possible to create multiple types based on a specified pattern using ipairs
. In this example from Module:Road data/strings/USA/WA, the US 1926
, US 1948
, and US 1961
types are all created from the same code. At the bottom that is an override for US 1961
's 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"
Similarly, subtypes can be created in the same manner. This example creates 9 subtypes each for WA
and SR
. The aux
is inherited from Module:Road data/strings/USA. That, in turn, modifies auxType
and spec
accordingly.
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
Style
There are a few style guidelines that should be followed:
- Align table fields using tabs. All tables should be aligned so that fields line up with each other, as shown in the above examples.
- Each table field should be on its own line.
- Add spaces to either side of an assignment operator (equals sign).
- Leave a blank line between types. Type aliases should be set off from their base type by a blank line, but no blank lines should be placed between the aliases themselves.
-- Japan
local JPN = {}
JPN.National = {shield = {hook = "padroute",
paddedLength = 4,
default = "Japanese National Route Sign %paddedRoute%.svg"},
link = "Japan National Route %route%",
abbr = "National Route %route%"}
JPN.Route = JPN.National
JPN.NR = JPN.National
JPN.Exp = { shield = "%route% Expressway (Japan).png",
link = {["CA"] = "Tokyo Bay Aqua-Line",
["C2"] = "Mei-Nikan Expressway",
["C3"] = { arg = "dab",
TG = "Tokyo Gaikan Expressway",
TK = "Tōkai-Kanjō Expressway"},
["C4"] = "Ken-Ō Expressway",
},
abbr = "%route% Expressway"}
JPN.Ex = JPN.Exp
JPN.CA = {shield = "CA Expressway (Japan).png",
link = "Tokyo Bay Aqua-Line",
abbr = "Tokyo Bay Aqua-Line",
width = "20px"}
JPN.C2 = {shield = "C2 Expressway (Japan).png",
link = "Mei-Nikan Expressway",
abbr = "Mei-Nikan Expressway",
width = "20px"}
JPN.C3_TG = {shield = "C3 Expressway (Japan).png",
link = "Tokyo Gaikan Expressway",
abbr = "Tokyo Gaikan Expressway",
width = "20px"}
JPN.C3_TK = {shield = "C3 Expressway (Japan).png",
link = "Tōkai-Kanjō Expressway",
abbr = "Tōkai-Kanjō Expressway",
width = "20px"}
JPN.C4 = {shield = "C4 Expressway (Japan).png",
link = "Ken-Ō Expressway",
abbr = "Ken-Ō Expressway",
width = "20px"}
JPN.E1_T = {shield = "E1 Expressway (Japan).png",
link = "Tōmei Expressway",
abbr = "Tōmei Expressway",
width = "20px"}
JPN.E1_M = {shield = "E1 Expressway (Japan).png",
link = "Meishin Expressway",
abbr = "Meishin Expressway",
width = "20px"}
JPN.E1A_I = {shield = "E1A Expressway (Japan).png",
link = "Isewangan Expressway",
abbr = "Isewangan Expressway",
width = "25px"}
JPN.E1A_SM = {shield = "E1A Expressway (Japan).png",
link = "Shin-Meishin Expressway",
abbr = "Shin-Meishin Expressway",
width = "25px"}
JPN.E1A_ST = {shield = "E1A Expressway (Japan).png",
link = "Shin-Tōmei Expressway",
abbr = "Shin-Tōmei Expressway",
width = "25px"}
JPN.E2 = {shield = "E2 Expressway (Japan).png",
link = "San'yō Expressway",
abbr = "San'yō Expressway",
width = "20px"}
JPN.E2A_C = {shield = "E2A Expressway (Japan).png",
link = "Chūgoku Expressway",
abbr = "Chūgoku Expressway",
width = "25px"}
JPN.E2A_K = {shield = "E2A Expressway (Japan).png",
link = "Kanmon Bridge",
abbr = "Kanmon Bridge",
width = "25px"}
JPN.E3 = {shield = "E3 Expressway (Japan).png",
link = "Kyushu Expressway",
abbr = "Kyushu Expressway",
width = "20px"}
JPN.E3A = {shield = "E3A Expressway (Japan).png",
link = "Minamikyushu Expressway",
abbr = "Minamikyushu Expressway",
width = "25px"}
JPN.E4 = {shield = "E4 Expressway (Japan).png",
link = "Tōhoku Expressway",
abbr = "Tōhoku Expressway",
width = "20px"}
JPN.E4A_A = {shield = "E4A Expressway (Japan).png",
link = "Aomori Expressway",
abbr = "Aomori Expressway",
width = "25px"}
JPN.E4A_DM = {shield = "E4A Expressway (Japan).png",
link = "Daini-Michinoku Toll Road",
abbr = "Daini-Michinoku Toll Road",
width = "25px"}
JPN.E4A_H = {shield = "E4A Expressway (Japan).png",
link = "Hachinohe Expressway",
abbr = "Hachinohe Expressway",
width = "25px"}
JPN.E4A_K = {shield = "E4A Expressway (Japan).png",
link = "Kamikita Expressway",
abbr = "Kamikita Expressway",
width = "25px"}
JPN.E4A_M = {shield = "E4A Expressway (Japan).png",
link = "Michinoku Toll Road",
abbr = "Michinoku Toll Road",
width = "25px"}
JPN.E4A_MO = {shield = "E4A Expressway (Japan).png",
link = "Momoishi Toll Road",
abbr = "Momoishi Toll Road",
width = "25px"}
JPN.E5 = {shield = "E5 Expressway (Japan).png",
link = "Dō-Ō Expressway",
abbr = "Dō-Ō Expressway",
width = "20px"}
JPN.E5_H = {shield = "E5 Expressway (Japan).png",
link = "Hakodate Shindō",
abbr = "Hakodate Shindō",
width = "20px"}
JPN.E5A_K = {shield = "E5A Expressway (Japan).png",
link = "Kuromatsunai Shindō",
abbr = "Kuromatsunai Shindō",
width = "25px"}
JPN.E5A_SA = {shield = "E5A Expressway (Japan).png",
link = "Sasson Expressway",
abbr = "Sasson Expressway",
width = "25px"}
JPN.E5A_SH = {shield = "E5A Expressway (Japan).png",
link = "Shiribeshi Expressway",
abbr = "Shiribeshi Expressway",
width = "25px"}
JPN.E6_J = {shield = "E6 Expressway (Japan).png",
link = "Jōban Expressway",
abbr = "Jōban Expressway",
width = "20px"}
JPN.E6_S = {shield = "E6 Expressway (Japan).png",
link = "Sanriku Expressway",
abbr = "Sanriku Expressway",
width = "20px"}
JPN.E6_SH = {shield = "E6 Expressway (Japan).png",
link = "Sendai-Hokubu Road",
abbr = "Sendai-Hokubu Road",
width = "20px"}
JPN.E6_ST = {shield = "E6 Expressway (Japan).png",
link = "Sendai-Tōbu Road",
abbr = "Sendai-Tōbu Road",
width = "20px"}
JPN.E7_A = {shield = "E7 Expressway (Japan).png",
link = "Akita Expressway",
abbr = "Akita Expressway",
width = "20px"}
JPN.E7_N = {shield = "E7 Expressway (Japan).png",
link = "Nihonkai-Tōhoku Expressway",
abbr = "Nihonkai-Tōhoku Expressway",
width = "20px"}
JPN.E8 = {shield = "E8 Expressway (Japan).png",
link = "Hokuriku Expressway",
abbr = "Hokuriku Expressway",
width = "20px"}
JPN.E9_K = {shield = "E9 Expressway (Japan).png",
link = "Kyoto Jūkan Expressway",
abbr = "Kyoto Jūkan Expressway",
width = "20px"}
JPN.E9_S = {shield = "E9 Expressway (Japan).png",
link = "San'in Expressway",
abbr = "San'in Expressway",
width = "20px"}
JPN.E9_SK = {shield = "E9 Expressway (Japan).png",
link = "San'in Kinki Expressway",
abbr = "San'in Kinki Expressway",
width = "20px"}
JPN.E10_H = {shield = "E10 Expressway (Japan).png",
link = "Higashikyushu Expressway",
abbr = "Higashikyushu Expressway",
width = "25px"}
JPN.E10_M = {shield = "E10 Expressway (Japan).png",
link = "Miyazaki Expressway",
abbr = "Miyazaki Expressway",
width = "25px"}
JPN.E11_M = {shield = "E11 Expressway (Japan).png",
link = "Matsuyama Expressway",
abbr = "Matsuyama Expressway",
width = "25px"}
JPN.E11_TA = {shield = "E11 Expressway (Japan).png",
link = "Takamatsu Expressway",
abbr = "Takamatsu Expressway",
width = "25px"}
JPN.E11_TO = {shield = "E11 Expressway (Japan).png",
link = "Tokushima Expressway",
abbr = "Tokushima Expressway",
width = "25px"}
JPN.E13_T = {shield = "E13 Expressway (Japan).png",
link = "Tōhoku-Chūō Expressway",
abbr = "Tōhoku-Chūō Expressway",
width = "25px"}
JPN.E13_T = {shield = "E13 Expressway (Japan).png",
link = "Tōhoku Expressway",
abbr = "Tōhoku Expressway",
width = "25px"}
JPN.E13_TC = {shield = "E13 Expressway (Japan).png",
link = "Tōhoku-Chūō Expressway",
abbr = "Tōhoku-Chūō Expressway",
width = "25px"}
JPN.E13_Y = {shield = "E13 Expressway (Japan).png",
link = "Yuzawa-Yokote Road",
abbr = "Yuzawa-Yokote Road",
width = "25px"}
JPN.E14_F = {shield = "E14 Expressway (Japan).png",
link = "Futtsu Tateyama Road",
abbr = "Futtsu Tateyama Road",
width = "25px"}
JPN.E14_K = {shield = "E14 Expressway (Japan).png",
link = "Keiyō Road",
abbr = "Keiyō Road",
width = "25px"}
JPN.E14_T = {shield = "E14 Expressway (Japan).png",
link = "Tateyama Expressway",
abbr = "Tateyama Expressway",
width = "25px"}
JPN.E16 = {shield = "E16 Expressway (Japan).png",
link = "Yokohama Yokosuka Road",
abbr = "Yokohama Yokosuka Road",
width = "25px"}
JPN.E17 = {shield = "E17 Expressway (Japan).png",
link = "Kan-etsu Expressway",
abbr = "Kan-etsu Expressway",
width = "25px"}
JPN.E18 = {shield = "E18 Expressway (Japan).png",
link = "Jōshin-etsu Expressway",
abbr = "Jōshin-etsu Expressway",
width = "25px"}
JPN.E19_C = {shield = "E19 Expressway (Japan).png",
link = "Chūō Expressway",
abbr = "Chūō Expressway",
width = "25px"}
JPN.E19_N = {shield = "E19 Expressway (Japan).png",
link = "Nagano Expressway",
abbr = "Nagano Expressway",
width = "25px"}
JPN.E20 = {shield = "E20 Expressway (Japan).png",
link = "Chūō Expressway",
abbr = "Chūō Expressway",
width = "25px"}
JPN.E23_H = {shield = "E23 Expressway (Japan).png",
link = "Higashi-Meihan Expressway",
abbr = "Higashi-Meihan Expressway",
width = "25px"}
JPN.E23_I = {shield = "E23 Expressway (Japan).png",
link = "Ise Expressway",
abbr = "Ise Expressway",
width = "25px"}
JPN.E24 = {shield = "E24 Expressway (Japan).png",
link = "Keinawa Expressway",
abbr = "Keinawa Expressway",
width = "25px"}
JPN.E25_M = {shield = "E25 Expressway (Japan).png",
link = "Meihan Expressway",
abbr = "Meihan Expressway",
width = "25px"}
JPN.E25_NM = {shield = "E25 Expressway (Japan).png",
link = "Nishi-Meihan Expressway",
abbr = "Nishi-Meihan Expressway",
width = "25px"}
JPN.E26_H = {shield = "E26 Expressway (Japan).png",
link = "Hanwa Expressway",
abbr = "Hanwa Expressway",
width = "25px"}
JPN.E26_K = {shield = "E26 Expressway (Japan).png",
link = "Kinki Expressway",
abbr = "Kinki Expressway",
width = "25px"}
JPN.E27 = {shield = "E27 Expressway (Japan).png",
link = "Maizuru-Wakasa Expressway",
abbr = "Maizuru-Wakasa Expressway",
width = "25px"}
JPN.E28 = {shield = "E28 Expressway (Japan).png",
link = "Kobe-Awaji-Naruto Expressway",
abbr = "Kobe-Awaji-Naruto Expressway",
width = "25px"}
JPN.E29_C = {shield = "E29 Expressway (Japan).png",
link = "Chūgoku Expressway",
abbr = "Chūgoku Expressway",
width = "25px"}
JPN.E29_H = {shield = "E29 Expressway (Japan).png",
link = "Harima Expressway",
abbr = "Harima Expressway",
width = "25px"}
JPN.E29_T = {shield = "E29 Expressway (Japan).png",
link = "Tottori Expressway",
abbr = "Tottori Expressway",
width = "25px"}
JPN.E30 = {shield = "E30 Expressway (Japan).png",
link = "Seto-Chūō Expressway",
abbr = "Seto-Chūō Expressway",
width = "25px"}
JPN.E31 = {shield = "E31 Expressway (Japan).png",
link = "Hiroshima Kure Road",
abbr = "Hiroshima Kure Road",
width = "25px"}
JPN.E32_K = {shield = "E32 Expressway (Japan).png",
link = "Kōchi Expressway",
abbr = "Kōchi Expressway",
width = "25px"}
JPN.E32_T = {shield = "E32 Expressway (Japan).png",
link = "Tokushima Expressway",
abbr = "Tokushima Expressway",
width = "25px"}
JPN.E34_N = {shield = "E34 Expressway (Japan).png",
link = "Nagasaki Expressway",
abbr = "Nagasaki Expressway",
width = "25px"}
JPN.E34_ND = {shield = "E34 Expressway (Japan).png",
link = "Nagasaki Dejima Road",
abbr = "Nagasaki Dejima Road",
width = "25px"}
JPN.E34_O = {shield = "E34 Expressway (Japan).png",
link = "Ōita Expressway",
abbr = "Ōita Expressway",
width = "25px"}
JPN.E35 = {shield = "E35 Expressway (Japan).png",
link = "Nishi-Kyūshū Expressway",
abbr = "Nishi-Kyūshū Expressway",
width = "25px"}
JPN.E38 = {shield = "E38 Expressway (Japan).png",
link = "Dōtō Expressway",
abbr = "Dōtō Expressway",
width = "25px"}
JPN.E39 = {shield = "E39 Expressway (Japan).png",
link = "Asahikawa-Monbetsu Expressway",
abbr = "Asahikawa-Monbetsu Expressway",
width = "25px"}
JPN.E41_N = {shield = "E41 Expressway (Japan).png",
link = "Nōetsu Expressway",
abbr = "Nōetsu Expressway",
width = "25px"}
JPN.E41_T = {shield = "E41 Expressway (Japan).png",
link = "Tōkai-Hokuriku Expressway",
abbr = "Tōkai-Hokuriku Expressway",
width = "25px"}
JPN.E42_H = {shield = "E42 Expressway (Japan).png",
link = "Hanwa Expressway",
abbr = "Hanwa Expressway",
width = "25px"}
JPN.E42_K = {shield = "E42 Expressway (Japan).png",
link = "Kisei Expressway",
abbr = "Kisei Expressway",
width = "25px"}
JPN.E44 = {shield = "E44 Expressway (Japan).png",
link = "Kushiro Sotokan Road",
abbr = "Kushiro Sotokan Road",
width = "25px"}
JPN.E45_S = {shield = "E45 Expressway (Japan).png",
link = "Sanriku Expressway",
abbr = "Sanriku Expressway",
width = "25px"}
JPN.E45_SK = {shield = "E45 Expressway (Japan).png",
link = "Sanriku-kita Jūkan Road",
abbr = "Sanriku-kita Jūkan Road",
width = "25px"}
JPN.E45_HK = {shield = "E45 Expressway (Japan).png",
link = "Hachinohe-Kuji Expressway",
abbr = "Hachinohe-Kuji Expressway",
width = "25px"}
JPN.E46_A = {shield = "E46 Expressway (Japan).png",
link = "Akita Expressway",
abbr = "Akita Expressway",
width = "25px"}
JPN.E46_K = {shield = "E46 Expressway (Japan).png",
link = "Kamaishi Expressway",
abbr = "Kamaishi Expressway",
width = "25px"}
JPN.E46_T = {shield = "E46 Expressway (Japan).png",
link = "Tōhoku Expressway",
abbr = "Tōhoku Expressway",
width = "25px"}
JPN.E48_S = {shield = "E48 Expressway (Japan).png",
link = "Sendai-Nanbu Road",
abbr = "Sendai-Nanbu Road",
width = "25px"}
JPN.E48_T = {shield = "E48 Expressway (Japan).png",
link = "Tōhoku Expressway",
abbr = "Tōhoku Expressway",
width = "25px"}
JPN.E48_Y = {shield = "E48 Expressway (Japan).png",
link = "Yamagata Expressway",
abbr = "Yamagata Expressway",
width = "25px"}
JPN.E49 = {shield = "E49 Expressway (Japan).png",
link = "Ban-etsu Expressway",
abbr = "Ban-etsu Expressway",
width = "25px"}
JPN.E50_HM = {shield = "E50 Expressway (Japan).png",
link = "Higashi-Mito Road",
abbr = "Higashi-Mito Road",
width = "25px"}
JPN.E50_HN = {shield = "E50 Expressway (Japan).png",
link = "Hitachinaka Road",
abbr = "Hitachinaka Road",
width = "25px"}
JPN.E50_K = {shield = "E50 Expressway (Japan).png",
link = "Kita-Kantō Expressway",
abbr = "Kita-Kantō Expressway",
width = "25px"}
JPN.E51 = {shield = "E51 Expressway (Japan).png",
link = "Higashi-Kantō Expressway",
abbr = "Higashi-Kantō Expressway",
width = "25px"}
JPN.E52_C = {shield = "E52 Expressway (Japan).png",
link = "Chūō Expressway",
abbr = "Chūō Expressway",
width = "25px"}
JPN.E52_CO = {shield = "E52 Expressway (Japan).png",
link = "Chūbu-Ōdan Expressway",
abbr = "Chūbu-Ōdan Expressway",
width = "25px"}
JPN.E52_T = {shield = "E52 Expressway (Japan).png",
link = "Shin-Tōmei Expressway",
abbr = "Shin-Tōmei Expressway",
width = "25px"}
JPN.E54_M = {shield = "E54 Expressway (Japan).png",
link = "Matsue Expressway",
abbr = "Matsue Expressway",
width = "25px"}
JPN.E54_O = {shield = "E54 Expressway (Japan).png",
link = "Onomichi Expressway",
abbr = "Onomichi Expressway",
width = "25px"}
JPN.E55 = {shield = "E55 Expressway (Japan).png",
link = "Kōchi-Tōbu Expressway",
abbr = "Kōchi-Tōbu Expressway",
width = "25px"}
JPN.E56 = {shield = "E56 Expressway (Japan).png",
link = "Kōchi Expressway",
abbr = "Kōchi Expressway",
width = "25px"}
JPN.E58 = {shield = "E58 Expressway (Japan).png",
link = "Okinawa Expressway",
abbr = "Okinawa Expressway",
width = "25px"}
JPN.E58_Airport = {shield = "E58 Expressway (Japan).png",
link = "Naha Airport Expressway",
abbr = "Naha Airport Expressway",
width = "25px"}
JPN.E59 = {shield = "E59 Expressway (Japan).png",
link = "Hakodate-Esashi Expressway",
abbr = "Hakodate-Esashi Expressway",
width = "25px"}
JPN.E60 = {shield = "E60 Expressway (Japan).png",
link = "Obihiro-Hiroo Expressway",
abbr = "Obihiro-Hiroo Expressway",
width = "25px"}
JPN.E61_D = {shield = "E61 Expressway (Japan).png",
link = "Dōtō Expressway",
abbr = "Dōtō Expressway",
width = "25px"}
JPN.E61_T = {shield = "E61 Expressway (Japan).png",
link = "Tokachi-Okhotsk Expressway",
abbr = "Tokachi-Okhotsk Expressway",
width = "25px"}
JPN.E62 = {shield = "E62 Expressway (Japan).png",
link = "Fukagawa-Rumoi Expressway",
abbr = "Fukagawa-Rumoi Expressway",
width = "25px"}
JPN.E63 = {shield = "E63 Expressway (Japan).png",
link = "Hidaka Expressway",
abbr = "Hidaka Expressway",
width = "25px"}
JPN.E64 = {shield = "E64 Expressway (Japan).png",
link = "Tsugaru Expressway",
abbr = "Tsugaru Expressway",
width = "25px"}
JPN.E65 = {shield = "E65 Expressway (Japan).png",
link = "Shin-Kūkō Expressway",
abbr = "Shin-Kūkō Expressway",
width = "25px"}
JPN.E66 = {shield = "E66 Expressway (Japan).png",
link = "Ken-Ō Expressway",
abbr = "Ken-Ō Expressway",
width = "25px"}
JPN.E67 = {shield = "E67 Expressway (Japan).png",
link = "Chūbu-Jūkan Expressway",
abbr = "Chūbu-Jūkan Expressway",
width = "25px"}
JPN.E68_C = {shield = "E68 Expressway (Japan).png",
link = "Chūō Expressway",
abbr = "Chūō Expressway",
width = "25px"}
JPN.E68_H = {shield = "E68 Expressway (Japan).png",
link = "Higashifuji-goko Road",
abbr = "Higashifuji-goko Road",
width = "25px"}
JPN.E69_SN = {shield = "E69 Expressway (Japan).png",
link = "San-en Nanshin Expressway",
abbr = "San-en Nanshin Expressway",
width = "25px"}
JPN.E69_ST = {shield = "E69 Expressway (Japan).png",
link = "Shin-Tōmei Expressway#Inasa Connection Route",
abbr = "Shin-Tōmei Expressway",
width = "25px"}
JPN.E70 = {shield = "E70 Expressway (Japan).png",
link = "Izu-Jūkan Expressway",
abbr = "Izu-Jūkan Expressway",
width = "25px"}
JPN.E71 = {shield = "E71 Expressway (Japan).png",
link = "Kansai-Kūkō Expressway",
abbr = "Kansai-Kūkō Expressway",
width = "25px"}
JPN.E71_Bridge = {shield = "E71 Expressway (Japan).png",
link = "Sky Gate Bridge R",
abbr = "Sky Gate Bridge R",
width = "25px"}
JPN.E72 = {shield = "E72 Expressway (Japan).png",
link = "Kitakinki-Toyooka Expressway",
abbr = "Kitakinki-Toyooka Expressway",
width = "25px"}
JPN.E73_C = {shield = "E73 Expressway (Japan).png",
link = "Chūgoku Expressway",
abbr = "Chūgoku Expressway",
width = "25px"}
JPN.E73_O = {shield = "E73 Expressway (Japan).png",
link = "Okayama Expressway",
abbr = "Okayama Expressway",
width = "25px"}
JPN.E73_Y = {shield = "E73 Expressway (Japan).png",
link = "Yonago Expressway",
abbr = "Yonago Expressway",
width = "25px"}
JPN.E74_C = {shield = "E74 Expressway (Japan).png",
link = "Chūgoku Expressway",
abbr = "Chūgoku Expressway",
width = "25px"}
JPN.E74_HA = {shield = "E74 Expressway (Japan).png",
link = "Hamada Expressway",
abbr = "Hamada Expressway",
width = "25px"}
JPN.E74_HI = {shield = "E74 Expressway (Japan).png",
link = "Hiroshima Expressway",
abbr = "Hiroshima Expressway",
width = "25px"}
JPN.E75 = {shield = "E75 Expressway (Japan).png",
link = "Higashihiroshima-Kure Expressway",
abbr = "Higashihiroshima-Kure Expressway",
width = "25px"}
JPN.E76_I = {shield = "E76 Expressway (Japan).png",
link = "Imabari-Komatsu Expressway",
abbr = "Imabari-Komatsu Expressway",
width = "25px"}
JPN.E76_N = {shield = "E76 Expressway (Japan).png",
link = "Nishiseto Expressway",
abbr = "Nishiseto Expressway",
width = "25px"}
JPN.E76_O = {shield = "E76 Expressway (Japan).png",
link = "Onomichi-Fukuyama Expressway",
abbr = "Onomichi-Fukuyama Expressway",
width = "25px"}
JPN.E77 = {shield = "E77 Expressway (Japan).png",
link = "Kyushu Chūō Expressway",
abbr = "Kyushu Chūō Expressway",
width = "25px"}
JPN.E78 = {shield = "E78 Expressway (Japan).png",
link = "Higashikyushu Expressway",
abbr = "Higashikyushu Expressway",
width = "25px"}
JPN.E80 = {shield = "E80 Expressway (Japan).png",
link = "Abukuma Kōgen Road",
abbr = "Abukuma Kōgen Road",
width = "25px"}
JPN.E81 = {shield = "E81 Expressway (Japan).png",
link = "Nikkō Utsunomiya Road",
abbr = "Nikkō Utsunomiya Road",
width = "25px"}
JPN.E82 = {shield = "E82 Expressway (Japan).png",
link = "Chiba-Tōgane Road",
abbr = "Chiba-Tōgane Road",
width = "25px"}
JPN.E83_D = {shield = "E83 Expressway (Japan).png",
link = "Daisan Keihin Road",
abbr = "Daisan Keihin Road",
width = "25px"}
JPN.E83_Y = {shield = "E83 Expressway (Japan).png",
link = "Yokohama Shindō",
abbr = "Yokohama Shindō",
width = "25px"}
JPN.E84_S = {shield = "E84 Expressway (Japan).png",
link = "Seishō Bypass",
abbr = "Seishō Bypass",
width = "25px"}
JPN.E84_SS = {shield = "E84 Expressway (Japan).png",
link = "Shin-Shōnan Bypass",
abbr = "Shin-Shōnan Bypass",
width = "25px"}
JPN.E85 = {shield = "E85 Expressway (Japan).png",
link = "Odawara-Atsugi Road",
abbr = "Odawara-Atsugi Road",
width = "25px"}
JPN.E86 = {shield = "E86 Expressway (Japan).png",
link = "Noto Satoyama Kaido",
abbr = "Noto Satoyama Kaido",
width = "25px"}
JPN.E87 = {shield = "E87 Expressway (Japan).png",
link = "Chitahantō Road",
abbr = "Chitahantō Road",
width = "25px"}
JPN.E88 = {shield = "E88 Expressway (Japan).png",
link = "Keiji Bypass",
abbr = "Keiji Bypass",
width = "25px"}
JPN.E89 = {shield = "E89 Expressway (Japan).png",
link = "Second Keihan Highway",
abbr = "Daini Keihan Road",
width = "25px"}
JPN.E90 = {shield = "E90 Expressway (Japan).png",
link = "Sakai Senboku Road",
abbr = "Sakai Senboku Road",
width = "25px"}
JPN.E91_M = {shield = "E91 Expressway (Japan).png",
link = "Minami-Hanna Road",
abbr = "Minami-Hanna Road",
width = "25px"}
JPN.E91_Y = {shield = "E91 Expressway (Japan).png",
link = "Yamatotakada Bypass",
abbr = "Yamatotakada Bypass",
width = "25px"}
JPN.E92 = {shield = "E92 Expressway (Japan).png",
link = "Daini Hanna Road",
abbr = "Daini Hanna Road",
width = "25px"}
JPN.E93 = {shield = "E93 Expressway (Japan).png",
link = "Daini-Shinmei Road",
abbr = "Daini-Shinmei Road",
width = "25px"}
JPN.E94 = {shield = "E94 Expressway (Japan).png",
link = "Kitasen Road",
abbr = "Kitasen Road",
width = "25px"}
JPN.E95 = {shield = "E95 Expressway (Japan).png",
link = "Bantan Renraku Road",
abbr = "Bantan Renraku Road",
width = "25px"}
JPN.E96 = {shield = "E96 Expressway (Japan).png",
link = "Nagasaki Bypass",
abbr = "Nagasaki Bypass",
width = "25px"}
JPN.E97 = {shield = "E97 Expressway (Japan).png",
link = "Hiji Bypass",
abbr = "Hiji Bypass",
width = "25px"}
JPN.E97_Airport = {shield = "E97 Expressway (Japan).png",
link = "Ōita Airport Road",
abbr = "Ōita Airport Road",
width = "25px"}
JPN.E98 = {shield = "E98 Expressway (Japan).png",
link = "Hitotsuba Toll Road",
abbr = "Hitotsuba Toll Road",
width = "25px"}
return JPN