模块:Adjacent stations/doc

这是Module:Adjacent stations的文档页面

本模块实现{{Adjacent stations}}、{{Rail icon}}、{{Rail color box}}、{{Line link}}、{{Station link}}和{{Rail color}}的功能。欲了解如何使用这些模板,请参阅其文档。(本模块的convert函数的指引置于{{Adjacent stations}}的文档。)

前述的模板依赖于本模块的子模块所存放的数据。例如,{{Rail icon|MTR}}从Module:Adjacent stations/MTR生成。

下列示例对创建和编辑数据会有帮助,但有一定Lua基础能避免一些错误。如果你之前编写或是使用过Lua,你可以跳过下一小节。

术语

  • Lua有不同的数据类型(data types)。此处将会涉及到的有布尔型(boolean)、字符串(string)、数字(number)和表(table)。
    • 布尔型数据只能是true(真)或false(假)。
    • 字符串即文本,以字符列表的形式存储。Lua有数种方式在代码中表记字符串,此处的示例使用双引号包裹的方式表记(如"这是一个字符串")。
    • 数字即数值,像0.542
    • 表是可以包含其他对象的结构,并支持嵌套。
      • 空表在代码中形如{}
      • 表有键(key)和值(value)典型结构如["key"] = value;键值对(key-value pair)之间由西文逗号分隔。此处使用的键都是字符串或数字。
      • {"text", "more text"}等价于{[1] = "text", [2] = "more text"}
  • 使用local variable_name = "value"可以定义一个变量(variable)。
  • 空白(whitespace)包括制表符、换行符、空格及其任意组合。空白在Lua中不影响结果,但除了内建的文本,此处的所有示例都经过了缩进处理,根据键分行,以提高可读性。
  • 返回语句(return statement,如return variable_name)退出当前函数,并回报variable_name的值。此处的“函数”指主模块中调用子页面的代码,而variable_name应为表类型。

基本结构

下面展示两个模块:

空白
local p = {
	["system title"] = "",
	["system icon"] = "",
	["station format"] = {
		"",
		[""] = "",
	},
	["lines"] = {
		[""] = {
			["title"] = "",
			["color"] = "",
			["left terminus"] = "",
			["right terminus"] = "",
		},
	},
}

return p
示例
local x = "%1站 (高雄捷運)"
local y = "%1站 (臺灣)"

local p = {
    ["system title"] = "[[高雄捷運]]",
    ["station format"] = {
        "%1站",
		-- 紅線
        ["大湖"] = x,
        ["岡山車站"] = "[[岡山車站 (高雄捷運)|岡山車站]]",
        ["橋頭火車站"] = "[[橋頭車站 (台灣)|橋頭火車站]]",
        ["高雄車站"] = "%1",
        ["都會公園"] = y,
        ["左營"] = "[[高鐵左營站#高雄捷運左營/高鐵站|左營/高鐵]]",
        ["左營/高鐵"] = "[[高鐵左營站#高雄捷運左營/高鐵站|左營/高鐵]]",
        ["中央公園"] = y,
        ["凱旋"] = y,
        ["小港"] = "[[小港站 (捷運)|小港]]",
		-- 橘線
        ["哈瑪星"] = x,
        ["文化中心"] = y,
        ["鳳山西站"] = "%1",
        ["鳳山"] = x,
		-- 環狀輕軌
        ["哈瑪星(輕軌)"] = "[[哈瑪星站 (高雄輕軌)|哈瑪星]]",
        ["鼓山"] = "[[鼓山車站]]",
        ["台鐵美術館"] = "[[美術館車站]]",
        ["科工館"] = "[[科工館車站]]",
		-- 黃線
        ["民族"] = "[[民族車站|民族]]",
        ["大港"] = x,
    },
    ["lines"] = {
        ["紅"] = {
            ["title"] = "[[File:Kaohsiung Rapid Transit Red Line.svg|20px]] [[高雄捷運紅線|紅線]]",
            ["color"] = "e20b65",
            ["left terminus"] = "小港",
            ["right terminus"] = "南路竹"
        },
        ["橘"] = {
            ["title"] = "[[File:Kaohsiung Rapid Transit Orange Line.svg|20px]] [[高雄捷運橘線|橘線]]",
            ["color"] = "faa73f",
            ["left terminus"] = "哈瑪星",
            ["right terminus"] = "大寮"
        },
        ["環"] = {
            ["title"] = "[[File:Kaohsiung Rapid Transit Circular Line.svg|20px]] [[高雄環狀輕軌|環狀輕軌]]",
            ["color"] = "7cbd52",
            ["circular"] = true,
            ["left terminus"] = "逆行",
            ["right terminus"] = "順行"
        },
        ["黃"] = {
            ["title"] = "[[File:Kaohsiung Rapid Transit Yellow Line.svg|20px]] [[高雄捷運黃線|黃線]]",
            ["color"] = "ffc100",
            ["left terminus"] = "坔埔",
            ["right terminus"] = {"旅運中心", "前鎮高中"}
        }
    },
    ["aliases"] = {
        ["r"] = "紅",
        ["o"] = "橘",
        ["c"] = "環",
        ["y"] = "黃"
    }
}

