Module:Adjacent stations/doc explained

This module implements,,,, and . Please see those templates' pages for documentation on how to use those templates. (Instructions for the convert function of this module are in the documentation.)

The aforementioned templates rely on data stored in subpages for this module (list). For example, generates using .

It is possible to create and edit data by following existing examples, but having some knowledge of Lua helps prevent mistakes. If you have programmed or used Lua before, you may like to skip the next subsection.

Terms

Basic structure

Two modules are demonstrated below:

The example module is .

Below is :

Hierarchy and list of parameters

  1. The first layer of the table is data for the entire system, as well as output options.
  2. Under the system table is the list of lines.
  3. The third layer is data for a given line.
  4. Each line can have 'types'. This can be either types of services or branches of the line.
  5. The fifth layer is data for a given type.

If not specified, all keys and values are strings.

Main layer (1)

!Parameter!Type!Used in !Description
["lang"]StringValues are "en-US" and "en-GB". If not set, "en-GB" is assumed.
["system title"]StringText in the middle cell of the header.
["system icon"]StringImage used in the middle cell of the header and by .
["system icon format"]StringIcon type, used by . If specified and not "image", the value is passed to the function that implements .
["system color"]StringRGB hex triplet (three or six characters, like "BE2D2C" or "039"). Can be called by using only one parameter in .
["header stop noun"]StringThe noun after 'preceding' and 'following' in the left and right header cells. Default value is "station".
["name format"]StringCSS for the header of and anything else using the style function with . Values can be strings or nested tables, with the first level being for the line (whatever's in of). The second level is currently unused. The first entry in a nested table with no key (i.e. with key 1) is the default.
["header background color"]StringRGB hex triplet for subheaders and anything else using the style function with . By default, it is a light gray. Values can be strings or nested tables, like those for "name format".
["header text color"]StringRGB hex triplet for subheaders and anything else using the style function with . By default, it is calculated based on the header background color. Values can be strings or nested tables, like those for ["name format"].
["station format"]Table or stringTable containing station format strings. The first entry without a specified key (i.e. with the key being the number 1) is the default, and all other entries must have keys corresponding to the input. Format strings without wikilink brackets are converted to links, with the input (usually the station name) used as the displayed text. Tables can be nested within this table to indicate options based on the line and line type passed to this template.

%1, %2 and %3 can be used in all strings regardless of the level of nesting to be replaced respectively by the station input, the line input (after alias replacement) and the type input (after alias replacement).

["lines"]TableData table containing line tables.
["aliases"]TableTable containing aliases (as table keys) for lines (as values). All keys are lowercase, as the input is treated as case-insensitive by being lower-cased.

Station format table (2)

!Parameter!Type!Used in !Description
[1]StringDefault format.
["''non-default station name''"]String or tableFormat for a non-default station, or line-specific format table.

Line-specific format table (3)

!Parameter!Type!Used in !Description
[1]StringDefault format.
["''line name''"]String or tableFormat for a non-default station, or type-specific format table.

Type-specific format table (4)

!Parameter!Type!Used in !Description
[1]StringDefault format.
["''type name''"]StringFormat for a non-default station.

Line table (3)

A virtual line named ["_default"] can be added to set default values for all lines. Currently, this is available for three parameters.

ParameterTypeUsed in Description
["title"]StringThe text displayed in the middle cell, typically a link to the line's article. If not specified, then the data in ["_default"] is used (%1 in the default value is replaced by the input after alias replacement).
["short name"]StringAbbreviated line name used by and .
["icon"]StringImage used by . If not specified, then the data in ["_default"] is used (%1 in the default value is replaced by the input after alias replacement).
["icon format"]StringIcon type used by . If specified and not "image", the value is passed to the function that implements .
["color"]StringRGB hex triplet. Lines fall back to the ["_default"] colour (if any) or the system's colour if they themselves do not have one; types fall back to the line's colour (if any), to the ["_default"] colour (if any) or to the system's colour. This colour is used in the second and fourth columns of, and by and as the emphasised colour. By default, if a type and its line both have a colour, then the line's colour will be treated as the background colour (see next section) for the line name in the middle cell. This can be turned off by setting the type's background colour to "" or "transparent".
["background color"] StringRGB hex triplet (three or six characters). This colour is optional and is only displayed behind the line name in the middle cell. The module adds transparency so that all text displayed over the background is legible.
["border color"]StringRGB hex triplet used by .
["text color"]StringRGB hex triplet used by .
["left terminus"]StringThe station which is usually the left terminus of the line. If there are multiple stations by default, the value should be a table containing numbered values (e.g. ["left terminus"] = {"Chesham", "Amersham"}). The key ["via"] in that table can be used to append 'via' and the value's station link.
["right terminus"]StringThe station which is usually the right terminus of the line; behaves like ["left terminus"].
["note-mid"]StringDefault small text below line and type names. Overridden by in transclusion.
["circular"]BooleanIf the value is true then the termini will display without 'toward'/'towards'. May be overridden by type.
["oneway-left"] BooleanIf the value is true then 'One-way operation' will display instead of the left terminus.
["oneway-right"]BooleanRight counterpart of oneway-left.
["types"]TableTable containing the line type tables.

Type table (5)

ParameterTypeUsed in Description
["title"]StringThe name of the line type. In, this is displayed as normal-sized text below the line name in the middle cell; in, for some options this is displayed after the line name, separated from it by a spaced en dash (this is also used for the nonstop text). To avoid displaying a type name, set this to "".
["short name"]StringAbbreviated line name used by and .
["icon"]StringImage used by .
["icon format"]StringIcon type used by . If specified and not "image", the value is passed to the function that implements .
["color"]StringRGB hex triplet. Lines fall back to the ["_default"] colour (if any) or the system's colour if they themselves do not have one; types fall back to the line's colour (if any), to the ["_default"] colour (if any) or to the system's colour. This colour is used in the second and fourth columns of, and by and as the emphasised colour. By default, if a type and its line both have a colour, then the line's colour will be treated as the background colour (see next section) for the line name in the middle cell. This can be turned off by setting the type's background colour to "" or "transparent".
["background color"] StringRGB hex triplet (three or six characters). This colour is optional and is only displayed behind the line name in the middle cell. The module adds transparency so that all text displayed over the background is legible.
["border color"]StringRGB hex triplet used by .
["text color"]StringRGB hex triplet used by .
["left terminus"]StringThe station which is usually the left terminus of the line. Overrides line terminus. If there are multiple stations by default, the value should be a table containing numbered values (e.g. ["left terminus"] = {"Chesham", "Amersham"}). The key ["via"] in that table can be used to append 'via' and the value's station link.
["right terminus"]StringThe station which is usually the right terminus of the line; behaves like ["left terminus"].
["note-mid"]StringDefault small text below line and type names. Overridden by in transclusion.
["circular"]BooleanIf the value is true then the termini will display without 'toward'/'towards'.
["oneway-left"] BooleanIf the value is true then 'One-way operation' will display instead of the left terminus.
["oneway-right"]BooleanRight counterpart of oneway-left.-->

For editors

Disambiguating stations

Station links are generated using the station format part of the data module. Each data module defines a default case and then exceptions, if necessary. Station format is an array, similar to a switch with cases. Take, shown below:

The default case is "%1 station", listed first. The "%1" expands to whatever the passed name of the station is. "Bakchon" becomes Bakchon station. There are several exceptions. The two usual reasons for exceptions are disambiguation or presenting a name in a non-standard way. In this case, the Incheon Subway serves three stations whose names are disambiguated: Arts Center station (Incheon), Central Park station (Incheon), and Mansu station (Incheon). This is handled by specifying a key for each station and supplying a different format. Since all three are disambiguated the same way, you can define a local variable at the top of the module:

This can then be used with the exceptions:

Were it written out, it would look like this:

For developers

Suggestions are welcomed on the talk page.

To-do list

should be doable with P197, P5051, P1192 and P81. Bouzinac (talk) 09:17, 3 December 2021 (UTC)