User:Anomie/talklink.js

( function ( mw, $ ) {var ns = mw.config.get( 'wgNamespaceNumber' ),title = mw.config.get( 'wgTitle' );if ( ns < 0 ) {return;}mw.loader.using( [ 'mediawiki.Title', 'mediawiki.api' ], function () {$( function () {var $catalk = $( '#ca-talk' );if ( !$catalk.length || $catalk.hasClass( 'new' ) ) {return;}new mw.Api().get( {action: 'query',titles: new mw.Title( title, ns | 1 ).getPrefixedText(),prop: 'revisions',rvprop: 'content',indexpageids: 1} ).done( function ( r ) {var p, s, o;if ( !r || !r.query || !r.query.pages || !r.query.pageids || !r.query.pageids[0] ) {return;}p = r.query.pages[r.query.pageids[0]];if ( !p || !p.revisions || !p.revisions[0] || !p.revisions[0]['*'] ) {return;}s = p.revisions[0]['*'].replace( /<!--[\s\S]*?-->/g, '' );if ( /^#REDIRECT:? *\[\[/i.test( s ) ) {$catalk.addClass( 'redirect' );return;}do {o = s;s = s.replace( /{{{([^{}]|{[^{]|}[^}])*?}}}/g, '' );s = s.replace( /{{([^{}]|{[^{]|}[^}])*?}}/g, '' );} while ( o !== s );if ( /^\s*$/.test( s ) ) {$catalk.addClass( 'empty' );return;}} );} );} );}( mediaWiki, jQuery ) );