User:Headbomb/identifiers.js

// Adapted from User:Headbomb/unreliable.js

// \/ regex in links doesn't work as it should, use (%2F|\/) instead

$( function() {

const rules = [

// Identifiers

{

regex: /\b(?:arxiv\.org|adsabs\.harvard\.edu|doi\.org|pubmed\.ncbi\.nlm\.nih\.gov|ncbi\.nlm\.nih\.gov(%2F|\/)pubmed|citeseerx\.ist\.psu\.edu|handle\.net|jstor\.org|lccn\.loc\.gov|www\.ams\.org(%2F|\/)mathscinet|mathscinet\.ams\.org(%2F|\/)mathscinet|worldcat\.org|osti\.gov|ssrn\.com|openlibrary\.org|semanticscholar\.org\/CorpusID|zbmath\.org)/,

css: { "background-color": "#eeffee"}

},

// Could probably be converted

{

regex: /\b(?:psycnet.apa.org|ads\.harvard\.edu|bioone\.org|tandfonline\.com|informahealthcare\.com|nature\.com|sciencedirect.com|sciencemag\.org|ieeexplore\.ieee\.org|(%2F|\/)doi(%2F|\/)|10\.\d{4,5})/,

css: { "background-color": "#ffeedd"}

},

//{

// regex: /\b(?:ncbi\.nlm\.nih\.gov(%2F|\/)pmc)/,

// css: { "background-color": "#eeeeff"}

//}

];

// Check each external link on the page against each regex

$('.mw-parser-output a.external').each(function(_, link) {

$.each(rules, function(_, rule) {

if (typeof rule.filter !== 'undefined' && !rule.filter) {

return true;

}

if (rule.regex.test(link.href)) {

$(link).css(rule.css);

return false;

}

});

});

// Check list items against each regex to catch further reading/bibliography items without links

$('.mw-parser-output ul li:not(:has(a)), .mw-parser-output ol:not(.references) li:not(:has(a)), .reference-text:not(:has(a))')

.each(function(_, li) {

$.each(rules, function(_, rule) {

if (typeof rule.filter !== 'undefined' && !rule.filter) {

return true;

}

if (rule.regex.test(li.textContent)) {

$(li).css(rule.css);

return false;

}

});

});

} );