MediaWiki:Common.js: Difference between revisions
Hide leftover overseas-flag rows |
Link MII/IPW team codes without combining titles |
||
| Line 2: | Line 2: | ||
* Hide leftover imported rows the infobox no longer shows. | * Hide leftover imported rows the infobox no longer shows. | ||
* Put the research-notes disclaimer under that section heading. | * Put the research-notes disclaimer under that section heading. | ||
* | * Split mashed CSV notes into separate bullets, then link MII/IPW team codes. | ||
*/ | */ | ||
$(function () { | $(function () { | ||
| Line 30: | Line 30: | ||
function linkifyTeams(raw) { | function linkifyTeams(raw) { | ||
var text = $('<div>').text(raw).html(); | var text = $('<div>').text(raw).html(); | ||
text = text.replace(/\bMII\s+(\d{2,4})\s*[-–] | text = text.replace(/\bMII[\s-–]+(\d{2,4})\s*[-–]\s*([A-Za-z])\b/gi, function (_, num, letter) { | ||
var name = 'MII ' + num + '-' + letter.toUpperCase(); | var name = 'MII ' + num + '-' + letter.toUpperCase(); | ||
return teamLink(name, 'MII ' + num + '-' + letter.toUpperCase()); | return teamLink(name, 'MII ' + num + '-' + letter.toUpperCase()); | ||
}); | }); | ||
text = text.replace(/\bMII\s+(\d{2,4})\b/gi, function (_, num) { | text = text.replace(/\bMII[\s-–]+(\d{2,4})\b/gi, function (_, num) { | ||
return teamLink('MII ' + num, 'MII ' + num); | return teamLink('MII ' + num, 'MII ' + num); | ||
}); | }); | ||
text = text.replace(/(?<!\bMII\s)\b([4-5]\d{2})\s*[-–]\s*([ | text = text.replace(/(?<!\bMII[\s-–])\b([4-5]\d{2})\s*[-–]\s*([A-Za-z])\b/g, function (_, num, letter) { | ||
var name = 'MII ' + num + '-' + letter.toUpperCase(); | var name = 'MII ' + num + '-' + letter.toUpperCase(); | ||
return teamLink(name, num + '-' + letter.toUpperCase()); | return teamLink(name, num + '-' + letter.toUpperCase()); | ||
| Line 45: | Line 45: | ||
}); | }); | ||
return text; | return text; | ||
} | |||
function splitNotes(text) { | |||
text = $.trim(text || ''); | |||
if (!text) { | |||
return []; | |||
} | |||
text = text.replace(/"+/g, '"'); | |||
var parts = []; | |||
$.each(text.split(/[;"]+/), function (_, chunk) { | |||
chunk = $.trim(chunk.replace(/^['"]+|['"]+$/g, '')); | |||
if (!chunk) { | |||
return; | |||
} | |||
if (/https?:\/\//i.test(chunk)) { | |||
parts.push(chunk); | |||
return; | |||
} | |||
chunk = chunk.replace(/(\d{1,2}\/\d{1,2}\/\d{2,4})(?=[A-Za-z])/g, '$1\n'); | |||
$.each(chunk.split('\n'), function (__, bit) { | |||
bit = $.trim(bit.replace(/^['"]+|['"]+$/g, '')); | |||
if (!bit) { | |||
return; | |||
} | |||
var dated = bit.match(/^(.*?)\s+(\d{1,2}\/\d{1,2}\/\d{2,4})$/); | |||
if (dated && $.trim(dated[1]) && !/^\d{1,2}\/\d{1,2}\/\d{2,4}$/.test($.trim(dated[1]))) { | |||
parts.push($.trim(dated[1])); | |||
parts.push(dated[2]); | |||
} else { | |||
parts.push(bit); | |||
} | |||
}); | |||
}); | |||
return parts; | |||
} | } | ||
var negative = /fail(?:ed|ure)?|flunk|wash(?:ed)?\s*out|kick(?:ed)?\s*out|dismiss|expel|unsatisfactor|poor\s+(?:performance|work)|awol|court[-\s]?martial|disciplin|discharged\s+for\s+cause|drop(?:ped)?\s+(?:out|from)|relieved|eliminat|unfit|misconduct|desert/i; | var negative = /fail(?:ed|ure)?|flunk|wash(?:ed)?\s*out|kick(?:ed)?\s*out|dismiss|expel|unsatisfactor|poor\s+(?:performance|work)|awol|court[-\s]?martial|disciplin|discharged\s+for\s+cause|drop(?:ped)?\s+(?:out|from)|relieved|eliminat|unfit|misconduct|desert/i; | ||
$heading.nextAll('ul').first().find('li').each(function () { | var $ul = $heading.nextAll('ul').first(); | ||
if (!$ul.length) { | |||
return; | |||
} | |||
var items = []; | |||
if (clause && !negative.test(clause)) { | $ul.find('li').each(function () { | ||
$.each(splitNotes($(this).text()), function (_, clause) { | |||
if (clause && !negative.test(clause) && items.indexOf(clause) === -1) { | |||
items.push(clause); | |||
} | } | ||
}); | }); | ||
}); | |||
$ul.empty(); | |||
$.each(items, function (_, clause) { | |||
$ul.append($('<li>').html(linkifyTeams(clause))); | |||
}); | }); | ||
}); | }); | ||