Keep short initials such as FH in soldier names.
Link IPW T/? to numeric teams; Armd plain; 424-G as MII
Line 636: Line 636:
end
end
return out
return out
end
local function normalizeIpwTeamCode(part)
part = trim(part)
if part == '' then
return nil, nil
end
local original = part
part = mw.ustring.gsub(part, '%s*%?+%s*$', '')
part = trim(part)
if part == '' then
return nil, original
end
local lower = mw.ustring.lower(part)
if mw.ustring.find(lower, 'armd', 1, true) or mw.ustring.find(lower, 'armored', 1, true) then
return nil, original, nil
end
local miiNum, miiLetter = mw.ustring.match(part, '^(%d+)%s*[%-–—]%s*([A-Za-z])$')
if miiNum then
local mii = miiNum .. '-' .. mw.ustring.upper(miiLetter)
return nil, mii, mii
end
local num = mw.ustring.match(part, '^(%d+)[Tt]$')
if num then
return num, num, nil
end
if mw.ustring.match(lower, '^%d+(st|nd|rd|th)$') then
return nil, original, nil
end
return part, part, nil
end
end


local function teamLinkList(raw, pagePrefix, label)
local function teamLinkList(raw, pagePrefix, label)
local out = {}
local out = {}
local isIpw = mw.ustring.find(pagePrefix, 'IPW', 1, true) == 1
for part in mw.text.gsplit(raw, ';', true) do
for part in mw.text.gsplit(raw, ';', true) do
part = trim(part)
part = trim(part)
Line 645: Line 676:
part = trim(part)
part = trim(part)
if part ~= '' then
if part ~= '' then
table.insert(out, string.format('[[Team %s%s|%s %s]]', pagePrefix, part, label, part))
if isIpw then
local code, shown, mii = normalizeIpwTeamCode(part)
if mii then
table.insert(out, string.format('[[Team MII %s|MII %s]]', mii, mii))
elseif code then
table.insert(out, string.format('[[Team %s%s|%s %s]]', pagePrefix, code, label, shown))
elseif shown then
table.insert(out, shown)
end
else
table.insert(out, string.format('[[Team %s%s|%s %s]]', pagePrefix, part, label, part))
end
end
end
end
end
Line 1,131: Line 1,173:
end
end
end
end
for num in string.gmatch(text, 'IPW%s+(%d+)') do
for num, letter in string.gmatch(text, 'IPW%s+(%d+)%s*%-%s*([A-Z])') do
add('MII ' .. num .. '-' .. letter)
end
for num in string.gmatch(text, 'IPW%s+(%d+)[Tt]?%s*%??%f[^%a%d%-]') do
add('IPW ' .. num)
add('IPW ' .. num)
end
end