模組:沙盒/TimWu007/RailSystems/doc
此頁面為 Module:沙盒/TimWu007/RailSystems 的說明文件
調用
[編輯]本模塊支持調用下列函數來獲取數據(或 MediaWiki 內容)。
調用名稱 | 參數 | 說明 |
---|---|---|
stationLink |
{{#invoke:RailSystems | stationLink |
通過車站名獲取車站在鐵道系統中的鏈接,用於處理條目名不規則或消歧義後的條目。
例如從「朝陽門」轉換至「[[朝阳门站 (北京)|朝阳门]]」。 |
lineColor |
{{#invoke:RailSystems | lineColor |
通過線路編號獲取線路顏色。若 prefix=1 則加上「#」前綴。 |
lineTitle |
{{#invoke:RailSystems | lineTitle |
通過線路編號獲取線路條目鏈接。若 link=0 則只返回條目名,否則返回條目鏈接 Wiki Text,默認 link=1。 |
lineRichTitle |
{{#invoke:RailSystems | lineRichTitle |
通過線路編號獲取帶有標誌色裝飾(默認為前置彩色小方塊)的線路條目鏈接。若 degrade 為 1,則在標誌色未定義時自動返回 lineTitle 的結果。 |
lineTerminal |
{{#invoke:RailSystems | lineTerminal |
通過線路編號、方向、類型(可選)及支線(可選)獲得線路終點站鏈接。 |
lineTerminalName |
{{#invoke:RailSystems | lineTerminalName |
通過線路編號、方向、類型(可選)及支線(可選)獲得線路終點站站名。 |
trainTime |
{{#invoke:RailSystems | trainTime |
通過線路編號、運營方向(預定義)、首/末班及始發站到達本站的時間獲得車站首班/末班車時間。 |
trainDirectionTime |
{{#invoke:RailSystems | trainDirectionTime |
通過線路編號、運營方向(預定義)、首/末班及始發站到達本站的時間獲得車站首班/末班車終點站名鏈接及時間組成的 WikiText。 |
lineDateMessage |
{{#invoke:RailSystems | lineDateMessage |
通過線路編號和期數,顯示距離開通需要的時間。本函數支持自定義日期格式,year、month、day分別表示年、月、日(含單位),ym、date分別表示年月組合、日期,可通過管道符號「|」和其他自定義字符相連。如果 auto_hide 未指定或值為「1」,當該日期已過時,文字將自動隱藏,條目會被加入Category:需要去除時間判斷模板的頁面。 |
使用建議
[編輯]不建議直接在條目空間中使用 #invoke 語法調用本模塊,而是為每個系統建立自己的系列模板,在模板中引用本模塊。例如,北京地鐵系列條目使用 {{BJS color}} 調用本模塊的 lineColor 方法。
一部分其他模板也集成了本模板,包括參數 lua=1 條件下的 {{鐵道路線}} 模板(參見 Module:RouteSequence)以及 {{S-line}} 中的一部分功能。{{RenderStations}} 利用了模塊中的 renderStationLinks 方法,可以方便地對一段 WikiText 中的站名進行轉換。
子模塊列表
[編輯]下面為已有的子模塊列表,支持不同的鐵道系統。注意,以「/doc」為後綴的是文檔,而「UseCase」是測試用例。
建立系統模板
[編輯]將本模塊引入鐵道系統前,你需要首先創建一個系統數據模塊。該模塊為本模塊的子模塊,名稱為 Module:RailSystems/<系統名> ,基本框架為
local p = {}
p.lines = {
-- 线路列表
}
-- 开通日期,用于为未开通线路标记日期,可有多行,非必需
p.lines['线路名'].openDates = { ['#default'] = '默认开通日期', ['2'] = '二期开通日期' }
p.lines['线路名2'].openDates = '单一开通日期'
local lineAliases = {
-- 线路别名(用于简繁转换)
}
-- 用于处理别名的代码,勿删
for k, v in pairs(lineAliases) do p.lines[k] = p.lines[v] end
-- 起讫站信息必需代码,勿删
for k, v in pairs(p.lines) do v.terminals = {} end
-- 首末班车信息必需代码,勿删
for k, v in pairs(p.lines) do v.trainTime = {} end
p.stationNames = {
-- 站名链接
}
local stationAliases = {
-- 车站别名
}
-- 用于处理别名的代码,勿删
for k, v in pairs(stationAliases) do p.stationNames[k] = p.stationNames[v] end
-- 起讫站
p.lines['1'].terminals = { left = 'XXX', right = 'XXX' }
p.lines['2'].terminals = {
left = { ['#field'] = 'type', ['#default'] = 'XXX', F = 'XXX'},
right = { 'XXX' },
}
-- 首末班车
p.lines['1'].trainTime = {
['SE'] = { first = '06:00', last = '23:00', startService = 'XXX', endService = 'XXX' },
['ES'] = { first = '06:00', last = '23:00', startService = 'XXX', endService = 'XXX' },
}
return p
線路列表
[編輯]本模塊線路列表的例子如下
p.lines = {
['1'] = { title = "宁波轨道交通1号线|1号线", color = '3180b7' },
['2'] = { title = "宁波轨道交通2号线|2号线", color = 'cc0000' },
}
其中,title 表示線路的條目名稱及顯示名稱,使用「|」分隔。color 表示線路的標誌色。
線路開通日期
[編輯]本模塊線路開通日期的例子如下。如果系統中無此需求可省略這部分。
p.lines['1'].openDates = { ['#default'] = '2014-05-30', ['2'] = '2016-03-19' }
p.lines['2'].openDates = '2020-12-28'
對於不分期線路,可採用「yyyy-mm-dd」字符串。對於分期線路,可以使用一個 Lua Table 指定各個分期的開通日期。
站名鏈接
[編輯]本模塊站名鏈接的例子如下
p.lines = {
['朝阳门'] = '朝阳门站 (北京)|朝阳门',
['北京南站'] = '北京南站|北京南站',
['大兴线天宫院'] = {'天宫院站|天宫院', '([[北京地铁大兴线|大兴线]])'},
}
第一例中,站名「朝陽門」對應了鏈接 [[朝阳门站 (北京)|朝阳门]],使得調用 {{#invoke:RailSystems|stationLink|name=朝阳门|system=BJS}} 時能夠返回重定向後正確的連接(而非 [[朝阳门站|朝阳门]])。
第二例中,站名「北京南站」對應的條目名為自身,因而 stationLink 返回「[[北京南站|北京南站]]」而非「[[北京南站站|北京南站]]」。需要注意的是,stationLink 根據字符串中是否存在「[[」外的「|」符號判斷是否需要將字符串轉換為鏈接。因而,單寫「['北京南站'] = '北京南站',」只會返回「北京南站」的文字。
第三例中,站名「大興線天宮院」是為了在北京地鐵4號線車站條目中顯示終點站為「[[天宫院站|天宫院]]([[北京地铁大兴线|大兴线]])」。這裡使用了 Lua table 取代字符串。模塊會自動掃描 table,將其中屬於鏈接的部分組裝為鏈接,並將所有部分拼裝在一起。
起訖站
[編輯]本模塊起訖站的例子如下
p.lines['1'].terminals = {
left = '湘湖',
right = { ['#field'] = 'branch',
['#default'] = { ['#field'] = 'type', ['#default'] = '临平、文泽路', future = '临平、下沙江滨' },
['临平'] = '临平',
['下沙'] = { ['#field'] = 'type', ['#default'] = '文泽路', future = '下沙江滨' },
},
}
p.lines['2'].terminals = {
left = '朝阳',
right = { ['#field'] = 'type', ['#default'] = '钱江路', ['future'] = '良渚'},
}
起訖站名中,terminals 中的 left 屬性表示起點站,right 屬性表示終點站。兩個屬性的值均為迭代定義。若值為字符串,則返回站名。否則根據 '#field' 的值,判定輸入參數是否符合當前 table 的某一個屬性名。如果符合,取出值。否則取出 '#default' 屬性的值。最後,對該值重複上述處理,直至返回結果為字符串為止。
首末班車
[編輯]本模塊起訖站的例子如下
p.lines['1'].trainTime = {
-- 东环南路首班车
['东高'] = { first = '06:00', startService = '东环南路', endService = '高桥西' },
['东霞'] = { first = '06:00', startService = '东环南路', endService = '霞浦' },
-- 起讫站首末班车
['霞高'] = { first = '06:00', last = '22:00', startService = '霞浦', endService = '高桥西' },
['高霞'] = { first = '06:00', last = '22:00', startService = '高桥西', endService = '霞浦' },
}
其中,trainTime 的每個屬性值表示線路上的一種服務,名稱可自定。此後 first 和 last 分別表示該服務首末班車的時間,而 startService 和 endService 表示服務的始發/終點站。
增加新功能
[編輯]編者可為本模塊增加新功能。但需要注意,新增的功能不應影響原有功能。為了便於維護和復用,請在完成功能編寫後更新用例和幫助文檔。本模塊的用例位於 p.testCase,請在提交前先執行用例,確保所有用例均通過再行提交。
可用性
[編輯]如果下方顯示錯誤信息,則相應功能不可用,請聯繫最近一次修改者修復該錯誤。查看編輯歷史