模块:香港巴士
此模块被引用于约2,900个页面。 为了避免造成大规模的影响,所有对此模块的编辑应先于沙盒或测试样例上测试。 测试后无误的版本可以一次性地加入此模块中,但是修改前请务必于讨论页发起讨论。 模板引用数量会自动更新。 |
子模块
- Module:香港巴士/hki:港岛巴士
- Module:香港巴士/klnt:九龙及新界巴士
- Module:香港巴士/crh:过海隧道巴士
- Module:香港巴士/lantau:大屿山巴士
- Module:香港巴士/aex:机场快线穿梭巴士
-- placeholder for subpage, will be written later
-- rewrite {{九龍新界巴士簡單列表}} etc. into module to reduce load
local getArgs = require('Module:Arguments').getArgs
local alldata = {
klnt = require('Module:香港巴士/klnt');
hki = require('Module:香港巴士/hki');
crh = require('Module:香港巴士/crh');
lantau = require('Module:香港巴士/lantau');
aex = require('Module:香港巴士/aex')
}
local comp = {
kmb = "九龍巴士"; city = "城巴";
mtr = "港鐵巴士"; lantau = "新大嶼山巴士";
mtrshut = "港鐵接駁巴士"; crh = "過海隧道巴士";
longwin = "龍運巴士"; disney = "迪士尼樂園巴士";
ltshut = "大嶼山北部穿梭巴士"; airshut = "機場快綫穿梭巴士";
reshut = "香港居民巴士"; db = "愉景灣巴士";
}
local p = {}
local dir = {'↺', '→', '⇄', '→<br/>←', '↺<br/>←', '→<br/>↺', '↺<br/>↺'}
function split(inputstr, sep)
if sep == nil then
sep = "%s"
end
local t={}
for str in string.gmatch(inputstr, "([^"..sep.."]+)") do
table.insert(t, str)
end
return t
end
function p.main(frame)
local args = getArgs(frame)
return p._main(frame, args)
end
function p._main(frame, args)
local grp = ''
if args.l == "klnt" or args.l == "九龍" or args.l == "新界" or args.l == "九龍新界" then grp = "klnt"
elseif args.l == "hki" or args.l == "港島" or args.l == "香港島" then grp = "hki"
elseif args.l == "crh" or args.l == "過海" then grp = "crh"
elseif args.l == "lantau" or args.l == "大嶼山" then grp = "lantau"
elseif args.l == "aex" or args.l == "機場" then grp = "aex"
end
local data = alldata[grp]
local out = ""
-- Main module code goes here.
-- return args
if args[1] == nil or args[1] == "" then
return '\n|-\n| colspan=4 | 沒有任何巴士路線'
end
for i = 1, 100, 1 do
if not(args[i]) then break end
local special = string.find('' .. args[i], "_s")
local route = split(args[i], "_s")[1]
local spi = split(args[i], "_s")[2] or ''
out = out .. '\n|-\n| style="text-align: right; padding-right: 10px" |'
if data[route] then
out = out .. "[[" .. comp[data[route].company] .. route
if string.match(route, "^%d$") then out = out .. "號" end
if data[route].company == "mtr" or data[route].company == "mtrshut"
or data[route].company == "airshut" then out = out .. "綫"
else out = out .. "線" end
out = out .. "|" .. route .. "]]"
out = out .. '\n| style="text-align: right; white-space: nowrap" | '
if special then
local dirstr = ''
if data[route]['special' .. spi .. '_direction'] then
dirstr = dir[data[route]['special' .. spi .. '_direction']+1] end
out = out .. frame:preprocess( data[route]['special' .. spi .. '_endpoint1'] )
.. '\n| style="text-align: center; padding: 0px 8px 0px 8px" |'
.. dirstr
.. '\n| style="white-space: nowrap" |'
.. frame:preprocess( data[route]['special' .. spi .. '_endpoint2'] )
.. '\n| style="padding-left: 10px" |'
.. frame:preprocess( data[route]['special' .. spi .. '_status'] )
else
local dirstr = ''
if data[route]['direction'] then
dirstr = dir[data[route]['direction']+1] end
out = out .. frame:preprocess( data[route]['endpoint1'] )
.. '\n| style="text-align: center; padding: 0px 8px 0px 8px" |'
.. dirstr
.. '\n| style="white-space: nowrap" |'
.. frame:preprocess( data[route]['endpoint2'] )
.. '\n| style="padding-left: 10px" |'
.. frame:preprocess( data[route]['status'] )
end
else
out = out .. '\n|' .. route .. '|| colspan="3" style="text-align: center" | (沒有資料,請加入至[[Module:香港巴士/' .. grp .. ']]。)'
end
end
return out
end
p.list = p.main
function p.tbl(frame)
local args = getArgs(frame)
local grp = ''
if args.l == "klnt" or args.l == "九龍" or args.l == "新界" or args.l == "九龍新界" then grp = "klnt"
elseif args.l == "hki" or args.l == "港島" or args.l == "香港島" then grp = "hki"
elseif args.l == "crh" or args.l == "過海" then grp = "crh"
elseif args.l == "lantau" or args.l == "大嶼山" then grp = "lantau"
elseif args.l == "aex" or args.l == "機場" then grp = "aex"
end
local data = alldata[grp]
local out = ""
-- Main module code goes here.
-- return args
if args[1] == nil or args[1] == "" then
return '\n|-\n| colspan=3 | 沒有任何巴士路線'
end
for i = 1, 100, 1 do
if not(args[i]) then break end
local special = string.find('' .. args[i], "_s")
local route = split(args[i], "_s")[1]
local spi = split(args[i], "_s")[2] or ''
out = out .. '\n|-\n| style="text-align: right" |'
if data[route] then
out = out .. "[[" .. comp[data[route].company] .. route
if string.match(route, "^%d$") then out = out .. "號" end
if data[route].company == "mtr" or data[route].company == "mtrshut"
or data[route].company == "airshut" then out = out .. "綫"
else out = out .. "線" end
out = out .. "|" .. route .. "]]"
out = out .. '||'
if special then
out = out .. data[route]['special' .. spi .. '_normal'] .. "||"
.. frame:preprocess( data[route]['special' .. spi .. '_status'] )
else
out = out .. data[route]['normal'] .. "||"
.. frame:preprocess( data[route]['status'] )
end
else
out = out .. '\n|' .. route .. '|| colspan="2" style="text-align: center" | (沒有資料,請加入至[[Module:香港巴士/' .. grp .. ']]。)'
end
end
return out
end
function p.data(frame)
local args = getArgs(frame)
local grp = ''
if args.l == "klnt" or args.l == "九龍" or args.l == "新界" or args.l == "九龍新界" then grp = "klnt"
elseif args.l == "hki" or args.l == "港島" or args.l == "香港島" then grp = "hki"
elseif args.l == "crh" or args.l == "過海" then grp = "crh"
elseif args.l == "lantau" or args.l == "大嶼山" then grp = "lantau"
elseif args.l == "aex" or args.l == "機場" then grp = "aex"
end
local data = alldata[grp]
local out = ""
local route = args[1]
local prop = args[2]
-- Main module code goes here.
-- return args
if route == nil or route == "" or prop == nil or prop == "" then
return '沒有填寫巴士路線參數'
end
local out = ''
if data[route] then
if data[route][prop] then out = data[route][prop]
else out = '未找到該路綫的' .. prop .. '資料,請複查[[Module:香港巴士/' .. grp .. ']]。' end
else out = '未有資料,請加入至[[Module:香港巴士/' .. grp .. ']]。' end
return out
end
return p