User:Fred Gandt/dupeLinks.js

$( document ).ready( => {	if ( document.body.classList.contains( "ns-0" ) ) {		const query_top = "div.mw-parser-output",			query_a_not = [ '[href=""]', '[href^="#cite_note-"]', '[href^="#cite_ref-"]' ].join,			query_parents_not = [ "h2,h3,h4,h5,h6", "#toc", ".infobox", ".metadata", ".hatnote", ".thumb", ".navbox", ".sortable", ".reflist"].join,			query_selector = `${query_top} > *:not( ${query_parents_not} ) a[href]:not( ${query_a_not} )`,			link_elements = {};		let fa;		mw.loader.load( "/w/index.php?title=User:Fred_Gandt/dupeLinks.css&action=raw&ctype=text/css", "text/css" );		Array.from( document.querySelectorAll( query_selector ) ).filter( a => !a.parentElement.parentElement.classList.contains( "Inline-Template" ) ).forEach( a => { fa = link_elements[ a.href ]; if ( fa ) { a.classList.add( "fg-dupe-links-dupe" ); a.dataset.fg_dupe_links_count = fa.dataset.fg_dupe_links_count = parseInt( fa.dataset.fg_dupe_links_count ) + 1; } else { a.classList.add( "fg-dupe-links-first" ); a.dataset.fg_dupe_links_count = 1; link_elements[ a.href ] = a;			} } );		console.log( link_elements ); // TODO make more useful	} } );