模組:CNBUS/doc

此頁面為 Module:CNBUS 的說明文件

本模組是實現一系列交通相關模板功能的基礎模組,支持管理各城市公共汽車系統的數據資料,目前主要用於生成一個顯示公交線路資料的表格。

子模組一覽

目前,各公交系統均使用獨立的模板,並依賴本模組子頁面的相關資料。下表為本模組已建立的子模組。您也可以仿照後文所述的格式新建子模組(並不限於中國大陸城市),並將其添加至下表。歡迎各位對已有資料進行定期維護更新。

相互引用情況

珠三角各系統
位置

Module:CNBUS/

被引用系統
肇慶 珠海 江門 中山 佛山 廣州 東莞 惠州 深圳
系統 肇慶 不適用 ZQ/foshan
珠海 不適用 ZH/jiangmen ZH/data

ZH/zhongsha

江門 JM/zhuhai 不適用 JM/zhongshan JM/foshan
中山 ZS/zhuhai ZS/data 不適用 ZS/foshan
佛山 FS/zhaoqing FS/data

FS/jiangmen

FS/data

FS/zhongshan

不適用 FS/guangzhou
廣州 GZ/foshan 不適用 GZ/dongguan
東莞 DG/guangzhou 不適用 DG/huizhou DG/shenzhen
惠州 HZ/dongguan 不適用 HZ/shenzhen
深圳 SZ/zhongshan SZ/dongguan SZ/huizhou 不適用
潮汕地區各系統
位置

Module:CNBUS/

被引用系統
汕頭 潮州 揭陽
系統 汕頭 不適用 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=#包含系统 }}

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的值為子區域各線路的詳細資料;pagename用於設定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",
}

在本例中,一汽和三汽公司的代碼分別為bus1bus3,則運營商為「一汽一分」和「一汽二分」的代表色為「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]fareoperatornote參數建議填寫(<区间>相關補全規則見#區間子表)。
  • operatorsvehicles既可以是字串,也可以是數組(顯示時分行)。數組表示的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 = "直" }, { "机场" } },

用例

常見錯誤

在條目中使用引用了本模組的模板後,可能會提示以下錯誤:

錯誤提示 錯誤原因 解決方法
錯誤 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 linereturn 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)通常不可靠,請勿單純根據該網站盲目修改。

如您在使用本模組時遇到問題或有任何建議,歡迎在模組討論頁中提出。