Участник:A particle for world to form/iwrm-extensions.js
(перенаправлено с «Участник:Facenapalm/iwrm-extensions.js»)
// <nowiki>
$( function() {
if ( !window.IWRM ) window.IWRM = {};
if ( !IWRM.extensions ) IWRM.extensions = {};
if ( mw.config.get('wgCanonicalSpecialPageName') === 'Search' ) {
mw.loader.using( 'mediawiki.util', function() {
var portlet = mw.util.addPortletLink(
'p-tb',
IWRM.prefs.hash + 'Search',
IWRM.prefs.name,
't-iwrm'
);
$( portlet ).find( 'a' ).click( IWRM.Init.bind( this, $( '.mw-search-result-heading > a' ).toArray().map( (el) => el.innerText ) ) );
} );
}
IWRM.extensions._replacements = [];
IWRM.extensions.addReplacement = function( pattern, replacement ) {
IWRM.extensions._replacements.push( [ pattern, replacement ] );
};
IWRM.extensions.applyReplacements = function( ) {
$('.iwrm-line input').each( function( _, element ) {
var text = element.value;
for (var i = 0; i < IWRM.extensions._replacements.length; i++) {
var pattern = IWRM.extensions._replacements[i][0],
replacement = IWRM.extensions._replacements[i][1];
if (text.match(pattern)) {
element.value = text.replace(pattern, replacement);
element.dispatchEvent(new Event('blur'));
break;
}
}
} );
};
mw.hook( 'iwrm.content' ).add( IWRM.extensions.applyReplacements );
// Удаляем ссылки на Викитеку.
IWRM.extensions.addReplacement( /({{iw\|[^\}]+\|s:[^\|\}]+}})/, '' );
// Раскрываем (красные) ссылки на русскую Википедию.
IWRM.extensions.addReplacement( /{{iw\|\|([^\|\}]+)\|ru\|([^\|\}]+)}}/, '[[$2|$1]]' );
// Однозначные случаи.
IWRM.extensions.addReplacement( /({{iw\|)(\|([^\|]+)\|en\|\3 \((?:group|band)\)}})/, '$1$3 (группа)$2' );
IWRM.extensions.addReplacement( /({{iw\|)(\|([^\|]+)\|en\|\3 \(company\)}})/, '$1$3 (компания)$2' );
// [[:en:Half-Life 2 (2004 video game)|Half-Life 2]] → {{iw|Half-Life 2 (игра, 2004)|Half-Life 2|en|Half-Life 2 (2004 video game)}}
IWRM.extensions.addReplacement( /({{iw\|)(\|([^\|]+)\|en\|\3 \((\d{4}) video game\)}})/, '$1$3 (игра, $4)$2' );
IWRM.extensions.addReplacement( /({{iw\|)(\|([^\|]+)\|en\|\3 \(video game\)}})/, '$1$3 (игра)$2' );
IWRM.extensions.addReplacement( /({{iw\|)(\|([^\|]+)\|en\|\3 \(video game series\)}})/, '$1$3 (серия)$2' );
// [[:en:Hotel California (Eagles album)|Hotel California]] → {{iw|Hotel California (альбом Eagles)|Hotel California|en|Hotel California (Eagles album)}}
IWRM.extensions.addReplacement( /({{iw\|)(\|([^\|]+)\|en\|\3 \((\d{4}) album\)}})/, '$1$3 (альбом, $4)$2' );
IWRM.extensions.addReplacement( /({{iw\|)(\|([^\|]+)\|en\|\3 \(([^\)]+) album\)}})/, '$1$3 (альбом $4)$2' );
IWRM.extensions.addReplacement( /({{iw\|)(\|([^\|]+)\|en\|\3 \(album\)}})/, '$1$3 (альбом)$2' );
IWRM.extensions.addReplacement( /({{iw\|)(\|([^\|]+)\|en\|\3 \((\d{4}) song\)}})/, '$1$3 (песня, $4)$2' );
IWRM.extensions.addReplacement( /({{iw\|)(\|([^\|]+)\|en\|\3 \(([^\)]+) song\)}})/, '$1$3 (песня $4)$2' );
IWRM.extensions.addReplacement( /({{iw\|)(\|([^\|]+)\|en\|\3 \(song\)}})/, '$1$3 (песня)$2' );
// [[:en:Billboard (magazine)|Billboard]] → {{iw|Billboard (журнал)|Billboard|en|Billboard (magazine)}}
IWRM.extensions.addReplacement( /({{iw\|)(\|([^\|]+)\|en\|\3 \(magazine\)}})/, '$1$3 (журнал)$2' );
IWRM.extensions.addReplacement( /({{iw\|)(\|([^\|]+)\|en\|\3 \(website\)}})/, '$1$3 (сайт)$2' );
} );
// </nowiki>