Участник:Grenadine/yat.js
Замечание: Возможно, после публикации вам придётся очистить кэш своего браузера, чтобы увидеть изменения.
- Firefox / Safari: Удерживая клавишу Shift, нажмите на панели инструментов Обновить либо нажмите Ctrl+F5 или Ctrl+R (⌘+R на Mac)
- Google Chrome: Нажмите Ctrl+Shift+R (⌘+Shift+R на Mac)
- Internet Explorer / Edge: Удерживая Ctrl, нажмите Обновить либо нажмите Ctrl+F5
- Opera: Нажмите Ctrl+F5.
//Конвертер из дореформенной в современную орфографию.
//Часть кода позаимствована из http://ru.wikipedia.org/wiki/MediaWiki:Wikificator.js
//Часть кода позаимствована из http://ru.wiktionary.org/wiki/Участник:X-romix/wikifikator.js
//********************************************** βeta version ************************************
var wmCantWork = 'Deyatеficator cannot work in your browser'
var wmFullText = 'Deyatеficator will process ALL text on this page. Continue?'
var wmTalkPage = 'Деятефикатор не обрабатывает обсуждения\n\nDeyatеficator doesn\'t work on discussion pages'
//Добавляет кнопку
function addYatButton(){
var toolbar = document.getElementById('toolbar')
var textbox = document.getElementById('wpTextbox1')
if (!textbox || !toolbar) return
var i = document.createElement('img')
i.src = 'http://upload.wikimedia.org/wikipedia/commons/f/fd/OldToNewRussianOrthographyConversionIcon.png'
i.alt = i.title = 'Деятефикатор'
i.onclick = Yat
i.style.cursor = 'pointer'
toolbar.appendChild(i)
}
//Этот код выполняется в начале.
if (wgAction == 'edit' || wgAction == 'submit'){
addOnloadHook(addYatButton)
}
//Функция для оформления таблицы
function Yat(){
if (('code'.replace(/d/g, 'r') != 'core') //check regexp support
|| (navigator.appName=='Netscape' && navigator.appVersion.substr (0, 1) < 5))
{ alert(wmCantWork); return }
var txt, hidden = [], hidIdx = 0, wpTextbox1 = document.editform.wpTextbox1
var winScroll = document.documentElement.scrollTop //remember window scroll
wpTextbox1.focus()
if (typeof wpTextbox1.selectionStart != 'undefined'
&& (navigator.productSub > 20031000 || navigator.appName == 'Opera' || is_safari)) { //Mozilla/Opera/Safari3
var textScroll = wpTextbox1.scrollTop
var startPos = wpTextbox1.selectionStart
var endPos = wpTextbox1.selectionEnd
txt = wpTextbox1.value.substring(startPos, endPos)
if (txt == '') processAllText()
else{
processText()
wpTextbox1.value = wpTextbox1.value.substring(0, startPos) + txt + wpTextbox1.value.substring(endPos)
}
wpTextbox1.selectionStart = startPos
wpTextbox1.selectionEnd = startPos + txt.length
wpTextbox1.scrollTop = textScroll
}else if (document.selection && document.selection.createRange) { //IE
var range = document.selection.createRange()
txt = range.text
if (txt == '') processAllText()
else{
processText()
range.text = txt
//if (!window.opera) txt = txt.replace(/\r/g,'')
if (range.moveStart) range.moveStart('character', - txt.length)
range.select()
}
}else // other browsers
if (confirm(wmFullText)) processAllText()
document.documentElement.scrollTop = winScroll // scroll back, for IE/Opera
//functions
function processAllText(){
txt = '\n' + wpTextbox1.value
processText()
txt = txt.replace(/^[\n\r]+/, '')
wpTextbox1.value = txt
txt = ''
if (window.auto_comment && window.insertSummary) insertSummary('деятефикатор')
}
function processText(){
var u = '\u00A0' //unbreakable space
if (wgNamespaceNumber % 2 || wgNamespaceNumber==4) { //is talk page
u = ' '
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
}
}
txt = txt.replace(/([^а-яА-ЯёЁѢѣІіѲѳ])(О|о)нѣ([^а-яА-ЯёЁѢѣІіѲѳ])/g,'$1$2ни$3');
// txt = txt.replace(/([а-яА-ЯёЁѢѣІіѲѳ])ія([^а-яА-ЯёЁѢѣІіѲѳ])/g,'$1ие$2'); // Россiя, Исторiя ???? not work Примечанiя --> Примечания
txt = txt.replace(/([а-яА-ЯёЁѢѣІіѲѳ])ыя([^а-яА-ЯёЁѢѣІіѲѳ])/g,'$1ые$2'); // ?
txt = txt.replace(/([^а-яА-ЯёЁѢѣІіѲѳ])(В|в)се([^а-яА-ЯёЁѢѣІіѲѳ])/g,'$1$2сё$3');
txt = txt.replace(/([^а-яА-ЯёЁѢѣІіѲѳ])(Н|н)ея([^а-яА-ЯёЁѢѣІіѲѳ])/g,'$1$2её$3');
txt = txt.replace(/([^а-яА-ЯёЁѢѣІіѲѳ])(Е|е)я([^а-яА-ЯёЁѢѣІіѲѳ])/g,'$1$2ё$3');
txt = txt.replace(/([^а-яА-ЯёЁѢѣІіѲѳ])(Н|н)а-дняхъ([^а-яА-ЯёЁѢѣІіѲѳ])/g,'$1$2а днях$3');
txt = txt.replace(/([^а-яА-ЯёЁѢѣІіѲѳ])(Т|т)о-есть([^а-яА-ЯёЁѢѣІіѲѳ])/g,'$1$2о есть$3');
txt = txt.replace(/([^а-яА-ЯёЁѢѣІіѲѳ])(М|м)ожетъ-быть([^а-яА-ЯёЁѢѣІіѲѳ])/g,'$1$2ожет быть$3');
txt = txt.replace(/([^а-яА-ЯёЁѢѣІіѲѳ])(Б|б)ыть-можетъ([^а-яА-ЯёЁѢѣІіѲѳ])/g,'$1$2ыть может$3');
txt = txt.replace(/([^а-яА-ЯёЁѢѣІіѲѳ])(И|и)тти([^а-яА-ЯёЁѢѣІіѲѳ])/g,'$1$2дти$3');
txt = txt.replace(/([^а-яА-ЯёЁѢѣІіѲѳ])(О|о)днѣ([^а-яА-ЯёЁѢѣІіѲѳ])/g,'$1$2дни$3');
txt = txt.replace(/([^а-яА-ЯёЁѢѣІіѲѳ])(О|о)днѣхъ([^а-яА-ЯёЁѢѣІіѲѳ])/g,'$1$2дних$3');
txt = txt.replace(/([^а-яА-ЯёЁѢѣІіѲѳ])(О|о)днѣмъ([^а-яА-ЯёЁѢѣІіѲѳ])/g,'$1$2дним$3');
txt = txt.replace(/([^а-яА-ЯёЁѢѣІіѲѳ])(О|о)днѣми([^а-яА-ЯёЁѢѣІіѲѳ])/g,'$1$2дними$3');
txt = txt.replace(/([^а-яА-ЯёЁѢѣІіѲѳ])(Л|л)эди([^а-яА-ЯёЁѢѣІіѲѳ])/g,'$1$2еди$3');
txt = txt.replace(/([^а-яА-ЯёЁѢѣІіѲѳ])(Е|е)сли-бъ([^а-яА-ЯёЁѢѣІіѲѳ])/g,'$1$2сли б$3');
txt = txt.replace(/([^а-яА-ЯёЁѢѣІіѲѳ])(К|к)онцѣ-концовъ([^а-яА-ЯёЁѢѣІіѲѳ])/g,'$1$2онце концов$3');
txt = txt.replace(/([^а-яА-ЯёЁѢѣІіѲѳ])(К|к)рестъ-на-крестъ([^а-яА-ЯёЁѢѣІіѲѳ])/g,'$1$2рест-накрест$3');
txt = txt.replace(/([^а-яА-ЯёЁѢѣІіѲѳ])(Т|т).-е.([^а-яА-ЯёЁѢѣІіѲѳ])/g,'$1$2. е.$3');
txt = txt.replace(/([^а-яА-ЯёЁѢѣІіѲѳ])(У|у)жь([^а-яА-ЯёЁѢѣІіѲѳ])/g,'$1$2ж$3');
txt = txt.replace(/([^а-яА-ЯёЁѢѣІіѲѳ])(П|п)ерво-на-перво([^а-яА-ЯёЁѢѣІіѲѳ])/g,'$1$2ерво-наперво$3');
txt = txt.replace(/([^а-яА-ЯёЁѢѣІіѲѳ])(С|с)ъумѣ([^а-яА-ЯёЁѢѣІіѲѳ])/g,'$1$2уме$3');
txt = txt.replace(/([^а-яА-ЯёЁѢѣІіѲѳ])(З|з)апрегъ([^а-яА-ЯёЁѢѣІіѲѳ])/g,'$1$2апряг$3');
txt = txt.replace(/([^а-яА-ЯёЁѢѣІіѲѳ])(Д|д)олжно-быть([^а-яА-ЯёЁѢѣІіѲѳ])/g,'$1$2олжно быть$3');
txt = txt.replace(/([^а-яА-ЯёЁѢѣІіѲѳ])(Т|т)олько-что([^а-яА-ЯёЁѢѣІіѲѳ])/g,'$1$2олько что$3');
txt = txt.replace(/([^а-яА-ЯёЁѢѣІіѲѳ])(С|с)еріозн([а-яА-ЯёЁѢѣІіѲѳ])/g,'$1$2ерьёзн$3');
txt = txt.replace(/([^а-яА-ЯёЁѢѣІіѲѳ])(Ч|ч)орт([а-яА-ЯёЁѢѣІіѲѳ])/g,'$1$2ёрт$3'); // ?
txt = txt.replace(/([^а-яА-ЯёЁѢѣІіѲѳ])(Ш|ш)опот([а-яА-ЯёЁѢѣІіѲѳ])/g,'$1$2ёпот$3');
// txt = txt.replace(/([^а-яА-ЯёЁѢѣІіѲѳ])(О|о)ффиціальн([а-яА-ЯёЁѢѣІіѲѳ])/g,'$1$2фициальн$3');
txt = txt.replace(/([^а-яА-ЯёЁѢѣІіѲѳ])(Р|р)ѣшотк([а-яА-ЯёЁѢѣІіѲѳ])/g,'$1$2ешётк$3');
txt = txt.replace(/([^а-яА-ЯёЁѢѣІіѲѳ])(К|к)лиэнт([а-яА-ЯёЁѢѣІіѲѳ])/g,'$1$2лиент$3');
txt = txt.replace(/([^а-яА-ЯёЁѢѣІіѲѳ])(Э|э)ксплоат([а-яА-ЯёЁѢѣІіѲѳ])/g,'$1$2ксплуат$3');
txt = txt.replace(/([^а-яА-ЯёЁѢѣІіѲѳ])(П|п)роповедыв([а-яА-ЯёЁѢѣІіѲѳ])/g,'$1$2роповедов$3');
txt = txt.replace(/([^а-яА-ЯёЁѢѣІіѲѳ])(П|п)искар([а-яА-ЯёЁѢѣІіѲѳ])/g,'$1$2ескар$3');
txt = txt.replace(/([^а-яА-ЯёЁѢѣІіѲѳ])(К|к)орридор([а-яА-ЯёЁѢѣІіѲѳ])/g,'$1$2оридор$3');
txt = txt.replace(/([^а-яА-ЯёЁѢѣІіѲѳ])(Р|р)азсчет([а-яА-ЯёЁѢѣІіѲѳ])/g,'$1$2асчёт$3');
txt = txt.replace(/([^а-яА-ЯёЁѢѣІіѲѳ])(Ц|ц)ипочк([а-яА-ЯёЁѢѣІіѲѳ])/g,'$1$2ыпочк$3');
txt = txt.replace(/([^а-яА-ЯёЁѢѣІіѲѳ])(Ч|ч)етыреугольник([а-яА-ЯёЁѢѣІіѲѳ])/g,'$1$2етырёхугольник$3');
txt = txt.replace(/апплоди/g,'аплоди');
txt = txt.replace(/([^а-яА-ЯёЁѢѣІіѲѳ])(П|п)роэкці([а-яА-ЯёЁѢѣІіѲѳ])/g,'$1$2роекци$3');
txt = txt.replace(/([^а-яА-ЯёЁѢѣІіѲѳ])(В|в)озж(а|и|е|у|ой|ою|ей|ам|ами|ах)([^а-яА-ЯёЁѢѣІіѲѳ])/g,'$1$2ожж$3$4');
txt = txt.replace(/([а-яА-ЯёЁѢѣІіѲѳ])-жь([^а-яА-ЯёЁѢѣІіѲѳ])/g,'$1 ж$2');
txt = txt.replace(/([а-яА-ЯёЁѢѣІіѲѳ])-жъ([^а-яА-ЯёЁѢѣІіѲѳ])/g,'$1 ж$2');
txt = txt.replace(/([а-яА-ЯёЁѢѣІіѲѳ])іяся([^а-яА-ЯёЁѢѣІіѲѳ])/g,'$1иеся$2');
txt = txt.replace(/Акакія/g,'Акакия');
txt = txt.replace(/Кампучія/g,'Кампучия');
txt = txt.replace(/Лючія/g,'Лючия');
txt = txt.replace(/([^а-яА-ЯёЁѢѣІіѲѳ])(С|с)тихія([^а-яА-ЯёЁѢѣІіѲѳ])/g,'$1$2тихия$3');
// txt = txt.replace(/([жкчшщх])ія([^а-яА-ЯёЁѢѣІіѲѳ])/g,'$1ие$2'); // слишком много исключений
txt = txt.replace(/Ѣ/g,'Е');
txt = txt.replace(/ѣ/g,'е');
txt = txt.replace(/І/g,'И');
txt = txt.replace(/і/g,'и');
txt = txt.replace(/Ѳ/g,'Ф');
txt = txt.replace(/ѳ/g,'ф');
txt = txt.replace(/ъи/g,'ы');
txt = txt.replace(/([а-яА-ЯёЁѢѣІіѲѳ])ъ([^а-яА-ЯёЁѢѣІіѲѳ])/g,'$1$2');
txt = txt.replace(/([А-ЯЁѢІѲ])Ъ([^а-яА-ЯёЁѢѣІіѲѳ])/g,'$1$2');
txt = txt.replace(/(М|м)ало-по-малу/g,'$1ало-помалу');
txt = txt.replace(/(С|с)тало-быть/g,'$1тало быть');
txt = txt.replace(/(П|п)овидимому/g,'$1о-видимому');
txt = txt.replace(/(П|п)опрежнему/g,'$1о-прежнему');
txt = txt.replace(/(Б|б)анкрутств([а-яА-ЯёЁѢѣІіѲѳ])/g,'$1анкротств$2');
txt = txt.replace(/(Ч|ч)ерез-чур/g,'$1ересчур');
txt = txt.replace(/(Ч|ч)ерезчур/g,'$1ересчур');
txt = txt.replace(/(К|к)ак-будто/g,'$1ак будто');
txt = txt.replace(/(В|в) то-же время/g,'$1 то же время');
txt = txt.replace(/([а-яА-ЯёЁѢѣІіѲѳ])-ли([^а-яА-ЯёЁѢѣІіѲѳ])/g,'$1 ли$2');
// txt = txt.replace(/([\wа-яА-ЯёЁ])ъ(\s|\.|\!|,|;|\:|\?)/g,'<span style="background-color: green;">$1 </span>');
// txt = txt.replace(/([а-яА-ЯёЁѢѣІіѲѳ])аго([^а-яА-ЯёЁѢѣІіѲѳ])/g,'$1<span style="background-color: yellow;">аго</span>$2');
txt = txt.replace(/([а-яА-ЯёЁѢѣІіѲѳ])яго([^а-яА-ЯёЁѢѣІіѲѳ])/g,'$1его$2'); // toujours ?
txt = txt.replace(/([чшщ])аго(ся)([^а-яА-ЯёЁѢѣІіѲѳ])/g,'$1его$2$3');
txt = txt.replace(/([жчцшщ])аго([^а-яА-ЯёЁѢѣІіѲѳ])/g,'$1его$2');
txt = txt.replace(/([бвгдзклмнпрстх])аго([^а-яА-ЯёЁѢѣІіѲѳ])/g,'$1ого$2');
txt = txt.replace(/([^а-яА-ЯёЁѢѣІіѲѳ])(Б|б)лого([^а-яА-ЯёЁѢѣІіѲѳ])/g,'$1$2лаго$3'); //хак
txt = txt.replace(/(Ч|ч)етырех-стопн([а-яА-ЯёЁѢѣІіѲѳ])/g,'$1етырёхстопн$2');
txt = txt.replace(/([^а-яА-ЯёЁѢѣІіѲѳ])(Т|т)фу([^а-яА-ЯёЁѢѣІіѲѳ])/g,'$1$2ьфу$3');
txt = txt.replace(/([^а-яА-ЯёЁѢѣІіѲѳ])(Т|т)анцов([^а-яА-ЯёЁѢѣІіѲѳ])/g,'$1$2анцев$3');
txt = txt.replace(/([^а-яА-ЯёЁѢѣІіѲѳ])(П|п)окоиват([^а-яА-ЯёЁѢѣІіѲѳ])/g,'$1$2окаиват$3');
txt = txt.replace(/([^а-яА-ЯёЁѢѣІіѲѳ])(Е|е)слибы([^а-яА-ЯёЁѢѣІіѲѳ])/g,'$1$2сли бы$3');
txt = txt.replace(/([^а-яА-ЯёЁѢѣІіѲѳ])(Е|е)слиб([^а-яА-ЯёЁѢѣІіѲѳ])/g,'$1$2сли б$3');
txt = txt.replace(/([^а-яА-ЯёЁѢѣІіѲѳ])(П|п)росто-на-просто([^а-яА-ЯёЁѢѣІіѲѳ])/g,'$1$2росто-напросто$3');
txt = txt.replace(/([^а-яА-ЯёЁѢѣІіѲѳ])(К|к)ашнэ([^а-яА-ЯёЁѢѣІіѲѳ])/g,'$1$2ашне$3');
txt = txt.replace(/([^а-яА-ЯёЁѢѣІіѲѳ])(П|п)енснэ([^а-яА-ЯёЁѢѣІіѲѳ])/g,'$1$2енсне$3');
txt = txt.replace(/([^а-яА-ЯёЁѢѣІіѲѳ])(П|п)редраз([пткфсхцчш])/g,'$1$2редрас$3');
txt = txt.replace(/([^а-яА-ЯёЁѢѣІіѲѳ])(Р|р)аз([пткфсхцчш])/g,'$1$2ас$3');
txt = txt.replace(/([^а-яА-ЯёЁѢѣІіѲѳ])(Б|б)ез([пткфсхцчш])/g,'$1$2ес$3');
txt = txt.replace(/([^а-яА-ЯёЁѢѣІіѲѳ])(О|о)без([пткфсхцчш])/g,'$1$2бес$3');
txt = txt.replace(/([^а-яА-ЯёЁѢѣІіѲѳ])(П|п)обез([пткфсхцчш])/g,'$1$2обес$3');
txt = txt.replace(/([^а-яА-ЯёЁѢѣІіѲѳ])(З|з)абез([пткфсхцчш])/g,'$1$2абес$3');
txt = txt.replace(/([^а-яА-ЯёЁѢѣІіѲѳ])(В|в)оз([пткфсхцчш])/g,'$1$2ос$3');
txt = txt.replace(/([^а-яА-ЯёЁѢѣІіѲѳ])(И|и)з([пткфсхцчш])/g,'$1$2с$3');
// txt = txt.replace(/\b(В|в)сѣ\s/g,'$1се ');
}
}