Modul:Sports series: Perbedaan antara revisi

Konten dihapus Konten ditambahkan
opsi tabel rata tengah
Penambahan beberapa fitur; Penghapusan fitur type=NT, diganti dengan templat-templat terkait {{fb}}
Baris 14:
end
 
-- Function to process country codes and variants OR youth team flag templates and age level, dividing parameters by the "+" sign
local function processIcon(iconString)
if not iconString or iconString:match("^%s*$") then
Baris 243:
end
 
-- Function to format the dashes and winning notes for aggregate/leg score parameters, and divide the score from references/notes/superscripts
local function format_scoreformat_and_extract_score(s, noWrapdoWrap)
if not s then return '', '' end -- Return empty stringstrings if input is nil
local function format_dash(pattern)
Baris 261:
 
-- Format winning notes in brackets
if noWrapdoWrap and not (s:match("%(.*%(")) then
s = mw.ustring.gsub(s, '(%(%d+%s*–%s*%d+)%s+[Pp]%.?[EeSs]?%.?[NnOo]?%.?%)', '%1 [[Adu penalti|a.p]])')
s = mw.ustring.gsub(s, '%([Aa]%.?[Ee]%.?[Tt]%.?%)', '([[Perpanjangan waktu (sepak bola)|p.w.]])')
Baris 270:
s = mw.ustring.gsub(s, '%([Aa]%.?[Gg]?%.?[Rr]?%.?%)', '([[Peraturan gol tandang|p.g.t]])')
 
-- Extract end text
return s
-- Pattern to match superscript
local supStart = s:find('<sup')
-- Pattern to match the unique placeholder
local placeholderStart = s:find('\127%\'"`UNIQ')
 
-- Function to find the first parenthesis outside of wikilinks
local function find_paren_outside_wikilinks(s)
local pos = 1
while true do
pos = s:find('%(', pos)
if not pos then break end
 
