MediaWiki:Gadget-wikificator.js
Версия от 15:29, 9 марта 2018; Андрей Фоменко (обсуждение | вклад)
Замечание. Возможно, после сохранения вам придётся очистить кэш своего браузера, чтобы увидеть изменения.
- Firefox / Safari: Удерживая клавишу Shift, нажмите на панели инструментов Обновить либо нажмите Ctrl-F5 или Ctrl-R (⌘-R на Mac)
- Google Chrome: Нажмите Ctrl-Shift-R (⌘-Shift-R на Mac)
- Internet Explorer: Удерживая Ctrl, нажмите Обновить либо нажмите Ctrl-F5
- Opera: Перейдите в Menu → Настройки (Opera → Настройки на Mac), а затем Безопасность → Очистить историю посещений → Кэшированные изображения и файлы
( function () { var wmCantWork = 'Викификатор не может работать в вашем браузере', wmFullText = 'Викификатор обработает ВЕСЬ текст на этой странице. Продолжить?', wmTalkPage = 'Викификатор не обрабатывает страницы обсуждения целиком.\n\nВыделите ваше сообщение — обработано будет только оно'; window.wfPlugins = window.wfPlugins || []; window.Wikify = function ( input ) { 'use strict'; var txt = '', hidden = [], winScroll = document.documentElement.scrollTop; // Поверхностная проверка на то, что перед нами поле ввода if ( !input || !input.tagName || input.value === undefined ) { input = document.editform.wpTextbox1; } // FUNCTIONS function r( r1, r2 ) { txt = txt.replace( r1, r2 ); } function processText() { var i, u = '\u00A0'; // non-breaking space if ( mw.config.get('wgNamespaceNumber') % 2 || mw.config.get('wgNamespaceNumber') === 4 ) { // is talk page var sigs = txt.match( /\d\d:\d\d, \d\d? \S{3,8} 20\d\d \(UTC\)/g ); if ( sigs && sigs.length > 1 ) { alert( wmTalkPage ); return; } } // Hyphens to em-dashes r( /(\s)-{1,3} /g, '$1— ' ); // hyphen -> — r( /(\d)--(\d)/g, '$1—$2' ); // -> — r( /«|»|“|”|„/g, '"' ); // temp // "" → «» for ( i = 1; i <= 2; i++ ) { r( /([\s\x02!|#'"\/([{;+\-])"([^"]*)([^\s"([{|])"([^a-zа-яё])/ig, '$1«$2$3»$4' ); // " } while ( /«[^»]*«/.test( txt ) ) { r( /«([^»]*)«([^»]*)»/g, '«$1„$2“' ); } r( 'ёё' , '</div>\n<hr class=newtheme>\n<div class=newtheme>\n' ); } function processAllText() { txt = input.value; processText(); r( /^[\n\r]+/, '' ); input.value = txt; txt = ''; } // Check regexp support try { txt = 'ая'.replace( /а/g, 'б' ).replace( /б(?=я)/, 'в' ); } catch ( e ) {} if ( txt !== 'вя' ) { alert( wmCantWork ); return; } input.focus(); // Modern browsers if ( typeof input.selectionStart !== 'undefined' ) { var textScroll = input.scrollTop, startPos = input.selectionStart, endPos = input.selectionEnd; txt = input.value.substring( startPos, endPos ); if ( txt === '' ) { processAllText(); } else { processText(); input.value = input.value.substring( 0, startPos ) + txt + input.value.substring( endPos ); } input.selectionStart = startPos; input.selectionEnd = startPos + txt.length; input.scrollTop = textScroll; // IE } else if ( document.selection && document.selection.createRange ) { var range = document.selection.createRange(); txt = range.text; if ( txt === '' ) { processAllText(); } else { processText(); range.text = txt; if ( range.moveStart ) { range.moveStart( 'character', -txt.length ); } range.select(); } // Other browsers } else if ( confirm( wmFullText ) ) { processAllText(); } document.documentElement.scrollTop = winScroll; // scroll back, for IE/Opera }; }() );