User:SoledadKabocha/scriptDocClassifier.js

function classifyScriptDoc { if ( !document.getElementById( 'mw-script-doc' ) ) return;

var clss = '';

var pageSuffix = /\.(css|js)$/.exec( wgPageName ); if ( !pageSuffix || pageSuffix.length == 0 ) return; pageSuffix = pageSuffix[1]; clss = 'wscript-' + pageSuffix;

var oppositeSuffix = ( pageSuffix == 'js' ? 'css' : 'js' );

var sdoc = $( '#mw-script-doc' ); var sdoclnks = sdoc.find( 'a:not(.image)' ); var shouldAddDocRedlink = false; var shouldAddCompanionRedlink = false; var dontReplaceSeems = false;

if ( sdoclnks.length == 2 ) { //2 links: both companion CSS/JS and documentation clss += ' wscript-hascompanion wscript-hasdoc wscript-has' + oppositeSuffix; } else if ( sdoclnks.length == 1 ) { //1 link: at most one of companion CSS/JS and documentation present var myHref = sdoclnks.attr( 'href' ); if ( sdoclnks.hasClass( 'new' ) ) { //no companion CSS/JS nor documentation clss += ' wscript-nocompanion wscript-nodoc wscript-no' + oppositeSuffix; //redlink points to companion if this is a user skin, or documentation otherwise shouldAddCompanionRedlink = !( /\.(cs|j)s&/.test( myHref ) ); //avoid misbehaving if the redlink is something like "seems to have foo.js" dontReplaceSeems = true; }   else { if ( /\.(cs|j)s$/.test( myHref ) ) { //companion CSS/JS only clss += ' wscript-hascompanion wscript-nodoc wscript-has' + oppositeSuffix; //user skins shouldn't have documentation, but we filter that out below shouldAddDocRedlink = true; }     else { //documentation only clss += ' wscript-nocompanion wscript-hasdoc wscript-no' + oppositeSuffix; if ( sdoc.find( 'a.mw-redirect' ).length == 1 ) { clss += ' wscript-docredirect'; if ( typeof window.replaceSeemsEvenIfDocIsRedirect != 'boolean' ) window.replaceSeemsEvenIfDocIsRedirect = false; dontReplaceSeems = !window.replaceSeemsEvenIfDocIsRedirect; }       shouldAddCompanionRedlink = true; }   }  }  //else uh-oh, some other number of links: silently fail to add classes/msg sdoc.addClass( clss );

var sdochtml = sdoc.html; if ( !sdochtml || ( !window.scriptDocRemoveSeems && !window.scriptDocAddDocRedlink && !window.scriptDocAddCompanionRedlink ) ) return; var sdocnewhtml = sdochtml;

if ( window.scriptDocRemoveSeems === true && !dontReplaceSeems ) sdocnewhtml = sdocnewhtml.replace( 'seems to have', 'has' );

var msgToAdd = ''; var securityRestricted = false; var editBaseUrl = $( '#ca-edit a' ).attr( 'href' ); if ( !editBaseUrl ) { editBaseUrl = $( '#ca-viewsource a' ).attr( 'href' ); if ( editBaseUrl ) { securityRestricted = true; }   else return; } if ( window.scriptDocAddDocRedlink === true && shouldAddDocRedlink && sdochtml.indexOf( ' skin ' ) == -1 ) { var cleanName = wgPageName.replace( /_/g, ' ' ).replace( /\.(cs|j)s$/, '' ); msgToAdd += ' Documentation for this script can be added at '; msgToAdd += cleanName; msgToAdd += '.'; } else if ( window.scriptDocAddCompanionRedlink === true && shouldAddCompanionRedlink && !securityRestricted ) { //We will never need to add redlinks for both documentation and companion pages, //as the MediaWiki software will always provide one or the other: hence the "else"

var cleanName = wgPageName.replace( /_/g, ' ' ).replace( /\.(cs|j)s$/, '.'+oppositeSuffix ); msgToAdd += ' An accompanying .' + oppositeSuffix + ' page can be added at '; msgToAdd += cleanName; msgToAdd += '.'; }

if ( msgToAdd ) sdocnewhtml = sdocnewhtml.replace( '.', '.' + msgToAdd ); sdoc.html( sdocnewhtml ); }

if ( !window.scriptDocNoAutoClassify ) { $( classifyScriptDoc ); }