diff --git a/lua/wikis/commons/MatchGroup/Display/Helper.lua b/lua/wikis/commons/MatchGroup/Display/Helper.lua index 3a4fe21d362..943e72250e0 100644 --- a/lua/wikis/commons/MatchGroup/Display/Helper.lua +++ b/lua/wikis/commons/MatchGroup/Display/Helper.lua @@ -17,6 +17,7 @@ local Page = Lua.import('Module:Page') local PlayerDisplay = Lua.import('Module:Player/Display') local String = Lua.import('Module:StringUtils') local Table = Lua.import('Module:Table') +local Template = Lua.import('Module:Template') local TeamTemplate = Lua.import('Module:TeamTemplate') local Info = Lua.import('Module:Info', {loadData = true}) @@ -98,6 +99,7 @@ function DisplayHelper.createSubstitutesComment(match) if Logic.isEmpty(substitutions) then return end + ---@cast substitutions MatchGroupInputSubstituteInformation[] Array.forEach(substitutions, function(substitution) if Logic.isEmpty(substitution.substitute) then @@ -131,13 +133,32 @@ function DisplayHelper.createSubstitutesComment(match) table.insert(subString, string.format('due to %s', substitution.reason)) end - table.insert(comment, table.concat(subString, ' ') .. '.') + table.insert( + comment, + table.concat(subString, ' ') .. '.' .. DisplayHelper._createSubstituteReferences(substitution.references) + ) end) end) return comment end +---@private +---@param references table[]? +---@return string +function DisplayHelper._createSubstituteReferences(references) + if Logic.isEmpty(references) then + return '' + end + ---@cast references -nil + local frame = mw.getCurrentFrame() + return table.concat(Array.map(references, function (reference) + return frame:extensionTag('ref', Template.safeExpand( + frame, 'Cite web', reference + )) + end)) +end + ---Creates display components for caster(s). ---@param casters {name: string?, displayName: string?, flag: string?}[] ---@return (string|Widget|nil)[] diff --git a/lua/wikis/commons/MatchGroup/Input/Util.lua b/lua/wikis/commons/MatchGroup/Input/Util.lua index 7a0da3912dd..a2a24b9c606 100644 --- a/lua/wikis/commons/MatchGroup/Input/Util.lua +++ b/lua/wikis/commons/MatchGroup/Input/Util.lua @@ -128,6 +128,7 @@ local contentLanguage = mw.getContentLanguage() ---@field player standardPlayer? ---@field games string[] ---@field reason string? +---@field references table[]? ---@param dateString string? ---@param dateFallbacks string[]? @@ -406,6 +407,7 @@ function MatchGroupInputUtil.extractManualPlayersInput(match, opponentIndex, opp player = makeStandardPlayer(substitution.out), games = Logic.nilIfEmpty(Array.parseCommaSeparatedString(substitution.games, ';')), reason = substitution.reason, + references = substitution.references, } end)