return p

示例模块为Module:Adjacent stations/高雄捷运

  • 首先需要两条记录,"station format""lines"。前者用于生成指向车站条目的链接,后者包括各线路的表。
  • "system title"是标题行中间的文本。
  • "station format"定义车站条目名称的规则和例外。第一个变量"%1 metro station"是默认值。例外由键值对列出(如"岡山""岡山車站"),此处键是输入值。模块显示输入值,并根据处理后的值链接到条目,其中%1将被输入值替代。或者,也可以直接键入完整的维基链接,这样显示文本就可以与输入值不同。
  • "lines"列出线路。此处的名称仅在内部使用,并不用于显示,所以请尽量简短。
  • "line title"是显示在线路所在行中间的文本;"left terminus"是默认的左侧终点站,"right terminus"则是默认的右侧终点站。
  • 每个"color"记录线路的颜色。
  • 首行定义的x是用于格式化车站名称的字符串。"station format"表中,x被用于数个需要“ (高雄捷运)”后缀的车站。这个方法是可选的,但在数个车站条目命名遵循另一条规则时相当有用。

以下是Module:Adjacent stations/台湾高铁

local p = {
	["system title"] = "[[台灣高速鐵路]]",
	["system color"] =  "c35617",
	["name format"] = "color: #FFFFFF; background-color: #C35617;",
	["station format"] = {
		"高鐵%1站",
		["南港"] = "[[南港車站|南港]]",
		["臺北"] = "[[臺北車站|臺北]]",
		["板橋"] = "[[板橋車站_(臺灣)|板橋]]",
},
["lines"] = {
		["_default"] = {
			["title"] = "[[台灣高鐵]]",
			["color"] = "c35617",
			["left terminus"] = "南港",
			["right terminus"] = "左營"
		}
	}
}

return p
  • 这个模块包括一条虚拟线路["_default"]。此处的标题和颜色被用于所有线路,除非被具体线路覆盖。当调用时不指定line=,此表就会被使用。

层级和参数列表

  1. 表的第一层是整个系统的数据和输出选项。
  2. 系统表下层是线路的列表。
  3. 第三层是具体线路的数据。
  4. 每条线可以有多个“类型”。“类型”可以是服务类型(如不同速度等级)或线路的支线。
  5. 第五层是具体类型的数据。

未指明类型的键和值都是字符串。

主层 (1)

参数 类型 被{{Adjacent stations}}使用 描述
["lang"] 字符串 默认且仅有"zh-CN",影响预置字符串的选择,本语言维基不使用此本地化方案,而是交由字词转换完成。
["system title"] 字符串 标题行中间的文本。
["system icon"] 字符串 {{Adjacent stations}}标题行中间和{{Rail icon}}使用的图标。
["system icon format"] 字符串 图标类型,由{{Rail icon}}使用。如果指定并且值不为"image",图标数据将交由{{Rail color box}}预处理。
["system color"] 字符串 RGB十六进制三元值(三或六个字符长,如"BE2D2C""039")。调用{{Rail color}}时仅用一个参数时返回。
["header stop noun"] 字符串 标题行左右单元格的“上一”和“下一”后使用的名词。默认值为"station"
["name format"] 字符串 {{Infobox station}}表头的CSS,亦可使用|1=header调用style函数取值。值可以为字符串或嵌套表,其中使用表的首层(对应{{Infobox station}}的|style2=)。第二层目前未使用。嵌套表的第一项(无键项或键为1)为默认。
["header background color"] 字符串 {{Infobox station}}次表头使用的RGB十六进制三元值,亦可使用|1=subheader调用style函数取值。默认为亮灰色。值可以为字符串或嵌套表,结构类似"name format"
["header text color"] 字符串 {{Infobox station}}次表头使用的RGB十六进制三元值,亦可使用|1=subheader调用style函数取值。默认根据背景色计算。值可以为字符串或嵌套表,结构类似"name format"
["station format"] 表或字符串 表包括车站格式化字符串。首条没有键的记录(也即键为1的记录)为默认,余下的记录须有匹配输入的键。没有维基链接括号的格式化字符串将会被转化为链接,输入(通常为车站名)将会被用作显示文本。本表可以嵌套表,用于表记传递给模板的线路和线路类型选项。

所有嵌套层级下的字符串都可以使用%1%2%3,分别用来表记输入的车站,输入的线路(经别名处理后)和输入的类型(经别名处理后)。

["lines"] 包含数据的线路表。
["aliases"] 包含线路(作为值)的别名(作为键)的表。所有的键都是小写,因为输入将被小写化,以实现大小写不敏感。

车站格式表 (2)

参数 类型 被{{Adjacent stations}}使用 描述
[1] 字符串 默认格式。
["non-default station name"] 字符串或表 不标准的车站格式,或是由线路确定的格式表。

