模組: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,終點文本將不會顯示「往」。

關於開發者

本模塊及其配套模版是由英語維基人進行編寫和維護。中文維基版將會及時同步英文版本。如果您需要增加新功能,您需要在英文版本的討論頁面提出。

子模塊