Удзельнік:Ssvb/Gadget-PageCleanUp.js
Выгляд
Заўвага: Пасля апублікавання, вам можа спатрэбіцца ачыстка кэшу браўзера, каб убачыць унесеныя змены.
- Firefox / Safari: націсніце Reload, утрымліваючы Shift, або націсніце Ctrl-F5 ці Ctrl-R (⌘-R на Макінтошах)
- Google Chrome: Націсніце Ctrl-Shift-R (⌘-Shift-R на Mac)
- Edge: націсніце Refresh, утрымліваючы Ctrl, або націсніце Ctrl-F5.
// Адаптацыя https://en.wikisource.org/wiki/User:Samwilson/PageCleanUp.js
// для патрэб беларускіх Вікікрыніц.
(function(mw, $) {
// Апрацоўка пасля вычыткі (каб дадаткова выправіць разрывы радкоў і заўвагі)
function pageCleanUp2(text) {
// Разрывы радкоў
text = text.replace(/([^\s])\n([^\s])/g, '$1 $2');
// Заўвагі
function zamena_aposzniaj_zauvahi(text) {
refid = '';
reftext = '';
text2 = text.replace(/\{\{Водступ\|2\|em\}\}\s*(\d+|\*+)\)\s*([^\{]*)$/g, function(match0, match1, match2) {
refid = match1.replace(/\*/g, '\\*');
reftext = '<ref>' + match2.trim() + '</ref>';
return '';
});
if (refid === '')
return text;
count = 0;
text3 = text2.replace(new RegExp('\\s*' + refid + '\\)', 'g'), function() {
count += 1;
return reftext;
});
if (count === 1)
return text3;
return text;
}
while (true) {
text2 = zamena_aposzniaj_zauvahi(text);
if (text2 === text)
break;
text = text2;
}
return text.replace(/\s*$/g, '');
}
// Апрацоўка пасля аблічбоўкі (працяжнікі, пераносы і інш.)
function pageCleanUp(text) {
if (text.indexOf( "{{" ) !== -1) {
return pageCleanUp2(text);
}
// Выдаленне нумару старонкі (лічбы ў сваім асобным першым ці апошнім радку)
text = text.replace(/^\s*\d+[ ]*\n/, '');
text = text.replace(/\n\s*\d+\s*$/, '\n');
// Працяжнікі
text = text.replace(/\-\-+/g, '—');
// Тры кропкі і болей
text = text.replace(/\.\.[\.]+/g, '…');
// Пасля знака прыпынку не дэфіс, а працяжнік
text = text.replace(/([\.\…\,\!\?\:\;])\s*-/g, '$1 —');
// Пераносы словаў на наступны радок
text = text.replace(/\-\s*\n\s*([^\s]+)\s*/g, '$1\n');
// Працяжнік паміж лічбамі - https://be.wikisource.org/wiki/Закон_Рэспублікі_Беларусь_«Аб_Правілах_беларускай_арфаграфіі_і_пунктуацыі»#§_37._Лічэбнікі
text = text.replace(/(\d+)\s*[\-\—]\s*\n\s*(\d+[^\s]*)\s*/g, '$1 — $2\n');
text = text.replace(/(\d+)\s*[\-\—]\s*(\d+)/g, '$1 — $2');
// Дэфіс паміж лічбай і канчаткам (7-мы, 19-га стагоддзя)
text = text.replace(/(\d+)\s*[\-\—]\s*\n\s*([^\d\s][^\s]+)\s*/g, '$1-$2\n');
text = text.replace(/(\d+)\s*[\-\—]\s*([^\d\s][^\s]+)/g, '$1-$2');
// у -> ў (але толькі напачатку слова, бо іншыя памылкі знойдзе spellchecker)
text = text.replace(/([аоуіэяёюы])\s+у([^\.\…\,\!\?\:\;\s]*)/, '$1 {{Абмылка|у$2|ў$2}}');
// ů -> ŭ (для Google OCR)
text = text.replace(/[ůüň]/g, 'ŭ');
// Апостраф U+2019
text = text.replace(/[\x27\‘\ʼ]/g, '’');
// Прабелы вакол працяжнікаў
text = text.replace(/—/g, ' — ');
// Выдаленне залішніх пустых радкоў і прабелаў
text = text.replace(/[ ]+\n/g, '\n');
text = text.replace(/\n[\n]+/g, '\n\n');
// Выдаленне прабелаў перад знакамі прыпынку
text = text.replace(/ [ ]+/g, ' ');
text = text.replace(/[ ]+([\,\:\;\.\…\!\?])/g, '$1');
// Водступы ў пачатку абзацаў
text = text.replace(/\n\n\s*([^\s])/g, '\n\n{{Водступ|2|em}}$1');
return text;
}
mw.hook('wikiEditor.toolbarReady').add(function($textarea) {
if (mw.config.get('wgPageContentModel') !== 'proofread-page')
return;
$textarea.wikiEditor('addToToolbar', {
section: 'main',
group: 'gadgets',
tools: {
'Belarusian-PageCleanUp': {
label: 'Выправіць заганы OCR',
type: 'button',
icon: 'https://upload.wikimedia.org/wikipedia/commons/thumb/1/15/Text-x-generic-apply.svg/22px-Text-x-generic-apply.svg.png',
action: {
type: 'callback',
execute: function () {
$textarea.val(pageCleanUp($textarea.val()));
}
}
}
}
});
});
}(mediaWiki, jQuery));