Module:Adjacent stations/doc: Difference between revisions

Content deleted Content added
No edit summary
Made it so TM:documentation subpage does not appear twice
 
(27 intermediate revisions by 15 users not shown)
Line 1:
{{High-use|37428}}
{{Sidebar Adjacent stations}}
{{Lua|Module:No globals|Module:Yesno|Module:Arguments|Module:Color contrast|Module:Trim quotes}}
{{High-use|37428}}
{{Module rating|protected}}
{{Sidebar Adjacent stations}}
{{Under construction}}
 
This module implements {{tl|Adjacent stations}}, {{tl|Rail icon}}, {{tl|Rail color box}}, {{tl|Line link}}, {{tl|Station link}} and {{tl|Rail color}}. Please see those templates' pages for documentation on how to use those templates. (Instructions for the <code>convert</code> function of this module are in the {{tl|Adjacent stations}} documentation.)
 
The aforementioned templates rely on data stored in subpages for this module ([[Special:PrefixIndex/Module:Adjacent_stations/|list]]). For example, {{tltl2|Rail icon|MTR}} generates {{Rail icon|MTR}} using [[Module:Adjacent stations/MTR]].
 
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.
Line 37 ⟶ 36:
* The two required table entries are "station format" and "lines". The former is a table with data to form links to station articles, and the latter is a table containing a table for each line.
* "system title" is the text in the middle cell of the table header row.
* "station format" defines the default name format for station articles and exceptions. The first variable ("%1 MRTmetro station") is the default. Exceptions are listed as key–value pairs (e.g. "Zuoying"–"Zuoying HSR station"), where the key is the input name. The module displays the input name and links to the article with the formatted name, replacing "%1" with the input. Alternatively, the full wikilink and be entered. This can be used to have the display be different from the input.
* "lines" is where the lines are listed. The names here are used internally and not displayed, so choose a concise one.
* "line title" is the text displayed in the middle of each row indicating the line; "left terminus" is the default station name for the left side terminus, and "right terminus" is the default station name for the right side terminus.
Line 110 ⟶ 109:
|-
|<code>["station format"]</code>
|Table or string
|{{Yes}}
|Data tableTable containing station format strings. The first entry without a specified key (i.e. with the key being the number <code>1</code>) is the default, and all other entries must have keys corresponding to the input. Format strings without squarewikilink 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; nested tables can also have a default in the same way.

<code>%1</code>, <code>%2</code> and <code>%3</code> 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).
|-
|<code>["lines"]</code>
Line 122 ⟶ 123:
|Table
|{{Yes}}
|Table containing aliases (as table keys) for lines (as values). All keys are lowercase, as the input is treated as case-insensitive by being lowercasedlower-cased.
|}
 
=== Station format table (2) ===
{| class="wikitable"
|+
!Parameter
!Type
!Used in {{Tl|Adjacent stations}}
!Description
|-
|<code>[1]</code>
|String
|{{Yes}}
|Default format.
|-
|<code>["''non-default station name''"]</code>
|String or table
|{{Yes}}
|Format for a non-default station, or line-specific format table.
|}
 
=== Line-specific format table (3) ===
{| class="wikitable"
|+
!Parameter
!Type
!Used in {{Tl|Adjacent stations}}
!Description
|-
|<code>[1]</code>
|String
|{{Yes}}
|Default format.
|-
|<code>["''line name''"]</code>
|String or table
|{{Yes}}
|Format for a non-default station, or type-specific format table.
|}
 
=== Type-specific format table (4) ===
{| class="wikitable"
|+
!Parameter
!Type
!Used in {{Tl|Adjacent stations}}
!Description
|-
|<code>[1]</code>
|String
|{{Yes}}
|Default format.
|-
|<code>["''type name''"]</code>
|String
|{{Yes}}
|Format for a non-default station.
|}
 
