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.
  * Turn MII / IPW / 439-G style codes in notes into team links.
  * 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*[-–]?\s*([A-Za-z])\b/gi, function (_, num, letter) {
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*([GIgi])\b/g, function (_, num, letter) {
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();
var $li = $(this);
if (!$ul.length) {
var kept = [];
return;
$.each($li.text().split(';'), function (_, clause) {
}
clause = $.trim(clause);
var items = [];
if (clause && !negative.test(clause)) {
$ul.find('li').each(function () {
kept.push(clause);
$.each(splitNotes($(this).text()), function (_, clause) {
if (clause && !negative.test(clause) && items.indexOf(clause) === -1) {
items.push(clause);
}
}
});
});
if (kept.length) {
});
$li.html(linkifyTeams(kept.join('; ')));
$ul.empty();
} else {
$.each(items, function (_, clause) {
$li.remove();
$ul.append($('<li>').html(linkifyTeams(clause)));
}
});
});
});
});