依赖线路的格式表 (3)

参数 类型 被{{Adjacent stations}}使用 描述
[1] 字符串 默认格式。
["line name"] 字符串或表 不标准的车站格式,或是由类型确定的格式表。

依赖类型的格式表 (4)

参数 类型 被{{Adjacent stations}}使用 描述
[1] 字符串 默认格式。
["type name"] 字符串 不标准的车站格式。

线路表 (3)

可以添加虚拟线路["_default"]以为所有线路设定默认值。目前对两个参数有效。

参数 类型 被{{Adjacent stations}}使用 描述
["title"] 字符串 中间单元格显示的文本,通常是指向线路条目的链接。若不指定,将会使用["_default"]下的值(默认值中的%1为经别名处理的输入的线路)。
["short name"] 字符串 {{Rail color box}}使用的缩写。
["icon"] 字符串 {{Rail icon}}使用的图像。
["icon format"] 字符串 {{Rail icon}}使用的图像格式。如果指定并且值不为"image",图像数据将交由{{Rail color box}}预处理。
["color"] 字符串 RGB十六进制三元值。如果线路自身没有指定值,将会回落到["_default"]颜色,乃至系统颜色;类型将依次尝试获取所在线路、["_default"]和系统颜色。颜色用于{{Adjacent stations}}的第二和第四列,以及{{Rail color box}}和{{Rail icon}}的强调色。默认地,若类型和线路皆有颜色,那么线路颜色将会作为中间单元格背景色(见下一小节)。将类型背景色设为"""transparent"可以避免。
["background color"] 字符串 RGB十六进制三元值(三或六个字符)。颜色是可选的,并只在中间单元格线路名称后的背景显示。本模块会透明化颜色,使其上的文字可识读。
["border color"] 字符串 {{Rail color box}}使用的RGB十六进制三元值。
["text color"] 字符串 {{Rail color box}}使用的RGB十六进制三元值。
["left terminus"] 字符串 通常是线路的左终点。若默认有多个值,应嵌套为顺序表(如["left terminus"] = {"Chesham", "Amersham"})。表中的["via"]键可用于在其后加上“经”以及车站链接。
["right terminus"] 字符串 通常是线路的右终点,表现同["left terminus"]
["note-mid"] 字符串 显示在线路和类型下方的默认小号文本。调用时由|note-mid=覆盖。
["circular"] 布尔型 若值为true,终点文本将不会显示“往”。可以被类型覆盖。
["oneway-left"] 布尔型 若值为true,那么左终点站处将会显示“单向运行”。
["oneway-right"] 布尔型 对应oneway-left的右侧版本。
["types"] 嵌套线路类型表的表。

类型表 (5)

参数 类型 被{{Adjacent stations}}使用 描述
["title"] 字符串 线路类型的名称。在{{Adjacent stations}}中显示为普通大小的文本,位于中间单元格线路名称的下方;在{{Rail color box}}中,某些选项下将显示在线路名称后,以带空格的同n宽连接号(亦用于不停站文本)。设为""可避免显示。
["short name"] 字符串 {{Rail color box}}使用的缩写。
["icon"] 字符串 {{Rail icon}}使用的图像。
["icon format"] 字符串 {{Rail icon}}使用的图像格式。如果指定并且值不为"image",图像数据将交由{{Rail color box}}预处理。
["color"] 字符串 RGB十六进制三元值。如果线路自身没有指定值,将会回落到["_default"]颜色,乃至系统颜色;类型将依次尝试获取所在线路、["_default"]和系统颜色。颜色用于{{Adjacent stations}}的第二和第四列,以及{{Rail color box}}和{{Rail icon}}的强调色。默认地,若类型和线路皆有颜色,那么线路颜色将会作为中间单元格背景色(见下一小节)。将类型背景色设为"""transparent"可以避免。
["background color"] 字符串 RGB十六进制三元值(三或六个字符)。颜色是可选的,并只在中间单元格线路名称后的背景显示。本模块会透明化颜色,使其上的文字可识读。
["border color"] 字符串 {{Rail color box}}使用的RGB十六进制三元值。
["text color"] 字符串 {{Rail color box}}使用的RGB十六进制三元值。
["left terminus"] 字符串 通常是线路的左终点。若默认有多个值,应嵌套为顺序表(如["left terminus"] = {"Chesham", "Amersham"})。表中的["via"]键可用于在其后加上“经”以及车站链接。
["right terminus"] 字符串 通常是线路的右终点,表现同["left terminus"]
["note-mid"] 字符串 显示在线路和类型下方的默认小号文本。调用时由|note-mid=覆盖。
["circular"] 布尔型 若值为true,终点文本将不会显示“往”。

关于开发者

本模块及其配套模版是由英语维基人进行编写和维护。中文维基版将会及时同步英文版本。如果您需要增加新功能,您需要在英文版本的讨论页面提出。

子模块