模組:CNBUS/doc
此頁面為 Module:CNBUS 的說明文件
此頁面是Module:CNBUS的模組文件。 此頁面可能包含了模板的使用說明、分類和其他內容。 |
此模組使用Lua語言: |
本模塊是實現一系列交通相關模板功能的基礎模塊,支持管理各城市公共汽車系統的數據資料,目前主要用於生成一個顯示公交線路資料的表格。
子模塊一覽
目前,各公交系統均使用獨立的模板,並依賴本模塊子頁面的相關資料。下表為本模塊已建立的子模塊。您也可以仿照後文所述的格式新建子模塊(並不限於中國大陸城市),並將其添加至下表。歡迎各位對已有資料進行定期維護更新。
相互引用情況
位置
|
被引用系統 | |||||||||
---|---|---|---|---|---|---|---|---|---|---|
肇慶 | 珠海 | 江門 | 中山 | 佛山 | 廣州 | 東莞 | 惠州 | 深圳 | ||
系統 | 肇慶 | 不適用 | ZQ/foshan | |||||||
珠海 | 不適用 | ZH/jiangmen | ZH/data | |||||||
江門 | JM/zhuhai | 不適用 | JM/zhongshan | JM/foshan | ||||||
中山 | ZS/zhuhai | ZS/data | 不適用 | ZS/foshan | ||||||
佛山 | FS/zhaoqing | FS/data | FS/data | 不適用 | FS/guangzhou | |||||
廣州 | GZ/foshan | 不適用 | GZ/dongguan | |||||||
東莞 | DG/guangzhou | 不適用 | DG/huizhou | DG/shenzhen | ||||||
惠州 | HZ/dongguan | 不適用 | HZ/shenzhen | |||||||
深圳 | SZ/zhongshan | SZ/dongguan | SZ/huizhou | 不適用 |
位置
|
被引用系統 | |||
---|---|---|---|---|
汕頭 | 潮州 | 揭陽 | ||
系統 | 汕頭 | 不適用 | ST/jieyang | |
潮州 | CZ/shantou | 不適用 | CZ/jieyang | |
揭陽 | JY/shantou | 不適用 |
接口一覽
直接調用接口的模板的參數表(傳入)和其調用接口時顯式指定的參數表(傳出)都會被識別,兩者優先級參見Module:Arguments。由本模塊導出的模板可能還提供了其他別名。
參數 | 說明 | 列表 | 摺疊列表 | 運營商顏色 | 線路名稱 | 別名與注釋 |
---|---|---|---|---|---|---|
{{{1}}} {{{2}}} … | 線路代碼列表 | 需要 | 需要 | 不適用 | 單個 | |
{{{city}}} | 城市代碼 | 需要 | 需要 | 需要 | 需要 | 各城市模板默認填寫 |
{{{area}}} | 區域代碼 | 需要 | 需要 | 不適用 | 需要 | 部分模板提供{{{loc}}}別名 |
{{{operator}}} | 運營商代碼 | 不適用 | 不適用 | 需要 | 不適用 | {{{company}}} 區別於{{{operators}}} |
{{{start}}} | 是否開始表格 輸出 <table> 開標籤及表頭
|
選擇性 | 選擇性 | 不適用 | 不適用 | 默認為真 |
{{{end}}} | 是否結束表格 輸出 </table>
|
選擇性 | 選擇性 | 不適用 | 不適用 | 默認為真 |
{{{header}}} | 表格標題 | 選擇性 | 選擇性 | 不適用 | 不適用 | {{{info}}} {{{station}}} 依賴於{{{start}}} |
{{{type}}} | 列表樣式 | 選擇性 | 不適用 | 不適用 | 不適用 | BRT :覆蓋{{{fare}}}{{{operators}}}{{{vehicles}}}值
|
{{{time}}} | 是否顯示時間 | 選擇性 | 不適用 | 不適用 | 不適用 | |
{{{fare}}} | 是否顯示票價 | 選擇性 | 不適用 | 不適用 | 不適用 | 默認為真 |
{{{operators}}} | 是否顯示運營商 | 選擇性 | 不適用 | 不適用 | 不適用 | 默認為真 區別於{{{operator}}} |
{{{vehicles}}} | 是否顯示車型 | 選擇性 | 不適用 | 不適用 | 不適用 | |
{{{image}}} | 是否顯示圖片 | 選擇性 | 不適用 | 不適用 | 不適用 |
list
通過輸入一個或多個線路編號以生成包含這些線路資料的表格。目前支持起訖點、線路方向、營運公司(分公司)、票價、運營時間、車輛圖片、線路配車、BRT站台信息、備註等信息。
{{#invoke:CNBUS |list |city=#包含系统 }}
編號 | 線路及運營時間 | 收費 | 運營商 | 備註 | |||
---|---|---|---|---|---|---|---|
1 | 芳村花園南門 6:00–22:30 | ⇆ | 東山(署前路) 6:00–22:30 | 2元 | 一汽一分 |
或者,線路也可以使用單個模式匹配表達式(必須以^
開頭)指定,用例參見重慶公交線路列表 (中心城區)。常用的代碼匹配方式如:
^T
:所有T開頭的線路;^%d%d%D*$
:所有兩位數的線路(允許非數字後綴,不允許更多數字);^1%d%d%D*$
:1開頭三位數的線路(允許非數字後綴,不允許更多數字)。
注意,輸出的線路將按照線路代碼以字符串排序,這意味着2
會排在10
的後面;此情形下建議配合{{{start}}}{{{end}}}將不同位數代碼分拆多個表格顯示。
collapsibleList
類似list,但只會生成一個的簡化版的表格。目前僅支持起訖點和線路方向。
{{#invoke:CNBUS |collapsibleList |city=#包含系统 }}
行經巴士路線一覽 | ||||
---|---|---|---|---|
編號 | 路線 | 備註 | ||
番1 | 祈福新邨 | ⇆ | 傍雁路臨時公交總站 |
color
屬於輔助功能,可輸出代表線路運營商的顏色代號。list
已集成該功能。
lineName
展示簡短行內鏈接。如{{惠州巴士路线极简列表|1}}
:公交路線:1
數據格式
本模塊約定將數據存儲在子模塊中。
城市總表模塊
在將本模塊引入公交系統前,首先需要建立一個子模塊作為該系統的數據模塊。請將該子模塊命名為Module:CNBUS/<城市代码>
,其基本框架為:
local xx = {
areas = { },
operators = { }
}
xx.areas['xx'] = {
name = "<区域名>",
page = "<线路列表条目名>",
source = "Module:CNBUS/XX/data", -- 对应模块
aliases = { "XX", "理塘", "default" } --
}
xx.operators['bus'] = {
color = "red",
aliases = { "Bus", "公交集团" }
}
xx.operators['transport'] = {
color = "silver",
aliases = { "交运集团" }
}
return xx
區域表
每個子模塊可包含一個或多個子區域,可分別存放城區、郊區、外市路線的資料。在本模塊設置各區域資料的例子如下:
gz.areas['guangzhou'] = {
name = "广州",
page = "广州巴士路线列表",
source = "Module:CNBUS/GZ/data",
aliases = { "Guangzhou", "GZ", "gz", "广州", "廣州", "default" }
}
gz.areas['nansha'] = {
name = "南沙",
page = "南沙巴士路线列表",
source = "Module:CNBUS/GZ/nansha",
aliases = { "Nansha", "NS", "ns", "南沙" }
}
gz.areas['foshan'] = {
name = "佛山",
page = "佛山巴士路线列表",
source = "Module:CNBUS/GZ/foshan",
aliases = { "Foshan", "FS", "fs", "佛山" }
}
其中,source
的值為子區域各線路的詳細資料;page
和name
用於設置list和collapsibleList的標題中指向列表條目的內部連結([[page|name]]
,如[[广州巴士路线列表|广州]]
);aliases
則包含了該子區域的別名,由area
參數調用。
本例中共有3個區域,分別為「guangzhou
」、「nansha
」和「foshan
」。在未提供area
參數的值,或area
參數的值為「guangzhou
」、「Guangzhou
」、「GZ
」、「gz
」、「广州
」、「廣州
」時,則選擇區域「guangzhou
」。「nansha
」和「foshan
」同理。
運營商表
在本模塊設置各運營商顏色的例子如下:
xx.operators['bus1'] = {
color = "orange", -- 颜色
aliases = { "一汽一分", "一汽二分" } -- 别名。键值本身(此处为bus1)不需要包含其中
}
xx.operators['bus3'] = {
color = "#fff600",
aliases = { "三汽一分", "三汽二分" }
}
xx.operators['other'] = {
color = "white",
}
xx.operators['multi'] = {
color = "black",
}
在本例中,一汽和三汽公司的代碼分別為bus1
和bus3
,則運營商為「一汽一分」和「一汽二分」的代表色為「orange」(橙色),「三汽一分」和「三汽二分」的代表色為「#fff600」(近似於黃色)。此外,還需要設置「other
」和「multi
」,分別代表模塊中未列出的運營商(顯示為白色)和多於一個運營商(顯示為黑色)。
線路表模塊
此後,便是為各個區域添加具體的線路(line)資料。請在該子模塊下再新建一個二級子模塊,並命名為「Module:CNBUS/<城市代码>/<区域代码>
」,其基本框架如下:
local p = {
-- 常规线路
['1'] = { name = "线路名", mark = "线路名标注", fare = "票价", operators = "运营商", vehicles = { "配车1", "..." }, note = "备注", image = "[[File:示例.jpg|128px]]",
{ { "左起讫点", time = "发车时间" }, { "方向箭头", mark = "方向标注" }, { "右起讫点", time = "发车时间" } }, --[[区间1]]
{ { "左起讫点", time = "发车时间" }, { "方向箭头", mark = "方向标注" }, { "右起讫点", time = "发车时间" } }, --[[区间2]]
{ --[[…]] }, --[[任意数量区间]] },
-- BRT线路
['B1'] = { name = "线路名", mark = "线路名标注", fare = "票价" --[[BRT样式下不可见]], operator = "运营商", note = "备注", image = "[[File:图片.jpg|x128px]]", brt = { { "驶入BRT通道车站", "经停BRT车站数", "驶出BRT通道车站" --[[右向]] }, { "驶出BRT通道车站", "经停BRT车站数", "驶入BRT通道车站" --[[左向车站定义位置相反]] } }
{ { "左起讫点", time = "发车时间" }, { "→" --[[完整列表BRT样式下由brt字段自动确定;单向线路需要为其他情况填写]], mark = "方向标注" }, { "右起讫点", time = "发车时间" } }, },
-- 停办线路
['114'] = { name = "线路名", mark = "线路名标注", status = { -1, date = "日期" } },
-- 暂时停运线路
['514'] = { name = "线路名", mark = "线路名标注", status = { 0, date = "日期" } },
}
-- 导入其他模块的线路资料。请注意,引用的线路代码不能是重定向
p._external = {
['Module:CNBUS/XX/data'] = {
['1'] = '1',
['114'] = { '514', override = { name = '114' } }, -- 支持覆写部分属性
},
['Module:CNBUS/YY/data'] = {
['2'] = '2',
},
}
-- 定义线路编号重定向
p._map = {
['01'] = '1',
['BRT1'] = 'B1',
}
return p
- 線路代碼
['line']
是區分簡體/繁體和英文大寫/小寫的,因此在使用時不可混用,建議統一同城市下各子系統的簡繁和大小寫規則。其他參數內容不受限制。 - 如需在名詞中使用連字符,請使用「-」而非「-」或「-」等。為使用方便,連字暨減號
-
(U+002D
)在線路名稱、時間、票價和備註中,與數字字母相鄰時將被替換為半寬連接號–
(U+2013
),其餘情形下將被替換為全寬連接號—
(U+2014
)。 name
必填,<区间>[1][1]
、<区间>[2][1]
、<区间>[3][1]
、fare
、operator
和note
參數建議填寫(<区间>
相關補全規則見#區間子表)。operators
和vehicles
既可以是字符串,也可以是數組(顯示時分行)。數組表示的operators
會直接被視為多運營商。- 若需要顯示BRT信息,則右向
<BRT>[1][1]
<BRT>[1][2]
<BRT>[1][3]
和左向<BRT>[2][1]
<BRT>[2][2]
<BRT>[2][3]
參數需要至少填入一組。右向為空時需要顯式置nil
方能填寫左向數據;若實際存在但缺少相關資料,則應將對應方向置為空表{ }
。 - 各參數值可以加入內部連結及換行符<br />,但來源引用<ref>和各類模板是無法使用的。
區間子表
為使用簡便,一部分置空的值會使用鄰近的值進行取代。補全的順序遵循區間定義的順序,區間內部則依次為左、右、方向。首個區間(route)和後繼區間的回落規則有所不同。
對於每條線路的首個區間:
- 左起訖點保持原樣(as-is),除表不存在(
nil
或未定義)時轉化為空表; - 右起訖點若無效(表不存在;表首位的字符串不存在或長度為0),複製左起訖點的名稱,附屬屬性保持原樣;
- 方向若無效(表不存在;表首位的字符串不存在或長度為0),左右起訖點(回落補全後)若相等則視作逆時針循環線,否則視為往返線,附屬屬性保持原樣。
{ },
-- 等价于
{ { }, { "↺" }, { } },
{ { "火车站" }, { mark = "直" }, { "机场" } },
-- 等价于
{ { "火车站" }, { "⇆", mark = "直" }, { "机场" } },
{ { "火车站", time = "10:00" }, nil, { time = "20:00" } },
-- 等价于
{ { "火车站", time = "10:00" }, { "↺" }, { "火车站", time = "20:00" } },
對於後繼區間:
- 左右起訖點若表不存在,則複製上一區間對應起訖點的所有屬性;若表首位的字符串(名稱)不存在或長度為0,則只複製上一區間對應起訖點的名稱,附屬屬性保持原樣;
- 方向的行為與首個區間相同。
-- 假定补全后的上一区间
{ { "火车站", time = "10:00" }, { "⇆", mark = "快" }, { "机场", time = "20:00" } },
{ },
-- 等价于
{ { "火车站", time = "10:00" }, { "⇆" }, { "机场", time = "20:00" } },
{ nil, { mark = "直" }, { "" } },
-- 等价于
{ { "火车站", time = "10:00" }, { "⇆", mark = "直" }, { "机场" } },
用例
- 時間、BRT資料及線路導入:Module:CNBUS/GZ/data
- 圖片:Module:CNBUS/SZ/data
- 配車:Module:CNBUS/HZ/data
常見錯誤
在條目中使用引用了本模塊的模板後,可能會提示以下錯誤:
錯誤提示 | 錯誤原因 | 解決方法 | ||||
---|---|---|---|---|---|---|
錯誤 | Module:CNBUS不存在「XXX」的公交系統數據 | Module:CNBUS/XXX不存在 | 檢查模板中 city=<城市代码> 的<城市代碼>是否填寫錯誤
| |||
錯誤 | 「city」參數為空,請輸入城市代碼 | 模板未填入 city 的值
|
填寫模板中 city=<城市代码> 的<城市代碼>
| |||
錯誤 | Module:CNBUS/XXX中未包含「yyy」的資料模塊 | Module:CNBUS/XXX/yyy不存在 | 檢查模板中 loc=<子系统代码> 的<子系統代碼>是否填寫錯誤
| |||
錯誤 | 資料模塊Module:CNBUS/XXX/yyy出現錯誤,請前往檢查 | Module:CNBUS/XXX/yyy出現錯誤 | 大多為資料模塊導入其他模塊時輸入錯誤(本說明文檔示例中的「導入其他模塊的線路資料」部分),請仔細檢查資料模塊中該部分代碼是否有誤。如無法定位錯誤,可藉助編輯框下方的「調試控制台」尋找出錯行數。不知道怎麼用?最簡單的方法是輸入 print(p) 後回車,如提示「Lua錯誤」,即可找到出錯的變量及其位置。
| |||
無輸入 | 請輸入線路編號 | 使用模板時填入線路編號,或去除多餘的「|」 | ||||
295 | 數據模塊Module:CNBUS/XXX/yyy出現錯誤 | Module:CNBUS/XXX/yyy沒有結尾 | 在相應模塊添加return line 或return xxxbusline
| |||
308 | 模塊Module:CNBUS/XXX/zzz引用的數據模塊Module:CNBUS/XXX/yyy出現錯誤 | |||||
1234 | 本線已於0202年1月1日停辦,請移除 | 使用模板時刪除該線路 | ||||
5678 | 本線自0202年1月1日起暫停服務 | 使用模板時視情況刪除或保留該線路 | ||||
9012 | 本線並非BRT線路 | 線路缺少 brt_b 參數
|
如該線路並非BRT線路,使用模板時請勿選擇 style=BRT 樣式;如該線路的確為BRT線路,請補充完整該線路在BRT通道的行駛信息,否則使用模板時請勿選擇 style=BRT 樣式。
|
備註
本模塊的相關功能以先前廣州巴士路線列表的樣式排版設計。模塊前身為{{廣州巴士路線}};為優化頁面加載速度和方便在不同系統間調用資料,模板於2019年中進行模塊化改版(Module:GZBUS);為方便各模塊的維護管理,2020年5月再將原先各模塊合併於此。
遇線路調整需要修改模塊數據時,請留意調整所根據的來源性質(不是要求將來源寫入模塊中,這樣做反而可能導致代碼兼容問題),依據近期WP:RSN共識,巴士檔案站(buspedia.top)通常不可靠,請勿單純根據該網站盲目修改。
如您在使用本模塊時遇到問題或有任何建議,歡迎在模塊討論頁中提出。