-- Check if there are unclosed [[ before this position
local beforeParen = s:sub(1, pos - 1)
local openLinks = 0
for linkStart in beforeParen:gmatch('%[%[') do
openLinks = openLinks + 1
end
for linkEnd in beforeParen:gmatch('%]%]') do
openLinks = openLinks - 1
end
 
-- If there are no unclosed links, this is a valid parenthesis
if openLinks == 0 then
return pos
end
 
pos = pos + 1
end
return nil
end
 
-- Find the first parenthesis outside of wikilinks
local parenStart = find_paren_outside_wikilinks(s)
 
-- Store all start positions in a table
local startPositions = {}
if supStart then table.insert(startPositions, supStart) end
if placeholderStart then table.insert(startPositions, placeholderStart) end
if parenStart then table.insert(startPositions, parenStart) end
 
local startPos
if #startPositions > 0 then
startPos = math.min(unpack(startPositions)) -- Find the minimum start position
end
 
if startPos then
-- Find the preceding whitespace
local wsStart = s:find("%s*$", 1, startPos)
 
-- Extract the score and endText
local scoreMatch = s:sub(1, wsStart and wsStart - 1 or startPos - 1)
local endText = s:sub(wsStart or startPos)
 
return scoreMatch, endText
else
-- If no match found, return the entire score
return s, ""
end
end
 
-- Function to rewriteclean anchorteam linksnames ofand matchgenerate scoreslinks
local function rewriteAnchorLinkscleanAndGenerateLinks(textteam1, baselinkteam2, score, isSecondLeg)
local function cleanTeam(str, defaultName)
if not text then
if str and str ~= "" then
return text
str = str:gsub("</?%w+[^>]*>", "")
end
str = str:gsub('\127%\'"`UNIQ.-QINU`"%\'\127', '')
return text:gsub('(%[%[)(#[^%[%]]*%|)', '%1' .. baselink .. '%2')
str = str:gsub("%[%[[Ff]ile:[^%]]+%]%]", "")
str = str:gsub("%[%[[Bb]erkas:[^%]]+%]%]", "")
str = str:gsub("%[%[[Ii]mage:[^%]]+%]%]", "")
str = str:gsub("%[%[.-%]%]", replaceLink)
str = str:match("^%s*(.-)%s*$") -- Remove leading and trailing whitespace
return str ~= "" and str or defaultName
end
return defaultName
end
 
team1 = cleanTeam(team1, "Team 1")
team2 = cleanTeam(team2, "Team 2")
 
if score and score:match("%S") then
local linkScore = score
if score:find('%[') then
linkScore = score:match('^([%d%.]+–[%d%.]+)')
if not linkScore then
return score
end
end
 
if linkScore then
local link
if isSecondLeg then
link = "[[#" .. team2 .. " v " .. team1 .. "|" .. linkScore .. "]]"
else
link = "[[#" .. team1 .. " v " .. team2 .. "|" .. linkScore .. "]]"
end
return link .. score:sub(#linkScore + 1)
end
end
 
return score
end
 
Baris 294 ⟶ 387:
end
-- Helper function for boolean checks
local function isTrue(value)
if not value then return false end
local lowerValue = value:lower()
return lowerValue == 'y' or lowerValue == 'yes' or lowerValue == '1' or lowerValue == 'true'
end
 
-- Helper function for negative boolean checks
local function isFalse(value)
if not value then return false end
local lowerValue = value:lower()
return lowerValue == 'n' or lowerValue == 'no' or lowerValue == '0' or lowerValue == 'false' or lowerValue == 'null' or lowerValue == 'none'
end
 
local root = mw.html.create()
local matchType = (args.type == 'WNT' or args.type == 'MNT') and 'NT' or (args.type or 'club') -- Set default match type to 'club'
local isWNT = args.type == 'WNT' -- Track if WNT was set
local flagTemplate, flagParam1
local noFlagIcons = false
local fillBlanks = args.fill_blanks and isTrue(args.fill_blanks == 'y' or args.fill_blanks == 'yes' or args.fill_blanks == '1' or args.fill_blanks == 'true')
local generateLinks = isTrue(args.generate_links)
local solidCell = args.solid_cell and (args.solid_cell == 'y' or args.solid_cell == 'yes' or args.solid_cell == '1' or args.solid_cell == 'true' or args.solid_cell == 'grey' or args.solid_cell == 'gray' or args.solid_cell == 'abu-abu')
local solidCell = isTrue(args.solid_cell) or args.solid_cell == 'grey' or args.solid_cell == 'gray' or args.solid_cell == 'abu-abu'
local baselink = frame:getParent():getTitle()
if mw.title.getCurrentTitle().text == baselink then baselink = '' end
Baris 313 ⟶ 418:
end
end
-- Calculate the font size for small text
local smallFontSize
if fontSize then
smallFontSize = math.floor(((fontSize / 100) * 0.85) * 100)
else
smallFontSize = 85
end
-- Process flag parameter to determine flag template and variant
iflocal args.flagflagTemplate and= args.flag:find( or '+fbaicon') then -- Default to {{fbaicon}}
local noFlagIcons = isFalse(args.flag)
flagTemplate, flagParam1 = processIcon(args.flag) -- Process flag icons with variants
local flagSize = args.flag_size
else
if flagSize and not if args.flagflagSize:match('px$') then
flagSize = flagSize .. flagTemplate = args.flag'px'
elseif isWNT then
flagTemplate = 'fbw' -- Default to {{fbw}} for WNT matches
elseif matchType == 'NT' then
flagTemplate = 'fb' -- Default to {{fb}} for NT/MNT matches
else
flagTemplate = 'fbaicon' -- Default to {{fbaicon}} for club matches
end
end
 
-- Check if flagTemplate exists and adjust if necessary
if args.flag and (flagTemplate == 'n' or flagTemplate == 'no' or flagTemplate == '0' or flagTemplate == 'false' or flagTemplate == 'null' or flagTemplate == 'none' or flagTemplate == 'noflag') then
if not noFlagIcons and flagTemplate ~= 'fbaicon' then
noFlagIcons = true -- Hide flag icons for club matches
if matchTypenot == 'NT'templateExists(flagTemplate) then
flagTemplate = 'flagicon'
flagTemplate = isWNT and 'fbw' or 'fb' -- Set flagTemplate to "fbw"/"fb", as disabling flags is not allowed for NT
flagParam1 = false
end
end
 
-- Determine whether line should be displayed
-- Check if flagTemplate exists and adjust if necessary
local showCountry = args.show_country
if matchType == 'NT' and (flagTemplate ~= 'fb' and flagTemplate ~= 'fbw') then
local function shouldShowRow(team1Icon, team2Icon)
if not templateExists(flagTemplate) or not templateExists(flagTemplate .. '-rt') then
if not showCountry or noFlagIcons then
flagTemplate = isWNT and 'fbw' or 'fb'
return true
end
end
elseif not noFlagIcons and flagTemplate ~= 'fbaicon' then
return team1Icon == showCountry or team2Icon == showCountry
if not templateExists(flagTemplate) then
flagTemplate = 'fbaicon'
end
end
 
local legs = (isFalse(args.legs == '1') or args.legs == 'n' or args.legs == 'no' or args.legs == 'false' or args.legs == 'null' or args.legs == 'none' or args.legs == 'single' or args.legs == 'one1') and 0 or tonumber(args.legs) or 2
if legs and legs < 0 then
legs = 2
Baris 361 ⟶ 449:
local teamWidth = (tonumber(args['team_width']) and args['team_width'] .. 'px') or '250px'
local scoreWidth = (tonumber(args['score_width']) and args['score_width'] .. 'px') or '80px'
local boldWinner = not isFalse(args.bold_winner == 'n' or args.bold_winner == 'no' or args.bold_winner == '0' or args.bold_winner == 'false' or args.bold_winner == 'null')
local colorWinner = args.color_winner and isTrue(args.color_winner == 'y' or args.color_winner == 'yes' or args.color_winner == '1' or args.color_winner == 'true')
local matchesStyle = args.matches_style
local isFBRStyle = matchesStyle and matchesStyle:upper() == "FBR"
local isHA = isTrue(args.h_a == 'y' or args.h_a == 'yes' or args.h_a == '1' or args.h_a == 'true')
local disableAwayGoals = isFalse(args.away_goals == 'n' or args.away_goals == 'no' or args.away_goals == '0' or args.away_goals == 'false' or args.away_goals == 'null')
local disableSmallText = isFalse(args.small_text == 'n' or args.small_text == 'no' or args.small_text == '0' or args.small_text == 'false' or args.small_text == 'null')
local noWrap = args.nowrap and isTrue(args.nowrap == 'y' or args.nowrap == 'yes' or args.nowrap == '1' or args.nowrap == 'true')
local disableNoWrap = isFalse(args.nowrap)
local doWrap = not noWrap and not disableNoWrap
local tableClass = 'wikitable'
local tableStyle = 'text-align: center;'
if args.collapsed and isTrue(args.collapsed == 'y' or args.collapsed == 'yes' or args.collapsed == '1' or args.collapsed == 'true') then
tableClass = 'wikitable mw-collapsible mw-collapsed'
tableStyle = tableStyle .. ' width: 100%;'
end
if args.center_table and isTrue(args.center_table == 'y' or args.center_table == 'yes' or args.center_table == '1' or args.center_table == 'true') then
tableStyle = tableStyle .. ' margin-left: auto; margin-right: auto; border: none;'
end
Baris 419 ⟶ 509:
-- Create the header row with team and score columns
local header = table:tag('tr')
if doWrap then
header:css('white-space', 'nowrap')
end
local defaultTeam1 = isHA and 'Tim kandang' or 'Tim 1'
local defaultTeam2 = isHA and 'Tim tandang' or 'Tim 2'
Baris 439 ⟶ 532:
if legs > 0 then
for leg = 1, legs do
local legHeading = args['leg' .. leg]
 
-- Check if "legN" parameter is present
if args['leg'not .. leg]legHeading then
legHeading = args['leg' .. leg]
else
-- Check if "leg_prefix" parameter is present
if args.leg_prefix then
--legHeading Check if= isTrue(args.leg_prefix) isand y,('Leg yes,' 1,.. leg) or true(args.leg_prefix .. ' ' .. leg)
ifelseif args.leg_prefixleg_suffix ==and 'y' ornot isTrue(args.leg_prefix == 'yes' or args.leg_prefix == '1' or args.leg_prefix == 'true'leg_suffix) then
legHeading = 'Laga ' .. leg
else
legHeading = args.leg_prefix .. ' ' .. leg
end
-- Check if "leg_suffix" parameter is present and does not equal y, yes, 1, or true
elseif args.leg_suffix and args.leg_suffix ~= 'y' and args.leg_suffix ~= 'yes' and args.leg_suffix ~= '1' and args.leg_suffix ~= 'true' then
legHeading = args.leg_suffix .. ' ' .. ordinal(leg)
else
Baris 468 ⟶ 552:
end
 
local step = (matchType == 'NT' and 3 or (noFlagIcons and 3 or 5)) + legs -- Determine the step size based on the match type and presence of flag icons
local i = 1
while anyParameterPresent(i, step, args) do
local rowIndex = math.floor((i - 1) / step) + 1
local headingParam = args['heading' .. rowIndex]
local team1, team2, aggregateScore, aggregateEndText, legEndText, team1Icon, team2Icon, team1Variant, team2Variant
-- Add a heading above a given row in the table
if headingParam then
local headingRow = table:tag('tr')
headingRow:tag('td')
:attr('colspan', colCount)
:css('text-align', 'center')
:css('background', 'whitesmoke')
:wikitext('<strong>' .. headingParam .. '</strong>')
end
 
local row = table:tag('tr')
local team1, team2, aggregateScore, team1Icon, team2Icon, team1Variant, team2Variant
local team1Winner, team2Winner, manualBold, manualColor, isDraw = false, false, false, false, false
local leg1Score, leg2Score = false, false
local team1Asterick, team2Asterick = false, false
-- Process rows from input
 
team1 = args[i]
-- Process rows for both national team and club matches
if matchType == 'NT'noFlagIcons then
team1 = args[i]
if team1 and team1:match("^%s*%*") then
team1 = team1:gsub("^%s*%*", "")
team1Asterick = true
else
team1, team1Variant = processIcon(args[i])
end
aggregateScore = args[i+1]
team2 = args[i+2]
if team2 and team2:match("^%s*%*") then
team2 = team2:gsub("^%s*%*", "")
team2Asterick = true
else
team2, team2Variant = processIcon(args[i+2])
end
else
team1team1Icon, team1Variant = processIcon(args[i+1])
ifaggregateScore noFlagIcons= thenargs[i+2]
aggregateScoreteam2 = args[i+13]
team2Icon, team2team2Variant = processIcon(args[i+24])
else
team1Icon, team1Variant = processIcon(args[i+1])
aggregateScore = args[i+2]
team2 = args[i+3]
team2Icon, team2Variant = processIcon(args[i+4])
end
end
 
-- NameCheck if the 1st/2ndline should be legshown scoresbased foron two-leggedboth tiesteams
if legsshouldShowRow(team1Icon, == 2team2Icon) then
if-- matchTypeAdd ==a 'NT'heading orabove noFlagIconsa thengiven row in the table
if headingParam and not leg1ScoreshowCountry = args[i+3]then
leg2Scorelocal headingRow = args[i+4]table:tag('tr')
else headingRow:tag('td')
leg1Score = args[i+5] :attr('colspan', colCount)
leg2Score = args[i+6] :css('background', 'whitesmoke')
:wikitext('<strong>' .. headingParam .. '</strong>')
end
end
 
local row = table:tag('tr')
-- Clean the aggregate score
local cleanAggregate = cleanScore(aggregateScore)
-- Format and rewrite anchor links for aggregate score
aggregateScore = format_score(aggregateScore, noWrap)
if baselink ~= '' then
aggregateScore = rewriteAnchorLinks(aggregateScore, baselink)
end
 
-- Name the 1st/2nd leg scores for two-legged ties
-- Determine the winning team on aggregate
if legs == 2 then
team1, team2, team1Winner, team2Winner, manualBold, manualColor, isDraw, aggregateScore = determineWinner(cleanAggregate, team1, team2, boldWinner, colorWinner, aggregateScore, isFBRStyle, legs, leg1Score, leg2Score, disableAwayGoals)
if noFlagIcons then
leg1Score = args[i+3]
leg2Score = args[i+4]
else
leg1Score = args[i+5]
leg2Score = args[i+6]
end
end
 
-- Add background-color for winning team-- ifClean setthe byaggregate userscore
local team1StylecleanAggregate = 'text-align: right;'cleanScore(aggregateScore)
-- Format and rewrite anchor links for aggregate score
local team2Style = 'text-align: left;'
aggregateScore, aggregateEndText = format_and_extract_score(aggregateScore, doWrap)
if team1Winner and (colorWinner or manualColor) then
team1Styleif =generateLinks team1Styleand ..legs '== background-color:0 #CCFFCC;'then
aggregateScore = cleanAndGenerateLinks(team1, team2, aggregateScore, false)
end
end
if team2Winner and (colorWinner or manualColor) then
team2Style = team2Style .. ' background-color: #CCFFCC;'
end
 
-- Generate text to display-- forDetermine eachthe winning team on aggregate
local skipDetermineWinner = legs == 0 and aggregateScore ~= '' and checkSmallText(aggregateScore)
local team1Text, team2Text
 
if matchType == 'NT' then
if not skipDetermineWinner then
if flagParam1 then -- Check whether youth team flag template with age level is used
team1, team2, team1Winner, team2Winner, manualBold, manualColor, isDraw, aggregateScore = determineWinner(cleanAggregate, team1, team2, boldWinner, colorWinner, aggregateScore, isFBRStyle, legs, leg1Score, leg2Score, disableAwayGoals)
team1Text = (not team1Asterick and team1 ~= "" and team1 ~= nil) and (expandTemplate(frame, flagTemplate .. '-rt', {flagParam1, team1, variant = team1Variant})) or (team1 ~= nil and team1 or "")
team2Text = (not team2Asterick and team2 ~= "" and team2 ~= nil) and (expandTemplate(frame, flagTemplate, {flagParam1, team2, variant = team2Variant})) or (team2 ~= nil and team2 or "")
else -- Use standard national team flag template without age level
team1Text = (not team1Asterick and team1 ~= "" and team1 ~= nil) and (expandTemplate(frame, flagTemplate .. '-rt', {team1, variant = team1Variant})) or (team1 ~= nil and team1 or "")
team2Text = (not team2Asterick and team2 ~= "" and team2 ~= nil) and (expandTemplate(frame, flagTemplate, {team2, variant = team2Variant})) or (team2 ~= nil and team2 or "")
end
else
team1Text = noFlagIcons and (team1 or '') or ((team1Icon ~= "" and team1Icon ~= nil) and ((team1 or '') .. ' ' .. expandTemplate(frame, flagTemplate, {team1Icon, variant = team1Variant})) or (team1 or ''))
team2Text = noFlagIcons and (team2 or '') or ((team2Icon ~= "" and team2Icon ~= nil) and (expandTemplate(frame, flagTemplate, {team2Icon, variant = team2Variant}) .. ' ' .. (team2 or '')) or (team2 or ''))
end
 
-- When set by user,-- addsAdd blank flags when string is usedbackground-color for awinning team insteadif ofset nationalby team flag templateuser
local team1Style = 'text-align: right;'
if fillBlanks then
iflocal matchTypeteam2Style == 'NTtext-align: left;' then
if team1Winner and (colorWinner ifor team1AsterickmanualColor) then
team1Textteam1Style = team1Textteam1Style .. ' <span class="flagicon">[[Berkasbackground-color:Flag placeholder.svg|25x17px|link=]]</span>#CCFFCC;'
end
if team2Winner and (colorWinner or manualColor) then
team2Style = team2Style .. ' background-color: #CCFFCC;'
end
-- Function to create flag template parameters
local function getFlagParams(icon, variant)
local params = {icon, variant = variant}
if flagSize then
params.size = flagSize
end
ifreturn team2Asterick thenparams
end
team2Text = '<span class="flagicon">[[Berkas:Flag placeholder.svg|25x17px|link=]]</span> ' .. team2Text
 
end
elseif-- notGenerate noFlagIconstext thento display for each team
local team1Text = noFlagIcons and (team1 or '') or ((team1Icon ~= "" and team1Icon ~= nil) and ((team1 or '') .. '&nbsp;' .. expandTemplate(frame, flagTemplate, getFlagParams(team1Icon, team1Variant))) or (team1 or ''))
local team2Text = noFlagIcons and (team2 or '') or ((team2Icon ~= "" and team2Icon ~= nil) and (expandTemplate(frame, flagTemplate, getFlagParams(team2Icon, team2Variant)) .. '&nbsp;' .. (team2 or '')) or (team2 or ''))
 
-- When set by user, adds blank flag placeholder next to team names
if fillBlanks and not noFlagIcons then
if not team1Icon or team1Icon == "" then
team1Text = team1Text .. ' &nbsp;<span class="flagicon">[[BerkasFile:Flag placeholder.svg|25x17px|link=]]</span>'
end
if not team2Icon or team2Icon == "" then
team2Text = '<span class="flagicon">[[BerkasFile:Flag placeholder.svg|25x17px|link=]]</span> &nbsp;' .. team2Text
end
end
end
 
-- Create aggregate score celllocal with conditional stylingaggregateContent
if not disableSmallText and skipDetermineWinner then
local aggregateStyle = ''
if legs == 0 and not disableSmallText and aggregateScoreaggregateContent ~= '<span style="font-size:85%;">' and.. checkSmallText(aggregateScore) then.. '</span>' .. aggregateEndText
else
aggregateStyle = 'font-size: ' .. smallFontSize .. '%;'
aggregateContent = aggregateScore .. aggregateEndText
end
if isFBRStyle and legs == 0 thenend
 
if team1Winner then
-- Create aggregate score cell with conditional styling
aggregateStyle = aggregateStyle .. 'background-color: #BBF3FF;'
elseiflocal team2WinneraggregateStyle then= ''
if doWrap and not (cleanAggregate:match("%(.*%(")) then
aggregateStyle = aggregateStyle .. 'background-color: #FFBBBB;'
aggregateStyle = 'white-space: nowrap;'
end
if isFBRStyle and legs == 0 then
if team1Winner then
aggregateStyle = aggregateStyle .. 'background-color: #BBF3FF;'
elseif team2Winner then
aggregateStyle = aggregateStyle .. 'background-color: #FFBBBB;'
elseif isDraw then
aggregateStyle = aggregateStyle .. 'background-color: #FFFFBB;'
end
elseif isDraw then
aggregateStyle = aggregateStyle .. 'background-color: #FFFFBB;'
end
elseif isDraw then
aggregateStyle = aggregateStyle .. 'background-color: #FFFFBB;'
end
 
-- Create rows for aggregate score and team names, bolded if set by user
row:tag('td'):cssText(team1Style):wikitext((team1Winner and (boldWinner or manualBold) and team1Text ~= '') and ('<strong>' .. team1Text .. '</strong>') or team1Text)
row:tag('td'):cssText(aggregateStyle ~= '' and aggregateStyle or nil):wikitext(aggregateScoreaggregateContent)
row:tag('td'):cssText(team2Style):wikitext((team2Winner and (boldWinner or manualBold) and team2Text ~= '') and ('<strong>' .. team2Text .. '</strong>') or team2Text)
 
-- Add columns for each leg score if applicable
if legs > 0 then
for leg = 1, legs do
local legIndex = i + 4 + leg + (matchType == 'NT' and -2 or (noFlagIcons and -2 or 0))
local legScore = args[legIndex]
if legScore ~= "nil" then
if legScore == "null" then
if solidCell then
row:tag('td'):css('background', '#BBBBBB')
else
row:tag('td'):wikitext( legScore = '—')
end
end
 
else
--if FormatlegScore and~= rewrite"null" anchoror linksnot forsolidCell leg scoresthen
legScore = format_score(legScore, noWrap) -- Format and rewrite anchor links for leg scores
if baselink ~= '' thenlocal cleanLeg = cleanScore(legScore)
legScore, legEndText = rewriteAnchorLinksformat_and_extract_score(legScore, baselinkdoWrap)
end if generateLinks then
local legStyle if leg == 1 ''then
if not disableSmallText and legScore ~= ''cleanAndGenerateLinks(team1, andteam2, checkSmallText(legScore), thenfalse)
legStyle = 'font-size: ' .. smallFontSize .. '%;' elseif leg == 2 then
legScore = cleanAndGenerateLinks(team1, team2, legScore, true)
end
end
local legContent
if not disableSmallText and legScore ~= '' and checkSmallText(legScore) then
legContent = '<span style="font-size:85%;">' .. legScore .. '</span>' .. legEndText
else
legContent = legScore .. legEndText
end
local legStyle = ''
if doWrap and not (cleanLeg:match("%(.*%(")) then
legStyle = 'white-space: nowrap;'
end
-- Write cells for legs
row:tag('td'):cssText(legStyle ~= '' and legStyle or nil):wikitext(legContent)
end
-- Write cells for legs
row:tag('td'):cssText(legStyle ~= '' and legStyle or nil):wikitext(legScore)
end
end
Baris 639 ⟶ 720:
end
 
returnlocal tableCode = tostring(root)
 
-- Rewrite anchor links for the entire table
if baselink ~= '' then
tableCode = mw.ustring.gsub(tableCode, '(%[%[)(#[^%[%]]*%|)', '%1' .. baselink .. '%2')
end
 
return tableCode
end