=== Line table (3) ===
A virtual line named <code>["_default"]</code> can be added to set default values for all lines. Currently, this is available for twothree parameters.
{| class="wikitable"
!Parameter
Line 146 ⟶ 204:
|String
|{{No}}
|Image used by {{tl|Rail icon}}. If not specified, then the data in <code>["_default"]</code> is used (<code>%1</code> in the default value is replaced by the input after alias replacement).
|Image used by {{tl|Rail icon}}.
|-
|<code>["icon format"]</code>
Line 191 ⟶ 249:
|Boolean
|{{Yes}}
|If the value is <code>true</code> then the termini will display without 'toward'/'towards'. May be overridden by type.
|-
|<code>["oneway-left"]</code>
Line 270 ⟶ 328:
|{{Yes}}
|Default small text below line and type names. Overridden by {{para|note-mid}} in transclusion.
<!-- Types currently do not have these parameters. However, it could make sense to add them if the need arises.
|-
|<code>["circular"]</code>
Line 276 ⟶ 333:
|{{Yes}}
|If the value is <code>true</code> then the termini will display without 'toward'/'towards'.
<!-- Types currently do not have these parameters. However, it could make sense to add them if the need arises.
|-
|<code>["oneway-left"]</code>
Line 288 ⟶ 346:
-->
|}
 
== For editors ==
=== Disambiguating stations ===
Station links are generated using the <code>station format</code> part of the data module. Each data module defines a default case and then exceptions, if necessary. <code>Station format</code> is an array, similar to a switch with cases. Take [[Module:Adjacent stations/Incheon Subway]], shown below:
 
{{syntaxhighlight|lang=lua|{{Module:Adjacent stations/Incheon Subway}}}}
 
The default case is <code>"%1 station"</code>, 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:
 
{{syntaxhighlight|lang=lua|code=local incheon = "%1 station (Incheon)"}}
 
This can then be used with the exceptions:
 
{{syntaxhighlight|lang=lua|code=["Arts Center"] = incheon,}}
 
Were it written out, it would look like this:
 
{{syntaxhighlight|lang=lua|code=["Arts Center"] = "%1 station (Incheon)"}}
 
== For developers ==
Suggestions are welcomed on the talk page.
 
=== To-do list ===
* Convert more systems from {{tl|S-line}}, {{tl|rail line}}, {{tl|J-rserv}} and {{tl|J-route}}
* Make [[Module:Adjacent stations/example|an example module]] which contains all of the module's features, to avoid excessive examples in the documentation (maybe based on {{tl|Rdt demo}})
* Allow direct replacement of {{tl|Rail line}}?
* Function for calling a line terminus (for station layouts?)
* Before translation: figure out how to handle grammatical gender and inflection in various languages with the i18n table (e.g. [https://translate.google.com/#en/fi/towards%20Edgware%2C%20High%20Barnet%20or%20Mill%20Hill%20East%0Atowards%20Edgware%20via%20Charing%20Cross%0Atowards%20High%20Barnet%20via%20Charing%20Cross%0Athrough%20to%20the%20Piccadilly%20line%0Athrough%20to%20the%20route%20Q42%0Athrough%20to%20the%20Waterfront%20line%0AThe%20red%20route%20does%20not%20stop%20here%0AThe%20blue%20line%20does%20not%20stop%20here%0ALine%2014%20does%20not%20stop%20here%0AService%2014%20does%20not%20stop%20here%0ARed%20line%20does%20not%20stop%20here%0ABlue%20route%20does%20not%20stop%20here these phrases])
* Allow inline sources to be added
* Figure out Wikidata integration (require sources on Wikidata end) :
*:should be doable with P197, P5051, P1192 and P81. [[User:Bouzinac|Bouzinac]] ([[User talk:Bouzinac|talk]]) 09:17, 3 December 2021 (UTC)
* Add a short list of changes from {{tl|S-line}}, for the convenience of the many editors who have used it in the last 11 years
** changes in function (new structure, data inside module, circular and branch functionality changed, replacement of manual cell merging…)
** parameter name changes (-left and -right, mostly – search {{tl|S-line}} for {{(((}}, maybe with the TemplateData generator, to make a list)
 
<includeonly>{{sandboxSandbox other||
[[Category:Rail transport succession templatesmodules| ]]
<!-- Categories below this line, please; interwikis at Wikidata -->
 
[[Category:Rail transport succession templates| ]]
}}</includeonly><noinclude>[[Category:Module documentation pages]]</noinclude>