| 本页面之全部或部分原来自英文维基百科的Build_bracket,依 CC BY-SA 4.0 授权引入;原贡献者可以在这里看到。 |
维基百科 提示您 | 关于Build bracket模块的详细用法, 在自由的百科全书维基百科上 有相关条目。 请参阅:en:Module:Build bracket |
本模块用于创建和编辑 Module:RoundN 或 Module:TeamBracket 无法完成的复杂赛程表。例如:额外表头(用于双败淘汰赛、第三名/第五名/第七名决赛等)、多队比赛(每场比赛有多支队伍)。其语法比前述模板稍复杂,但比直接使用 wikitable 代码简单。
| 参数 | 说明 | 默认值 |
|---|---|---|
rounds |
轮次(列)数目。 | 1
|
autocol |
设置为 yes 时,根据已填内容自动决定最大显示列数。 |
no
|
rows |
手动设置总行数。 | 自动 |
teams-per-match |
每场比赛的队伍数量。可使用 colm-teams-per-match 单独设置某一列。 |
2
|
colm-headers |
(可选)指定在第 m 列中需要显示表头的行号,多个行号用英文逗号 , 分隔。允许使用半整数(如 1.5)。 |
自动 |
colm-matches |
指定在第 m 列中需要放置比赛的行号。默认每个比赛占据两行。多个行号用 , 分隔,允许半整数。 |
|
colm-text |
指定在第 m 列中需要额外文字的行号。多个行号用 , 分隔,允许半整数。 |
|
colm-colm+1-paths |
指定从第 m 列到第 m+1 列的路径的起始行和结束行,格式为 起始行-结束行。多个路径用 , 分隔,允许半整数。 |
|
colm-colm+1-cross |
指定从第 m 列到第 m+1 列的路径交叉点所在行号。 | |
RDm-altname |
RDm 的替代名称(例如,若设置 |RD1-altname=first,则可以用 first-team1 代替 RD1-team1)。使用 RDmh-altname 可针对第 m 列的第 h 个表头进行设置。 |
|
text-altname |
RDm-textk 的替代名称(例如,若设置 |text-altname=details,则可以用 RDm-details1 代替 RDm-text1)。 |
|
maxround |
要显示的最后一轮。通常省略,除非需要将其设为比 rounds 更小的值。 |
|
minround |
要显示的第一轮。 | 1
|
height |
赛程表的垂直可见高度,超出后出现垂直滚动条。输入带单位的数值(如 30em 或 480px)。 |
|
col-spacing |
轮次之间的水平间距。纯数字视为像素(px)。 | 5
|
seed-width |
种子(种子序号)单元格的宽度。纯数字视为 px(例如 25 表示 25px,也可以写 2em)。 |
25
|
team-width |
队伍名称单元格的宽度。纯数字视为 px。 | 150
|
score-width |
比分单元格的宽度。纯数字视为 px。 | 25
|
agg-width |
总分(累计分)单元格的宽度。若不设置,则跟随 score-width。纯数字视为 px。 |
25
|
seeds |
设置为 no 时隐藏所有比赛的种子单元格;设置为 yes 时显示种子单元格。 |
|
legs |
所有轮次的“小节”(leg)数量。可使用 RDm-legs 单独设置某一列,使用 RDm-legsk 单独设置某一队伍。 |
1
|
autolegs |
设置为 yes 时,自动为每支队伍生成比分单元格。如果使用了 legs 或 RDm-legs 参数,autolegs 会被强制设为 no。 |
no
|
byes |
设置为 yes 时,隐藏任何空的队伍单元格。也可以设置为数字 m,表示对第 1 轮到第 m 轮的空队伍单元格进行隐藏。使用 RDm-byes 仅针对第 m 列的比赛,使用 RDmh-byes 仅针对第 m 列第 h 个表头下的比赛。 |
no
|
RDm-hide |
设置为 yes 时,隐藏第 m 列的所有比赛(除非该列某个条目非空)。使用 RDmh-byes 隐藏第 m 列的第 h 个表头及其下方所有比赛。常用于安慰赛等场景。 |
|
show-bye-paths |
设置为 yes 时,将因 byes 而隐藏的队伍单元格替换为路径连线。 |
no
|
aggregate |
设置为 sets 或 legs 时,自动计算赢下的小节数并附加在比分后面;设置为 score 时,累加各小节分数;设置为 y 或 yes 时启用 -agg 后缀但不自动计算。仅当该轮有 2 个或更多小节时有效。手动设置 -agg 后缀的值将覆盖自动计算结果。 |
no
|
boldwinner |
设置为 high 时,自动加粗每场比赛中得分更高一方的种子/队伍/比分;low 加粗得分更低的一方;aggregate 只加粗总分更高的一方;aggregate-low 只加粗总分更低的一方。 |
no
|
shift |
将所有条目垂直移动指定行数。可使用 RDm-shift 单独指定某一列。 |
0
|
RDm, RDmh |
第 m 列中第 h 个表头的文字(例如 RD1 表示第 1 列第一个表头,RD1b 表示第 1 列第二个表头)。 |
|
RDm-seedk |
第 m 列中第 k 支队伍的种子序号。也可以用 RDmh-seedk 指定第 m 列第 h 个表头下的第 k 支队伍。 |
|
RDm-teamk |
第 m 列中第 k 支队伍的名称。也可以用 RDmh-teamk。 |
|
RDm-scorek |
第 m 列中第 k 支队伍的比分。也可以用 RDmh-scorek。附加后缀 -l 表示第 l 个小节,后缀 -agg 表示总分。 |
|
RDm-textk |
第 m 列中第 k 场比赛上方的文字。也可以用 RDmh-textk。 |
|
RDm-groupk |
第 m 列中第 k 个分组的文字。分组文字出现在两条路径汇合处的左侧。 | |
RD-shade |
所有表头的背景颜色(十六进制格式,如 #F2F2F2)。可使用 RDm-shade 或 RDmh-shade 单独指定。 |
#F2F2F2
|
{{#invoke:Build bracket|main
| rounds=2
| teams-per-match = 3
| col1-headers = 1
| col2-headers = 1
| col1-matches = 3,7,11
| col2-matches = 7
| col1-col2-paths = (3,7,11)-7
| RD1 = 半决赛
| RD2 = 总决赛
}}
| 半决赛 | 总决赛 | |||||||
{{#invoke:Build bracket|main
| rounds=4
| col1-headers = 1,7
| col2-headers = 1,7
| col3-headers = 7
| col4-headers = 1
| col1-matches = 4,11
| col2-matches = 3,10
| col3-matches = 9
| col4-matches = 6
| col1-col2-paths = 4-3, 11-10
| col2-col3-paths = 3-3, 10-9
| col3-col4-paths = (3,9)-6
| RD1 = 胜者组第一轮
| RD2 = 胜者组决赛
| RD4 = 总决赛
| RD1b = 败者组第一轮
| RD2b = 败者组第二轮
| RD3b = 败者组决赛
| RD1-team1 = 队伍 1
| RD1-score1 = 0
| RD1-team2 = 队伍 2
| RD1-score2 = 7
| RD2-team1 = 队伍 2
| RD2-score1 = 4
| RD2-team2 = 队伍 3
| RD2-score2 = 7
| RD4-team1 = 队伍 3
| RD4-score1 = 4
| RD4-team2 = 队伍 2
| RD4-score2 = 7
| RD1b-team1 = 队伍 1
| RD1b-score1 = 0
| RD1b-team2 = 队伍 4
| RD1b-score2 = 7
| RD2b-team1 = 队伍 2
| RD2b-score1 = 8
| RD2b-team2 = 队伍 4
| RD2b-score2 = 7
| RD3b-team1 = 队伍 2
| RD3b-score1 = 7
| RD3b-team2 = 队伍 6
| RD3b-score2 = 5
}}
| 胜者组第一轮 | 胜者组决赛 | 总决赛 | ||||||||||||||||
| 队伍 2 | 4 | |||||||||||||||||
| 队伍 1 | 0 | 队伍 3 | 7 | |||||||||||||||
| 队伍 2 | 7 | |||||||||||||||||
| 队伍 3 | 4 | |||||||||||||||||
| 败者组第一轮 | 败者组第二轮 | 败者组决赛 | 队伍 2 | 7 | ||||||||||||||
| 队伍 2 | 7 | |||||||||||||||||
| 队伍 2 | 8 | 队伍 6 | 5 | |||||||||||||||
| 队伍 1 | 0 | 队伍 4 | 7 | |||||||||||||||
| 队伍 4 | 7 | |||||||||||||||||
local p = {}
-- Submodules
local Helpers = require("Module:Build bracket/Helpers")
local Config = require("Module:Build bracket/Config")
local Params = require("Module:Build bracket/Params")
local StateChecks = require("Module:Build bracket/StateChecks")
local Logic = require("Module:Build bracket/Logic")
local Paths = require("Module:Build bracket/Paths")
local Render = require("Module:Build bracket/Render")
-- local Deprecations = require('Module:Build bracket/Deprecations')
function p.main(frame)
-- Shared mutable state passed among submodules
local state = {
headerindex = {},
rlegs = {},
maxlegs = {},
hascross = {},
crossCell = {},
pathCell = {},
skipPath = {},
hide = {},
byes = {},
teamsPerMatch = {},
matchgroup = {},
maxtpm = 0
}
local config = {}
-- 1) Parse args & set config (also installs arg accessors on Helpers)
Config.init(frame, state, config, Helpers)
-- 2) Bind StateChecks (used by Params/Logic/Paths/Render)
StateChecks.bind(state, config, Helpers)
-- 3) Build entries skeleton from args (headers/teams/text/lines/groups)
Params.buildSkeleton(state, config, Helpers, StateChecks)
-- 4) Discover indices/byes/hide across the skeleton
Params.scanStructure(state, config, Helpers, StateChecks)
-- 5) assign per-entry params
Params.assign(state, config, Helpers, StateChecks)
-- 5.5) apply minround slicing (reindex to start at 1)
Params.sliceForMinround(state, config)
-- 6) Logic passes (max legs, grouping, aggregates, bolding)
Logic.updateMaxLegs(state, config, Helpers)
Logic.matchGroups(state, config)
Logic.computeAggregate(state, config, Helpers, StateChecks)
Logic.boldWinner(state, config, Helpers, StateChecks)
-- 7) paths + derive groups from paths
Paths.build(state, config, Helpers, StateChecks)
Paths.attachGroups(state, config, Helpers, StateChecks)
-- (Harmless guard if user passed odd ranges)
if (tonumber(config.c) or 1) < (tonumber(config.minc) or 1) then
config.c = config.minc
end
-- 8) Render HTML table
local html = Render.buildTable(frame, state, config, Helpers, StateChecks)
return tostring(html)
end
-- Exposed for tests/scripts that invoke without a frame
p._main = p.main
return p