Module:Soldier: Difference between revisions
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 | ||