Декъашхо:Мастер теней/wikificator+.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.
//Викификатор проекта ВО
//Документация: [[Проект:Водные объекты/Технарий#Скрипт автозамены]]
function Wikify_WO() {
window.wfWOPlugins = window.wfWOPlugins || [];
Wikify();
time = new Date();
var txt = '',
label = '',
subst = '{{subst:',
substclose = '}}',
system = '',
current_mouth_altitude = '',
replace_all_link = 0,
wpTextbox1 = document.editform.wpTextbox1,
winScroll = document.documentElement.scrollTop,
linetime = time.getUTCFullYear() + '-' + (time.getUTCMonth()+1).toString().padStart( 2, "0") + '-' + time.getUTCDate().toString().padStart( 2, "0");
function processText() {
//приоритетные изменения: стиль, типографика, викификация
r(/((\s|\()[1-9])\s([0-9][0-9][0-9])(\s[^0-9]|\.)/g, '$1$3$4');
r(/\[\[(Волга|Обь|Лена|Печора|Неман|Иртыш|Миссисипи|Амазонка)\s\(река\)/g, '[[$1');
r(/\[\[Томь\s\(приток\sОби\)/g, '[[Томь');
r(/\[\[Березина\s\(нижний приток Днепра\)/g, '[[Березина');
r(/\[\[Суда\s\(приток\sВолги\)\|/g, '[[Суда (река, впадает в Рыбинское водохранилище)|');
r(/\[\[(Таймыр|Камчатка)\s\(полуостров\)/g, '[[$1');
r(/< *ref *name *= *\'([^\']+)\'/g, '<ref name="$1"');
r(/< *ref *name *= *([^\'\"\/\> ]+)/g, '<ref name="$1"');
var temp = txt.match( /\|\s?Высота устья\s*=\s(.+)\n/ );
if (temp != null)
{
current_mouth_altitude = temp[1];
}
var temp = txt.match( /\|\s?Устье\s*=\s(.+)\n/ );
current_mouth = '';
if (temp != null)
{
current_mouth = temp[1];
}
//предупреждения
var added = '';
if (txt.indexOf('{{Река') > -1)
{
added = added + attention('Длина', '|Длина реки — replace км.}}');
r(/\n\[\[Категория:Реки\sпо\sалфавиту\]\]/g, '');
};
added = added + attention('Объём', '|Объём воды — replace км³.}}');
added = added + attention('Площадь', '|Площадь поверхности — replace км².}}');
added = added + attention('Расход воды', '|Средний расход воды — replace м³/с.}}');
if (current_mouth_altitude != '0')
{
added = added + attention('Высота устья', '|Высота устья — replace м над уровнем моря.}}');
}
added = added + attention('Высота истока', '|Высота истока — replace м над уровнем моря.}}');
added = added + attention('Площадь бассейна', '|Площадь водосборного бассейна — replace км².}}');
added = added + attention('Площадь водосбора', '|Площадь водосборного бассейна — replace км².}}');
added = added + attention('Высота над уровнем моря', '|Высота над уровнем моря — replace м.}}');
added = added + attention('Уклон реки', '|Уклон реки — replace м/км.}}');
if (label == 1)
{
if (confirm('Внимание! Ряд параметров карточки не указаны или не соответствуют тексту статьи! «' + added + '» — вставить?')) {
r('\n\n', '\n\n' + added + '\n\n');
}
}
r(/\|Исток\s*=\s(.+)\n/g, function ( line, source )
{
source = request('https://ru.wikipedia.org/w/api.php?format=xml&action=query&prop=categories&cllimit=500&titles=' + source);
if ((source.indexOf('missing') == -1) && (source.indexOf('Водные объекты по алфавиту') == -1))
{
alert('В истоке указана статья об объекте, не являющимся водным! Пожалуйста, исправьте ошибку!');
};
return line;
});
r(/\|Устье\s*=\s(.+)\n/g, function ( line, source )
{
source = request('https://ru.wikipedia.org/w/api.php?format=xml&action=query&prop=categories&cllimit=500&titles=' + source);
if ((source.indexOf('missing') == -1) && (source.indexOf('Водные объекты по алфавиту') == -1))
{
alert('В устье указана статья об объекте, не являющимся водным! Пожалуйста, исправьте ошибку!');
};
return line;
});
//команды
r(/\|Бассейн\s*=([А-яЁёA-z0-9\/\(\)\s\-]*)\n/g, function ( line, bassin )
{
if (current_mouth_altitude == '0')
{
return line;
}
var mouth = txt.match( /\|\s?Устье\s*=\s(.+)\n/ );
if (mouth != null)
{
system = mouth[1];
wb( mouth[1], 0 );
if (system == mouth[1])
{
system = '';
}
}
if (bassin == ' ')
{
return line.replace('\n', system + '\n');
}
else if (bassin != ' ' + system)
{
alert('Параметр «Бассейн» не соответствует автоматически сгенерированному списку! Возможные причины:\nа) параметр «Бассейн» заполнен неверно (присутствует неточная викификация либо ошибка; очистка параметра покажет потенциальную проблему);\nб) в параметре «Устье» присутствует проблема (викификация, перенаправление, несуществующая статья);\nв) в одной из статей речной системы параметр «Устье» заполнен неверно (см. пункт б);\nг) река впадает в море, а в параметр «Высота устья» не вписан «0».');
}
return line;
});
//заменить устаревшее название
if (txt.indexOf('==у') > -1)
{
var temp = mw.config.get( 'wgPageName' ).split('_(');
temp[0] = temp[0].replace('_', ' ');
r(/==у\'\'\'([А-яЁё-\s]*?)\'\'\'/g, function ( uns, old )
{
return '\'\'\'' + temp[0] + '\'\'\' (\'\'устар.\'\' ' + old + '<ref name=\"ГВР\"/>)';
});
r(/\n *\| *Название *= *.*\n/g, '\n |Название = ' + temp[0] + '\n');
}
//вставить карточку
r(/==(река|озеро|вдх|залив|пролив|ист)/g, function ( uns, type )
{
return request('https://ru.wikipedia.org/w/index.php?action=raw&title=Участник:Мастер_теней/wikificator%2B/' + type);
});
//вставить шаблон
r(/==(книга|кн|статья|ст|cite|ci|сайт|са)/g, function ( uns, type )
{
if (type == 'кн' || type == 'книга')
{
return '{{книга\n |автор = \n |заглавие = \n |ссылка = \n |ответственный = \n |место = \n |издательство = \n |год = \n |том = \n |страниц = \n |страницы = \n |isbn = \n}}';
}
if (type == 'ст' || type == 'статья')
{
return '{{статья\n |автор = \n |заглавие = \n |ссылка = \n |язык = \n |издание = \n |тип = \n |год = \n |месяц = \n |число = \n |том = \n |номер = \n |страницы = \n |issn = \n}}';
}
if (type == 'ci' || type == 'cite' || type == 'са' || type == 'сайт')
{
return '{{cite web\n |author = \n |url = \n |title = \n |date = \n |website = \n |publisher = \n |accessdate = ' + linetime + ' \n |lang = \n}}';
}
});
r(/==прит([А-яЁё\d\.,\:\(\)\s-]*)/g, function ( uns, tributaries )
{
tributaries = 'Объекты перечислены по порядку от устья к истоку.\n{{колонки|3}}' + tributaries;
tributaries = tributaries.replace( /\n\n/g, '\n{{колонки|конец}}\n');
tributaries = tributaries.replace( /\n([\d,]+ км: )(река|ручьи руч.) ([А-Я])([А-яЁё\. -]+)/g, '\n$1[[$3$4]]' );
tributaries = tributaries.replace( /\n([\d,]+ км\:)/g, '\n* $1' );
tributaries = tributaries.replace( / ]]/g, ']] ' );
tributaries = tributaries.replace( /]][^\n]+\n/g, ']]\n' );
return tributaries;
});
//вставить параметр позкарты
r(/==п/g, function ( line )
{
return ' |Позиционная карта = ';
});
//поиск битых ссылок в истории
r(/<ref\sfixref=(\'|\")?(.+?)(\'|\")?\s?\/>/g, function ( uns0, uns1, name )
{
var history = request('https://ru.wikipedia.org/w/index.php?action=history&title=' + mw.config.get( 'wgPageName' ));
var tid = history.match( /oldid=([\d]*)"\sclass/g );
var t = 0;
while (tid[t])
{
var reg = /=([\d]*)/g;
var id = reg.exec(tid[t]);
var history_raw = request('https://ru.wikipedia.org/w/index.php?action=raw&oldid=' + id[1]);
var regex1 = new RegExp('(<ref\\sname\s?=\s?(\'|\")?' + name + '(\'|\")?\s?>.+?<\/ref>)', '');
var result1 = history_raw.match( regex1 );
if (result1 != null)
{
alert('Ура! Сноска найдена!\n\nОбыскано версий: ' + t + '\n\nВыражение: ' + regex1);
label = 2;
return result1[1];
}
t++;
}
alert('Сноска не найдена!\n\nОбыскано версий: ' + t + '\n\nВыражение: ' + regex1);
return uns0.replace('fixref', 'name');
});
//избыточная викификация
r(/\[\[11\sвек\]\]/g, 'XI век');
r(/\[\[12\sвек\]\]/g, 'XII век');
r(/\[\[13\sвек\]\]/g, 'XIII век');
r(/\[\[14\sвек\]\]/g, 'XIV век');
r(/\[\[15\sвек\]\]/g, 'XV век');
r(/\[\[16\sвек\]\]/g, 'XVI век');
r(/\[\[17\sвек\]\]/g, 'XVII век');
r(/\[\[18\sвек\]\]/g, 'XVIII век');
r(/\[\[19\sвек\]\]/g, 'XIX век');
r(/\[\[20\sвек\]\]/g, 'XX век');
r(/\[\[([IVX]+)\sвек\]\]/g, '$1 век');
r(/\[\[\d\d\d\d\-е\sгоды\|([^\]]+?)\]\]/g, '$1');
r(/\[\[(\d\d\d\d\-е\sгоды)\]\]/g, '$1');
r(/\[\[\d\d\d\d\sгод\|([^\]]+?)\]\]/g, '$1');
r(/\[\[(\d\d\d\d\sгод)\]\]/g, '$1');
r(/\[\[(\d\d\d\d)\]\]/g, '$1');
r(/\[\[км\]\]/g, 'км');
r(/\[\[км²\]\]/g, 'км²');
r(/\[\[[Кк]илометр\|км\]\]/g, 'км');
r(/\[\[[Кк]вадратный километр\|км²\]\]/g, 'км²');
r(/\[\[[Мм]етр\|м\]\]/g, 'м');
r(/\[\[(Л|л)ето\]\]/g, '$1ето');
r(/\[\[(З|з)има\]\]/g, '$1има');
r(/\[\[юг\]\]/g, 'юг');
r(/\[\[север\]\]/g, 'север');
r(/\[\[запад\]\]/g, 'запад');
r(/\[\[восток\]\]/g, 'восток');
r(/\[\[(Р|р)ека\]\]/g, '$1ека');
r(/\[\[(Р|р)ека\|(Р|р)ек(е|и)\]\]/g, '$2ек$3');
r(/\[\[залив\]\]/g, 'залив');
r(/\[\[(Р|р)учей\]\]/g, '$1учей');
r(/\[\[озеро\]\]/g, 'озеро');
r(/\[\[приток\]\]/g, 'приток');
r(/\[\[остров\]\]/g, 'остров');
//викификация
r(/река\sв\sРоссии/g, 'река в [[Россия|России]]');
r(/\s\[\[\:([A-z][A-z])\:(.*?)\|(.*?)\]\]/g, ' \{\{iw|$3<!-- Заголовок статьи подставлен автоматически! Пожалуйста, проверьте корректность и удалите сообщение! -->|$3|$1|$2}}');
r(/протекает\sв\sПермском\sкрае/g, 'протекает по [[Пермский край|Пермскому краю]]');
r(/протекает\sв\sЧелябинской\sобласти/g, 'протекает по [[Челябинская область|Челябинской области]]');
r(/протекает в Томской области/g, 'протекает по [[Томская область|Томской области]]');
r(/протекает в Омской области/g, 'протекает по [[Омская область|Омской области]]');
r(/протекает\sв\sСвердловской\sобласти/g, 'протекает по [[Свердловская область|Свердловской области]]');
r(/протекает\sв\sЧеченской\sРеспублике/g, 'протекает по [[Чечня|Чечне]]');
r(/протекает\sв\sРеспублике\sКоми/g, 'протекает по [[Республика Коми|Республике Коми]]');
r(/протекает\sв\sРеспублике\sТатарстан/g, 'протекает по [[Татарстан]]у');
r(/протекает\sв\sРеспублике\sБашкортостан/g, 'протекает по [[Башкортостан]]у');
r(/протекает\sв\sАрхангельской\sобласти/g, 'протекает по [[Архангельская область|Архангельской области]]');
r(/протекает\sв\sЯмало-Ненецком\sАО/g, 'протекает по [[Ямало-Ненецкий автономный округ|Ямало-Ненецкому АО]]');
r(/протекает\sв\sХанты-Мансийском\sАО/g, 'протекает по [[Ханты-Мансийский автономный округ — Югра|Ханты-Мансийскому АО]]');
r(/протекает\sв\s\[\[ХМАО\|Ханты-Мансийском\sАО\]\]\./g, 'протекает по [[Ханты-Мансийский автономный округ — Югра|Ханты-Мансийскому АО]]');
r(/Устье\sреки\sнаходится\sв\s([\d]*)\sкм\sпо\s(право|лево)му\sберегу\sреки\s([А-яЁё-\s]*)\./g, 'Устье реки находится в $1 км по $2му берегу реки [[' + current_mouth + '|$3]].');
r(/>(http.+?)< *?\/ *?ref *?>/g, '>[$1]</ref>');
r(/ +?< *?\/ *?ref *?>/g, '</ref>');
r(/(< *?ref[^>\/]+?>) +/g, '$1');
//хлам
r(/{{([Ss]|[Nn]obr) *\|([^\{\}]+?)}}/g, function ( line, uns0, value )//чистка избыточного шаблона
{
return value.replace(/[\s]+/g, ' ');
});
r(/\[\[([^\|\]]+)/g, function ( line, value )//чистка левых \s внутри ссылок
{
return '[[' + value.replace(/[\s]+/g, ' ');
});
r(/{{[Nn]bsp}}/g, ' ');
r(/{{[Тт]аз}}\n/g, '');
r(/{{[Лл]овать и Пола}}\n/g, '');
r(/{{[Мм]ста без р. Шлина от истока до Вышневолоцкого}}\n/g, '');
r(/\[\[Речная\sсистема\]\]\sреки.*?\.\s/g, '');
r(/== Ссылки ==\n{{[A-z-]+-geo-stub}}/g, '');
r(/{{[Nn]um *\|(\d)([\d\.])?([\d\.])?([\d\.])?\|(.*?)}}/g, '$1$2$3$4 $5');
r(/ ?{{([Пп]роверено|[Vv]) *\|[^\}]+}}/g, '');
r(/\n{{Водный реестр}}/g, '\n\* {{Водный реестр}}');
r(/\== Ссылки ==\n\*?\s?{{Водный реестр}}\n\n/g, '');
r(/\*\s{{[Вв]одный реестр}}\n/g, '');
r(/\==\sСм.\sтакже\s==\n\*?\s*\[\[Реки\sГермании\]\]\n\n/g, '');
r(/\[\[Категория:Реки\s[А-я-\s]*бассейнового\sокруга\]\]\n/g, '');
r(/<!-- ?Заголовок ?добавлен ?ботом ?-->/g, '');
r(/<!-- ?Заголовок ?ссылки ?сгенерирован ?ботом ?-->/g, '');
r(/<!-- ?Bot ?generated ?title ?-->/g, '');
r(/\<!-- ?Bot ?retrieved ?archive ?--\>/g, '');
r(/\<!--Staff writer\(s\); no by-line\.--\>/g, '');
r(/\<!--Added by H3llBot--\>/g, '');
r(/\<!---? *Смотрите в \[\[Википедия:Сноски\]\] примеры использования тэгов *\<ref\> *\<\/ref\> *--\>/g, '');
r(/<nowiki><\/nowiki>/g, '');
r(/<nowiki> <\/nowiki>/g, ' ');
r(/<nowiki>\[<\/nowiki>/g, '[');
r(/<nowiki>\]<\/nowiki>/g, ']');
r(/<nowiki>\|<\/nowiki>/g, '|');
r(/(По данным \[\[Государственный водный реестр\|государственного водного реестра России\]\] относится.*)([^]+== Данные водного реестра ==[^]+)(По данным|Код объекта)/g, '$2$1\n\n$3');
r(/По\sданным\sгеоинформационной системы водохозяйственного районирования[А-я,\s\[\|\]]*(<ref\sname=\"МПР\sРоссии\">.*<\/ref>):\s?\n\*\sКод\sводного([А-я—\s\d]*)\n[А-я—\s\(\)\d\n\.\*]*Выпуск\sпо\sГИ\s—\s\d\n/g, 'Код$2$1.\n');
r(/, речной подбассейн реки\s— [Пп]одбассейн отсутствует/g, '');
r(/, речной подбассейн реки отсутствует/g, '');
r(/, подбассейн у реки отсутствует/g, '');
r(/(http:\/\/textual.ru\/gvr\/index\.php\?card=[\d]*).*?loc=/g, '$1');
r(/<ref name=\"МПР России\">(\{\{cite web.+card\=([\d]+).+водный реестр( РФ)?\: ([0-9А-яЁё, \(\)\.-]+)[^<]*)/g, '<ref name=\"МПР России\">{{ГВР|$2|$4}}');
r(/< ?ref name ?= ?(\'|\")(.+)(\'|\") ?> ?< ?\/ ?ref ?>/g, '<ref name="$2"/>');
//проблемы в шаблонах
r(/{{([Кк]ол|[Dd]iv col|[Cc]olbegin)(\|)?([\d])?}}/g, '{{колонки$2$3}}');
r(/{{([Кк]онец кол|[Кк]ол-конец|[Кк]олонки\/конец|[Dd]iv col end|[Cc]olend)}}/g, '{{колонки|конец}}');
r(/{{([Нн]е АИ|[Нн]еаи|[Нн]еавторитетный источник\?|[Нн]еавторитетный источник|авторитетность\?)/g, '{{проверить авторитетность');
r(/[Пп]римечания\}\}\n\{\{/g, 'примечания\}\}\n\n\{\{');
r(/\{\{Lang/g, '\{\{lang');
r(/\{\{Ref/g, '\{\{ref');
r(/\{\{ref ([a-z][a-z])/g, '{{ref-$1');
r(/{{([A-Za-z][a-z]) icon/g, function ( line, lang ) {
return '{{ref-' + lang.toLowerCase();
});
r(/\{\{lang-ua/g, '\{\{lang-uk');
r(/\{\{ref-ua/g, '\{\{ref-uk');
r(/\{\{lang-jp/g, '\{\{lang-ja');
r(/\{\{ref-jp/g, '\{\{ref-ja');
r(/\{\{lang-gr\|/g, '\{\{lang-el|');
r(/\{\{ref-gr\}/g, '\{\{ref-el}');
r(/\(рус(ск)?\.?\)\]/g, '{{ref-ru}}]');
r(/\(анг(л)?\.?\)\]/g, '{{ref-en}}]');
r(/\(фр\.?\)\]/g, '{{ref-fr}}]');
r(/\(нем\.?\)\]/g, '{{ref-de}}]');
r(/\(укр\.?\)\]/g, '{{ref-uk}}]');
r(/\(исп\.?\)\]/g, '{{ref-es}}]');
r(/\(итал\.?\)\]/g, '{{ref-it}}]');
r(/\(порт\.\)\]/g, '{{ref-pt}}]');
//латиница в кириллицу
r(/{{lang-(be|ru|uk)\|([^\}]+?)}}/g, function ( line, lang, word ) {
word = word.replace(/I/g, 'І');
word = word.replace(/i/g, 'і');
return '{{lang-' + lang + '|' + word + '}}';
});
r(/\{\{[Rr]q\|source(s)?\}\}/g, subst + 'отсутствие источников' + substclose);
r(/\{\{[Rr]q\|refless\}\}/g, '\{\{нет сносок\}\}');
r(/\|stub/g, '|empty');
r(/\|wikify/g, '');
r(/\|stress/g, '');
r(/\|linkless/g, '');
if (txt.indexOf('|img') > -1)
{
if ((txt.indexOf('.jpg') > -1) || (txt.indexOf('.JPG') > -1))
{
r(/\{\{[Rr]q\|img\}\}/g, '');
r(/\|img/g, '');
};
}
r(/{{[Rr]q}}/g, '');
if (txt.indexOf('geo-stub}}') > -1)
{
var size = txt.replace( /{{((.|\n)*}})[\n]*\'\'\'/g, '' );
if (size.length > 2000)
{
r(/\n{{[A-z-]*geo-stub}}/g, '');
}
r(/stub\}\}\n\n\{\{/g, 'stub\}\}\n\{\{');
};
r(/{{[Сс]тиль( +)?\|( +)?.+}}/g, '{{стиль}}');//выпил даты
r(/{{[Rr]efless}}/g, '{{нет сносок}}');
r(/{{[Нн]ет сносок( +)?\|( +)?.+}}/g, '{{нет сносок}}');//выпил даты
r(/{{[Бб]олванка( +)?\|( +)?.+}}/g, '');
r(/{{[Ww]ide image/g, '{{панорама');
r(/{{Нет/g, '{{нет');
r(/{{нет\sисточников/g, '{{нет ссылок');
r(/{{нет\s(иллюстрации|иллюстраций|изображений)}}/g, '');
//cite web и другие шаблоны АИ
r(/\[(http[^\]]+?)\[\[([^\|\]]+?\|)?([^\]]+?)\]\]/g, '[$1$3');//ликвидация викификации внутри ссылок
r(/\[(http(s)?:\/\/web\.archive\.org\/web\/([\d][\d][\d][\d])([\d][\d])([\d][\d])[\d]+\/(http(s)?:[^\] ]+))([^\]]+)?\]/g, '{{cite web|author = |url=$6|deadlink=yes|title=$8|lang = |archiveurl=$1|archivedate=$3-$4-$5}}');//разворачивание web.archive.org
r(/\[(http(s)?:\/\/www\.webcitation\.org\/[^\?]+\?url=(http(s)?:[^\] ]+))([^\]]+)?\]/g, '{{cite web|author = |url=$3|deadlink=yes|title=$5|lang = |archiveurl=$1|archivedate=}}');//разворачивание www.webcitation.org
r(/\[(http(s)?:\/\/archive\.(is|li|md|today)\/([\d][\d][\d][\d])([\d][\d])([\d][\d])[\d]+\/([^\] ]+))([^\]]+)?\]/g, '{{cite web|author = |url=$7|deadlink=yes|title=$8|lang = |archiveurl=$1|archivedate=$4-$5-$6}}');//разворачивание archive.(is|li|md|today)
r(/\[(http(s)?:\/\/archive\.(is|li|md|todai)\/[A-Za-z0-9]+) ([^\]]+?)\]/g, '{{cite web|author = |url=|deadlink=yes|title=$4|lang = |archiveurl=$1|archivedate=}}');//разворачивание archive.(is|li|md|today)
r(/{{[Ii]nternetquelle/g, '{{cite web');//ликвидация internetquelle
r(/{{[Cc]ite magazine/g, '{{cite journal');//ликвидация cite magazine
r(/{{[Cc]ite[\s]+news([^\}]*?\| *url *= *http[^\}]+?}})/g, '{{cite web$1');//ликвидация cite news
r(/{{[Cc]w/g, '{{cite web');
r(/{{[Cc]iteweb/g, '{{cite web');
r(/{{[Cc]ite[\s]+web/g, '{{cite web');
r(/{{[Cc]ite[\s]+web[\s]+2/g, '{{cite web');
r(/{{(Недоступная ссылка|[Мм][ёе]ртвая ссылка|[Бб]итая ссылка|[Dd]eadlink|[Dd]ead link)/g, '{{недоступная ссылка');
r(/{{Wayback/g, '{{wayback');
r(/{{([Ww]ebarchive|Архивировано)/g, '{{архивировано');
r(/ *= *\?\?\?/g, ' = ');
r(/\| *тираж *= *([0-9]+)( |\s)([0-9]+)/g, '|тираж = $1$3');
if (txt.indexOf('Архивированная копия') != -1 || txt.indexOf('{title}') != -1 || txt.indexOf('アーカイブされたコピー') != -1 ) {
r(/\| *title *= *(Архивированная копия|{title}|アーカイブされたコピー)/g, '|title = ');
alert('Внимание! У одной из ссылок не заполнено описание! Пожалуйста, впишите его в параметр title. См. ошибку в предварительном просмотре.');
};
r(/(title|publisher) *=(.+?)(\||[^!]\}\})/g, function ( line, title, out )//чистка избыточного шаблона в title
{
return line.replace(/{{!}}/g, '|');
});
r(/\| *language *=/g, '|lang =');
r(/\| *lang *= *([a-z][a-z])\-[A-Za-z][A-Za-z]/g, '|lang = $1');//чистка региона из языка
r(/\| *lang *= *arm/g, '|lang = hy');
r(/\| *lang *= *by/g, '|lang = be');
r(/\| *lang *= *ua/g, '|lang = uk');
r(/\| *lang *= *jp/g, '|lang = ja');
r(/\| *lang *= *gr/g, '|lang = el');
r(/\| *lang *= *cn/g, '|lang = zh');
r(/\| *lang *= *English/g, '|lang = en');
r(/\| *lang *= *German/g, '|lang = de');
r(/\| *lang *= *Dutch/g, '|lang = nl');
r(/\| *lang *= *Japanese/g, '|lang = ja');
r(/({{cite web([^\}]+?))}}{{недоступная ссылка[^\}]+?}}/g, '$1|deadlink = yes}}');
r(/{{cite web([^\}]+?)}}/g, function ( line, params ) {//для сработки нужна замена выше
params = params.replace(/\| *archive-url *=/g, '|archiveurl =');
params = params.replace(/\| *archive-date *=/g, '|archivedate =');
params = params.replace(/\| *access-date *=/g, '|accessdate =');
params = params.replace(/\| *work *=/g, '|website =');
// params = params.replace(/\| *language *=/g, '|lang =');
params = params.replace(/\| *datepublished *=/g, '|date =');
params = params.replace(/\| *deadlink *= *(\}|\|)/g, '|deadlink=no$1');
params = params.replace(/\| *deadlink *= *1 *\|/g, '|deadlink = yes |');
params = params.replace(/\| *deadlink *= *(403|404|project-closed|unknown-host|indeed|circular|да)/g, '|deadlink = yes');
params = params.replace(/\| *deadurl *= *yes/g, '');
//internetquelle
params = params.replace(/\| *autor *=/g, '|author =');
params = params.replace(/\| *titel *=/g, '|title =');
params = params.replace(/\| *hrsg *=/g, '|website =');
params = params.replace(/\| *offline *=/g, '|deadlink =');
params = params.replace(/\| *deadurl *=/g, '|deadlink =');
params = params.replace(/\| *zugriff *=/g, '|accessdate =');
params = params.replace(/\| *zugriff-jahr *=/g, '|accessdate =');
params = params.replace(/\| *archiv-datum *=/g, '|archivedate =');
params = params.replace(/\| *datum-jahr *=/g, '|year =');
params = params.replace(/\| *datum-monat *=/g, '|month =');
params = params.replace(/\| *datum-tag *=/g, '|day =');
params = params.replace(/\| *datum *=/g, '|date =');
params = params.replace(/\| *sprache *=/g, '|lang =');
params = params.replace(/\| *seiten *=/g, '|pages =');
params = params.replace(/\| *zitat *=/g, '|quote =');
//форматирование
if (line.indexOf('{{cite web\n') == -1) {
params = params.replace(/\|([^=\|]+)=/g, ' |$1 = ');
params = params.replace(/\s+/g, ' ');
};
return '{{cite web' + params + '}}';
});
r(/{{[Кк]нига/g, '{{книга');
r(/{{книга([^\}]+?)}}/g, function ( line, params ) {//для сработки нужна замена выше
params = params.replace(/\| *volume *=/g, '|том =');
params = params.replace(/\| *pages *=/g, '|страницы =');
params = params.replace(/\| *columns *=/g, '|столбцы =');
params = params.replace(/\| *allpages *=/g, '|страниц =');
//форматирование
if (line.indexOf('{{книга\n') == -1) {
params = params.replace(/\|([^=\|]+)=/g, ' |$1 = ');
params = params.replace(/\s+/g, ' ');
};
return '{{книга' + params + '}}';
});
r(/{{[Сс]татья/g, '{{статья');
r(/{{статья([^\}]+?)}}/g, function ( line, params ) {//для сработки нужна замена выше
//форматирование
if (line.indexOf('{{статья\n') == -1) {
params = params.replace(/\|([^=\|]+)=/g, ' |$1 = ');
params = params.replace(/\s+/g, ' ');
};
return '{{статья' + params + '}}';
});
r(/{{([Ии]з БСЭ|БСЭ)}}/g, '{{Из БСЭ|статья = }}');
r(/{{([Ии]з )?БСЭ([^123][^}]+?)}}/g, function ( line, uns0, params ) {//замена БСЭ на БСЭ3 по консенсусу в геочате
if (params.indexOf('издание') != -1) {//указано издание
return line;
};
params = params.replace(/\| *(заглавие|title) *= */g, '|статья = ');
params = params.replace(/\| *http[^\|\}]+/g, '');
alert('Внимание! Устаревший шаблон ' + line + ' автоматически заменён на {{БСЭ3' + params + '}}. Проверьте наличие статьи в 3-м издании БСЭ!');
return '{{БСЭ3' + params + '}}';
});
//ссылки
r(/\| *archiveurl *= *[^\|]+?maps.rosreestr.ru\/Portal[^\}]+?}/g, '}');
r(/\| *url *= *http(s)?\:\/\/maps.rosreestr.ru\/Portal(Online)?\/\?l=/g, '|url = https://pkk5.rosreestr.ru/#z=');
r(/\[http(s)?\:\/\/maps.rosreestr.ru\/Portal(Online)?\/\?l=/g, '[https://pkk5.rosreestr.ru/#z=');
r(/http\:\/\/web\.archive\.org/g, 'https://web.archive.org');
//даты
r(/date *= *(\d) (января|January|Jan)(?:,){0,1} ([12][09]\d\d)/g, 'date = $3-01-0$1');
r(/date *= *(\d\d) (января|January|Jan)(?:,){0,1} ([12][09]\d\d)/g, 'date = $3-01-$1');
r(/date *= *(\d) (февраля|February|Feb)(?:,){0,1} ([12][09]\d\d)/g, 'date = $3-02-0$1');
r(/date *= *(\d\d) (февраля|February|Feb)(?:,){0,1} ([12][09]\d\d)/g, 'date = $3-02-$1');
r(/date *= *(\d) (марта|March)(?:,){0,1} ([12][09]\d\d)/g, 'date = $3-03-0$1');
r(/date *= *(\d\d) (марта|March)(?:,){0,1} ([12][09]\d\d)/g, 'date = $3-03-$1');
r(/date *= *(\d) (апреля|April)(?:,){0,1} ([12][09]\d\d)/g, 'date = $3-04-0$1');
r(/date *= *(\d\d) (апреля|April)(?:,){0,1} ([12][09]\d\d)/g, 'date = $3-04-$1');
r(/date *= *(\d) (мая|May)(?:,){0,1} ([12][09]\d\d)/g, 'date = $3-05-0$1');
r(/date *= *(\d\d) (мая|May)(?:,){0,1} ([12][09]\d\d)/g, 'date = $3-05-$1');
r(/date *= *(\d) (июня|June)(?:,){0,1} ([12][09]\d\d)/g, 'date = $3-06-0$1');
r(/date *= *(\d\d) (июня|June)(?:,){0,1} ([12][09]\d\d)/g, 'date = $3-06-$1');
r(/date *= *(\d) (июля|July)(?:,){0,1} ([12][09]\d\d)/g, 'date = $3-07-0$1');
r(/date *= *(\d\d) (июля|July)(?:,){0,1} ([12][09]\d\d)/g, 'date = $3-07-$1');
r(/date *= *(\d) (августа|August)(?:,){0,1} ([12][09]\d\d)/g, 'date = $3-08-0$1');
r(/date *= *(\d\d) (августа|August)(?:,){0,1} ([12][09]\d\d)/g, 'date = $3-08-$1');
r(/date *= *(\d) (сентября|September|Sep)(?:,){0,1} ([12][09]\d\d)/g, 'date = $3-09-0$1');
r(/date *= *(\d\d) (сентября|September|Sep)(?:,){0,1} ([12][09]\d\d)/g, 'date = $3-09-$1');
r(/date *= *(\d) (октября|October|Oct)(?:,){0,1} ([12][09]\d\d)/g, 'date = $3-10-0$1');
r(/date *= *(\d\d) (октября|October|Oct)(?:,){0,1} ([12][09]\d\d)/g, 'date = $3-10-$1');
r(/date *= *(\d) (ноября|November|Nov)(?:,){0,1} ([12][09]\d\d)/g, 'date = $3-11-0$1');
r(/date *= *(\d\d) (ноября|November|Nov)(?:,){0,1} ([12][09]\d\d)/g, 'date = $3-11-$1');
r(/date *= *(\d) (декабря|December)(?:,){0,1} ([12][09]\d\d)/g, 'date = $3-12-0$1');
r(/date *= *(\d\d) (декабря|December)(?:,){0,1} ([12][09]\d\d)/g, 'date = $3-12-$1');
r(/date *= *(\d\d)\.(\d\d)\.([12][09]\d\d)/g, 'date = $3-$2-$1');
r(/date *= *(\d)\.(\d\d)\.([12][09]\d\d)/g, 'date = $3-$2-0$1');
//стиль и типографика
r(/В\s(\[\[)?(\d\d\d\d)(\]\])?\sг\.(\s|,)/g, 'В $2 году$4');
r(/\sв\s(\[\[)?(\d\d\d\d)(\]\])?\sг\.( |,)([^А-ЯЁ])/g, ' в $2 году$4$5');
r(/{{[Нн][Пп][2345]\|/g, '{{iw|');
r(/{{[Ii][w][2345]\|/g, '{{iw|');
r(/{{[Нн]е\sпереведено\|/g, '{{iw|');
r(/{{[Нн]е\sпереведено\s[2345]\|/g, '{{iw|');
r(/({{iw\|[^\|]+\|[^\|]*\|)(\|[^\|\}]+?}})/g, '$1en$2');
r(/{{iw\|([^\|\}]+?)}}/g, '{{iw|$1||en|$1}}');
r(/<sup>2<\/sup>/g, '²');
r(/<sup>3<\/sup>/g, '³');
r(/кв(\.)?(\s)?км/g, 'км²');
r(/км2/g, 'км²');
r(/м2/g, 'м²');
r(/км (²|³)/g, 'км$1');
r(/км3/g, 'км³');
r(/куб\.(\s)?км/g, 'км³');
r(/м3\/с/g, 'м³/с');
r(/ м (²|³)/g, ' м$1');
r(/\{\{[Кк]ол\|/g, '\{\{колонки');
r(/\{\{Карта\|/g, '\{\{карта\|');
r(/\{\{Orphan.*?\}\}/g, '\{\{изолированная статья\}\}');
r(/\{\{([Нн]ормативный\sконтроль|[Аа]вторитетный\sконтроль|[Бб]иблиоинформация|[Сс]сылки|[Вв][Сс]|[Ии]дентификаторы|Внешние\sссылки|[Aa]uthority control|[Nn]ormdaten|[Ee]xternal\slinks)\}\}/g, '{{внешние ссылки}}');
r(/<ref>{{карта\|([A-U0-9-IVX,АБ]*)}}<\/ref>/g, '<ref name=\"$1\">{{карта|$1}}<\/ref>');
r(/(Н|н)аселенн([^я])/g, '$1аселённ$2');
r(/(\s[Пп])оселок/g, '$1осёлок');
r(/(Б|б)ерет\sначало/g, '$1ерёт начало');
r(/лощадь её водосборного/g, 'лощадь водосборного');
r(/(П|п)ротяженность/g, '$1ротяжённость');
r(/подбассейн\sреки\s—\sПодбассейн/g, 'подбассейн реки — подбассейн');
r(/\[\[[Уу]краинский язык\|укр\]\]\. \'\'([А-я-і]*)\'\'/g, '{{lang-uk|$1}}');
r(/укр\. \'\'([А-я-і]*)\'\'/g, '{{lang-uk|$1}}');
r(/(\[\[Категория:[А-яЁё:-\s\(\)\[\]]*)(\[\[Категория:Притоки\s[А-яЁё-\s\(\)]*\]\]\n)/g, '$2$1');
r(/(\[\[Категория:[А-яЁё:-\s\(\)\[\]]*)(\[\[Категория:Бассейн\s[А-яЁё-\s\(\)]*\]\]\n)/g, '$2$1');
r(/(\[\[Категория:[А-яЁё:-\s\(\)\[\]]*)(\[\[Категория:Реки,\sвпадающие\s[А-я-\s\(\)]*\]\]\n)/g, '$2$1');
r(/{{[Oo]theruses/g, '{{значения');
r(/({{([Дд]ругие )?[Зз]начения[^}]*?}}\n)([^\']+?}})\n\'\'\'/g, '$3$1\'\'\'');
if (txt.indexOf('<ref name=\"МПР России\">') > -1) {
r(/Длина\sреки\sсоставляет\s(\d*)\sкм\./g, 'Длина реки составляет $1 км<ref name=\"МПР России\"/>.');
};
if (txt.indexOf('<ref name=\"ГВР\">') == -1) {
r(/<ref name\=\"МПР России\"/g, '<ref name=\"ГВР\"');
};
if (txt.indexOf('<ref name=\"ГВР\">') == -1) {
r(/<ref>{{ГВР\|([\d]*)(\|[А-я-\s]*)?}}<\/ref>/g, '<ref name=\"ГВР\">{{ГВР|$1$2}}<\/ref>');
};
if (txt.indexOf('<gallery') == -1) {//убрать разрывы строк
r(/([^\s])[\n]([а-яё]+)/g, '$1 $2');
r(/[,][\n]([А-ЯЁ][а-яё]+)/g, ', $1');
r(/([a-z]+)[\n]([a-z]+)/g, '$1 $2');
};
r(/==\n\n/g, '==\n');
r(/\n\n\n/g, '\n\n');
r(/\n\n\n/g, '\n\n');
r(/\n\s\}\}/g, '\n\}\}');
r(/\}\}\n\n\'\'\'/g, '}}\n\'\'\'');
//стандартизация параметров изображений
//r(/[^\n]\[\[Файл:/g, '\n\[\[Файл:');
r(/\|thumbnail/g, '|мини');
r(/\|thumb/g, '|мини');
r(/\|left/g, '|слева');
r(/\|right/g, '|справа');
r(/\|мини\|(слева|справа)\|/g, '|$1|мини|');
r(/\|мини\|([\d]*px)\|/g, '|$1|мини|');
r(/\|([\d]*px)\|(слева|справа)\|/g, '|$2|$1|');
//галереи
r(/\n[Ff]ile\:/g, '\n');
r(/\n[Фф]айл\:/g, '\n');
r(/\n[Ii]mage\:/g, '\n');
r(/\n[Ии]зображение\:/g, '\n');
r(/<gallery>/g, '<gallery class="center">');
//преобразование координат
//Google, Yandex, Bing, SAS-Планета
r(/(\| *Координаты (истока|устья|головы)? *= *)(\d+([\.,]\d+)?)°?,? (\d+([\.,]\d+)?)°?\n/g, function ( line, param, uns2, lat, uns4, lon )
{
return param + lat.replace(',', '.') + '/' + lon.replace(',', '.') + '\n';
});
//Википедия (длинный формат)
r(/(\| *Координаты (истока|устья|головы)? *= *)(\d+(?:\.\d+)?)[/](\d+(?:\.\d+)?)[/](\d+(?:\.\d+)?)[/]([NS])[/](\d+(?:\.\d+)?)[/](\d+(?:\.\d+)?)[/](\d+(?:\.\d+)?)[/]([EW])/g, function ( uns, line, uns1, lat1, lat2, lat3, lat4, lon1, lon2, lon3, lon4 )
{
var lat = ( +parseFloat( (Number(lat1)*3600+Number(lat2)*60+Number(lat3))/3600 ).toFixed( 4 ));
var lon = ( +parseFloat( (Number(lon1)*3600+Number(lon2)*60+Number(lon3))/3600 ).toFixed( 4 ));
if (lat4 == 'S') lat = lat*-1;
if (lon4 == 'W') lon = lon*-1;
return line + lat + '/' + lon;
});
r(/(\| *Координаты (истока|устья|головы)? *= *)(\d+(?:\.\d+)?)[/](\d+(?:\.\d+)?)[/]([NS])[/](\d+(?:\.\d+)?)[/](\d+(?:\.\d+)?)[/]([EW])/g, function ( uns, line, uns1, lat1, lat2, lat3, lon1, lon2, lon3 )
{
var lat = ( +parseFloat( (Number(lat1)*3600+Number(lat2)*60)/3600 ).toFixed( 4 ));
var lon = ( +parseFloat( (Number(lon1)*3600+Number(lon2)*60)/3600 ).toFixed( 4 ));
if (lat3 == 'S') lat = lat*-1;
if (lon3 == 'W') lon = lon*-1;
return line + lat + '/' + lon;
});
r(/(\| *Координаты (истока|устья|головы)? *= *)(\d+(?:\.\d+)?)[/]([NS])[/](\d+(?:\.\d+)?)[/]([EW])/g, function ( uns, line, uns1, lat1, lat2, lon1, lon2 )
{
var lat = ( +parseFloat( Number(lat1) ).toFixed( 4 ));
var lon = ( +parseFloat( Number(lon1) ).toFixed( 4 ));
if (lat2 == 'S') lat = lat*-1;
if (lon2 == 'W') lon = lon*-1;
return line + lat + '/' + lon;
});
r(/(\| *Координаты (истока|устья|головы)? *= *)(-?\d+(?:\.\d+)?)[/](-?\d+(?:\.\d+)?)\n/g, function ( uns, line, uns1, lat, lon )
{
return line + +parseFloat( Number(lat) ).toFixed( 4 ) + '/' + +parseFloat( Number(lon) ).toFixed( 4 ) + '\n';
});
//карточка реки
r(/\n *\| *Название *= */g, '\n |Название = ');
r(/\n *\| *Национальное название *= */g, '\n |Национальное название = ');
r(/\n *\| *Изображение *= */g, '\n |Изображение = ');
r(/\n *\| *Подпись изображения *= */g, '\n |Подпись изображения = ');
r(/\n *\| *Длина *= */g, '\n |Длина = ');
r(/\n *\| *Площадь бассейна *= */g, '\n |Площадь водосбора = ');
r(/\n *\| *Площадь водосбора *= */g, '\n |Площадь водосбора = ');
r(/\n *\| *Бассейн *= */g, '\n |Бассейн = ');
r(/\n *\| *Расход воды *= */g, '\n |Расход воды = ');
r(/\n *\| *Место измерения *= */g, '\n |Место измерения = ');
r(/\n *\| *Исток *= */g, '\n |Исток = ');
r(/\n *\| *Местоположение истока *= */g, '\n |Местоположение истока = ');
r(/\n *\| *Высота истока *= */g, '\n |Высота истока = ');
r(/\n *\| *Координаты истока *= */g, '\n |Координаты истока = ');
r(/\n *\| *Устье *= */g, '\n |Устье = ');
r(/\n *\| *Местоположение устья *= */g, '\n |Местоположение устья = ');
r(/\n *\| *Высота устья *= */g, '\n |Высота устья = ');
r(/\n *\| *Координаты устья *= */g, '\n |Координаты устья = ');
r(/\n *\| *Уклон реки *= */g, '\n |Уклон реки = ');
r(/\n *\| *Страна *= */g, '\n |Страна = ');
r(/\n *\| *Регион *= */g, '\n |Регион = ');
r(/\n *\| *Район *= */g, '\n |Район = ');
r(/\n *\| *Позиционная карта *= */g, '\n |Позиционная карта = ');
r(/\n *\| *Позиционная карта 1 *= */g, '\n |Позиционная карта 1 = ');
r(/\n *\| *Тип вывода для ПК *= */g, '\n |Тип вывода для ПК = ');
r(/\n *\| *Страна *= *Беларусь/g, '\n |Страна = Белоруссия');
r(/\n *\| *Страна *= *КНР/g, '\n |Страна = Китайская Народная Республика');
r(/\n *\| *Страна *= *Китай(\/|\n)/g, '\n |Страна = Китайская Народная Республика$1');
r(/\n *\| *Страна *= *США/g, '\n |Страна = Соединённые Штаты Америки');
r(/\n *\| *Страна *= *ЮАР/g, '\n |Страна = Южно-Африканская Республика');
r(/\n *\| *Устье *= *река\s\[\[([А-яЁё-]*)\]\]/g, '\n |Устье = $1');
r(/\n *\| *Регион *= *Республика\sСеверная\sОсетия-Алания/g, '\n |Регион = Северная Осетия');
r(/\n *\| *Регион *= *Республика\sУдмуртия/g, '\n |Регион = Удмуртия');
r(/\n *\| *Регион *= *Чувашская\sРеспублика/g, '\n |Регион = Чувашия');
r(/\n *\| *Регион *= *Чеченская\sРеспублика/g, '\n |Регион = Чечня');
r(/\n *\| *Регион *= *Республика\sТатарстан/g, '\n |Регион = Татарстан');
r(/\n *\| *Регион *= *Республика\sМарий Эл/g, '\n |Регион = Марий Эл');
r(/\n *\| *Регион *= *Камчатская\sобласть/g, '\n |Регион = Камчатский край');
r(/\n *\| *Регион *= *Ненецкий\sАО/g, '\n |Регион = Ненецкий автономный округ');
r(/\n *\| *Регион *= *Тува/g, '\n |Регион = Тыва');
r(/\n *\| *Регион *= *Карелия/g, '\n |Регион = Республика Карелия');
r(/\n *\| *Регион *= *Республика\sБашкортостан/g, '\n |Регион = Башкортостан');
r(/\n *\| *Регион *= *Кабардино-Балкарская\sРеспублика/g, '\n |Регион = Кабардино-Балкария');
r(/(\n\s*\|\s*Позиционная\sкарта\s*=.*)(\n\s*\|\s*Район\s*=.*)\n/g, '$2$1\n');
//карточка озера
if (txt.indexOf('Подпись изображения') == -1) {
r(/\n *\| *Подпись *= */g, '\n |Подпись изображения = ');
};
r(/\n *\| *Координаты *= */g, '\n |Координаты = ');
r(/\n *\| *CoordScale *= */g, '\n |CoordScale = ');
r(/\n *\| *Страны *= *\n/g, '\n');//удалять если не заполнена
r(/\n *\| *Районы *= *\n/g, '\n');//удалять если не заполнена
r(/\n *\| *Страны *= */g, '\n |Страна = ');
r(/\n *\| *Регионы *= */g, '\n |Регион = ');
r(/\n *\| *Районы *= */g, '\n |Район = ');
r(/\n *\| *Высота над уровнем моря *= */g, '\n |Высота над уровнем моря = ');
r(/\n *\| *Ширина *= */g, '\n |Ширина = ');
r(/\n *\| *Площадь *= */g, '\n |Площадь = ');
r(/\n *\| *Объём *= */g, '\n |Объём = ');
r(/\n *\| *Длина береговой линии *= */g, '\n |Длина береговой линии = ');
r(/\n *\| *Наибольшая глубина *= */g, '\n |Наибольшая глубина = ');
r(/\n *\| *Средняя глубина *= */g, '\n |Средняя глубина = ');
r(/\n *\| *Тип минерализации *= */g, '\n |Тип минерализации = ');
r(/\n *\| *Солёность *= */g, '\n |Солёность = ');
r(/\n *\| *Прозрачность *= */g, '\n |Прозрачность = ');
r(/\n *\| *Площадь водосбора *= */g, '\n |Площадь водосбора = ');
r(/\n *\| *Впадающие реки *= */g, '\n |Впадающие реки = ');
r(/\n *\| *Вытекающие реки *= */g, '\n |Вытекающие реки = ');
//карточка водохранилища
r(/\n *\| *Впадающие водотоки *= */g, '\n |Впадающие водотоки = ');
r(/\n *\| *Вытекающие водотоки *= */g, '\n |Вытекающие водотоки = ');
r(/\n *\| *Год наполнения *= */g, '\n |Год наполнения = ');
r(/\n *\| *Высота плотины *= */g, '\n |Высота плотины = ');
//карточка канала
if (txt.indexOf('{{Канал') > -1)
{
r(/\n *\| *Вход *= */g, '\n |Голова = ');
r(/\n *\| *Местоположение входа *= */g, '\n |Местоположение головы = ');
r(/\n *\| *Высота входа *= */g, '\n |Высота головы = ');
r(/\n *\| *Координаты входа *= */g, '\n |Координаты головы = ');
r(/\n *\| *Исток *= */g, '\n |Голова = ');
r(/\n *\| *Местоположение истока *= */g, '\n |Местоположение головы = ');
r(/\n *\| *Высота истока *= */g, '\n |Высота головы = ');
r(/\n *\| *Координаты истока *= */g, '\n |Координаты головы = ');
};
r(/\n *\| *Максимальная глубина *= */g, '\n |Наибольшая глубина = ');
r(/\n *\| *Голова *= */g, '\n |Голова = ');
r(/\n *\| *Местоположение головы *= */g, '\n |Местоположение головы = ');
r(/\n *\| *Высота головы *= */g, '\n |Высота головы = ');
r(/\n *\| *Координаты головы *= */g, '\n |Координаты головы = ');
r(/\n *\| *Уклон канала *= */g, '\n |Уклон канала = ');
//карточка болота
r(/\n *\| *Вытекающая река *= */g, '\n |Вытекающие реки = ');
//карточка водопада
r(/\n *\| *Река *= */g, '\n |Река = ');
r(/\n *\| *Высота *= */g, '\n |Высота = ');
r(/\n *\| *Расход *= */g, '\n |Расход = ');
//карточка ледника
if (txt.indexOf('{{Ледник') > -1)
{
r(/\n *\| *Тип *= */g, '\n |Тип ледника = ');
};
r(/\n *\| *Толщина *= */g, '\n |Толщина = ');
r(/\n *\| *Состояние *= */g, '\n |Состояние ледника = ');
//карточка залива
r(/\n *\| *Примечания *=.*/g, '');
r(/\n *\| *Название\sдля\sсортировки *=.*/g, '');
r(/\n *\| *Тип\sзалива *= */g, '\n |Тип залива = ');
r(/\n *\| *Вышестоящие\sакватории *= */g, '\n |Вышестоящая акватория = ');
r(/\n *\| *Вышестоящая\sакватория *= */g, '\n |Вышестоящая акватория = ');
r(/\n *\| *Средняя\sвеличина\sприлива *= */g, '\n |Средняя величина прилива= ');
//карточка пролива
r(/\n *\| *Крайний мыс *= */g, '\n |Крайние мысы = ');
r(/\n *\| *Крайний мыс 1 *= *\n/g, '\n');//удалять если не заполнена
//Общие параметры
r(/\n *\| *НП *=.*/g, '');
r(/\n *\| *Остров *=.*/g, '');
r(/\n *\| *Расположение *=.*/g, '');
r(/\n *\| *s_no *= *\n/g, '\n');//удалять если не заполнена
r(/\n *\| *Позиционная\sкарта *= *\n/g, '\n');//удалять если не заполнена
r(/\n *\| *Позиционная\sкарта\s1 *= *\n/g, '\n');//удалять если не заполнена
r(/\n *\| *Позиционная\sкарта\s2 *= *\n/g, '\n');//удалять если не заполнена
r(/\n *\| *Категория на Викискладе *= *\n/g, '\n');//удалять если не заполнена
r(/\n *\| *Карта *= *\n/g, '\n');//удалять если не заполнена
r(/\n *\| *Подпись\sкарты *= *\n/g, '\n');//удалять если не заполнена
r(/\n *\| *CoordScale *= *\n/g, '\n');//удалять если не заполнена
r(/([ ]+)?\|([ ]+)?Вместо (региона|района).+\n/g, '');//всегда удалять
if (txt.indexOf('{{Море') == -1)
{
if (txt.indexOf('Регион') == -1)
{
r(/\n *\| *Страна *= (.*?)\n/g, '\n |Страна = $1\n |Регион = \n');
}
if (txt.indexOf('Район') == -1)
{
r(/\n *\| *Регион *= (.*?)\n/g, '\n |Регион = $1\n |Район = \n');
}
}
r(/\n *\| *Примечания *=.*/g, '');
//Карточка поселения
// r(/([ ]+)?\|([ ]+)?CoordAddon.+\n/g, '');//всегда удалять, уже в викификаторе
// r(/([ ]+)?\|([ ]+)?ЯндексКарта.+\n/g, '');//всегда удалять, уже в викификаторе
// r(/\n *\| *размер карты страны.+\n/g, '\n');//всегда удалять, уже в викификаторе
// r(/\n *\| *размер карты региона.+\n/g, '\n');//всегда удалять, уже в викификаторе
// r(/\n *\| *размер карты района.+\n/g, '\n');//всегда удалять, уже в викификаторе
r(/\n *\| *карта страны *= *\n/g, '\n');//удалять если не заполнена
r(/\n *\| *карта региона *= *\n/g, '\n');//удалять если не заполнена
r(/\n *\| *карта района *= *\n/g, '\n');//удалять если не заполнена
r(/\n *\| *язык сайта 2 *= *\n/g, '\n');//удалять если не заполнена
r(/\n *\| *язык сайта 3 *= *\n/g, '\n');//удалять если не заполнена
r(/\n *\| *язык сайта 4 *= *\n/g, '\n');//удалять если не заполнена
r(/\n *\| *язык сайта 5 *= *\n/g, '\n');//удалять если не заполнена
r(/\n *\| *add1n *= *\n/g, '\n');//удалять если не заполнена
r(/\n *\| *add1 *= *\n/g, '\n');//удалять если не заполнена
r(/\n *\| *add2n *= *\n/g, '\n');//удалять если не заполнена
r(/\n *\| *add2 *= *\n/g, '\n');//удалять если не заполнена
r(/\n *\| *add3n *= *\n/g, '\n');//удалять если не заполнена
r(/\n *\| *add3 *= *\n/g, '\n');//удалять если не заполнена
//карточки гор
r(/\n *\| *Хребет или массив *= */g, '\n |Хребет или массив = ');
//карточка парка
if (txt.indexOf('{{Парк') > -1)
{
r(/\n *\| *Тип *= */g, '\n |Тип парка = ');
};
//базовое оформление ссылок
var pos = 0;//подсчёт неоформленных ссылок
for (var links = -1; pos != -1; links++) { pos = txt.indexOf('[http', pos+1); }
r(/\[(http(s)?\:\/\/([^\/]+\.([0-9a-z]+))(\/[^ ^\]]+)?)( ([^\]]+))?\](\{\{ref\-([a-z]+)\}\})?([\s]*\{\{(недоступная ссылка|wayback|архивировано)[^}]*?}})?/g, function ( uns0, url, uns2, website, domain, uns5, uns6, title, uns8, reflang, dead, funcdead )
{
var lang = '';
var accessdate = linetime;
if (replace_all_link > 0 )//участник сделал выбор
{
if ( replace_all_link == 2 )//участник отказался
{
return uns0;
}
}
else if (confirm('В статье обнаружены неоформленные ссылки: ' + links + ' шт. Оформить все через cite web?')) {
replace_all_link = 1;
}
else {
replace_all_link = 2;
return uns0;
}
if (typeof reflang !== 'undefined') {
lang = reflang;
}
else if (url.match(/\/ru\//g) !== null || url.match(/\/ru$/g) !== null)//если в url /ru/ или /ru$, ставить русский
{
lang = 'ru';
}
else if (url.match(/\/uk\//g) !== null || url.match(/\/uk$/g) !== null)//~
{
lang = 'uk';
}
else if (url.match(/\/en\//g) !== null || url.match(/\/en$/g) !== null)//~
{
lang = 'en';
}
else if (url.match(/\/de\//g) !== null || url.match(/\/de$/g) !== null)//~
{
lang = 'de';
}
else if (url.match(/\/fr\//g) !== null || url.match(/\/fr$/g) !== null)//~
{
lang = 'fr';
}
else if (url.match(/\/it\//g) !== null || url.match(/\/it$/g) !== null)//~
{
lang = 'it';
}
else if (url.match(/\/es\//g) !== null || url.match(/\/es$/g) !== null)//~
{
lang = 'es';
}
else if (url.match(/\/pl\//g) !== null || url.match(/\/pl$/g) !== null)//~
{
lang = 'pl';
}
else if (url.match(/\/bg\//g) !== null || url.match(/\/bg$/g) !== null)//~
{
lang = 'bg';
}
else if ((domain == 'de') || (domain == 'ru') || (domain == 'fr') || (domain == 'pl') || (domain == 'es') || (domain == 'it') || (domain == 'bg')) {
lang = domain;
}
else if (domain == 'cz') {
lang = 'cs';
}
else if (domain == 'ua' && typeof title !== 'undefined') {
if (title.match(/[ҐґЄєІіЇї]/g) === null) {
lang = 'ru';
}
else {
lang = 'uk';
}
}
else if (domain == 'rs') {
lang = 'sr';
}
if (typeof title === 'undefined') {//предупреждение для ссылок без описаний
title = '';
alert('Внимание! У ссылки ' + url + ' не заполнено описание! Обязательно впишите его в параметр title. См. ошибку в предварительном просмотре.');
}
else
{
title = title.replace(/{{ref-[a-z][a-z]}}/g, '');//мусор в title
title = title.replace(/\[/g, '[');//спецсимвол в мнемонику
title = title.replace(/\|/g, '|');//спецсимвол в мнемонику
}
if (typeof dead === 'undefined')
{
deadparam = ' |deadlink = no';
}
else//не вписывать дату доступа, если ссылка мертва
{
accessdate = '';
archivedate = '';
if (funcdead == 'недоступная ссылка')
{
dead.replace(/(http[^}\| ]+)?.+(\d\d\d\d\-\d\d\-\d\d)?/g, function ( line, url, archivedate )
{
if (typeof url === 'undefined') { var url = ''; }
if (typeof archivedate === 'undefined') { var archivedate = ''; }
deadparam = ' |archiveurl = ' + url + ' |archivedate = ' + archivedate + ' ';
accessdate = archivedate;
return line;
});
}
else if (funcdead == 'wayback')
{
dead.replace(/(http[^}\| ]+).+(([\d]{4})([\d]{2})([\d]{2})[\d]{6})/g, function ( line, url, datetime, year, month, day )
{
deadparam = ' |archiveurl = ' + 'http://web.archive.org/web/' + datetime + '/' + url + ' |archivedate = ' + year + '-' + month + '-' + day + ' ';
accessdate = year + '-' + month + '-' + day;//дата архива как дата доступа
return line;
});
}
else if (funcdead == 'архивировано')
{
dead.replace(/(http[^}\| ]+).+(\d\d\d\d\-\d\d\-\d\d)/g, function ( line, url, archivedate )
{
if (typeof url === 'undefined') { var url = ''; }
if (typeof archivedate === 'undefined') { var archivedate = ''; }
deadparam = ' |archiveurl = ' + url + ' |archivedate = ' + archivedate;
accessdate = archivedate;//дата архива как дата доступа
return line;
});
}
deadparam = deadparam + ' |deadlink = yes ';
}
url = url.replace(/\|/g, '%7C');//спецсимвол в мнемонику
url = url.replace(/\{/g, '%7B');//спецсимвол в мнемонику
url = url.replace(/\}/g, '%7D');//спецсимвол в мнемонику
var line = '{{cite web|author = |url = ' + url + ' |title = ' + title + ' |lang = ' + lang + ' |website = ' + website + ' |date = |accessdate = ' + accessdate + deadparam + '}}';
return line;
});
if ( replace_all_link == 1 )//участник сделал выбор о замене
{
r(/ *на *сайте *\'\'[a-z\.\-]+\'\', *[0-9]+ *[а-я]+ *[0-9]+(\<|\n)/g, '$1');
r(/ *на *сайте *\'\'[a-z\.\-]+(\'\')?(\<|\n)/g, '$2');
}
//Пользовательские функции
for ( i in window.wfWOPlugins ) {
if ( window.wfWOPlugins.hasOwnProperty( i ) ) {
window.wfWOPlugins[i]( txt, r );
}
}
}
//всякие функции
function r( r1, r2 )
{
txt = txt.replace( r1, r2 );
}
function request( URL )
{
var oRequest = new XMLHttpRequest();
oRequest.open('GET', URL, false);
oRequest.send(null);
return oRequest.responseText;
}
function attention( property, statement )
{
var regex = new RegExp('\\|' + property + '\\s*=\\s*(\\d*,?\\d*)', '');
var result = txt.match( regex );
if ((result != null) && ((result[1] < 10000) || (isNaN(result[1]))))
{
if ((txt.split(result[1]).length - 1) == 1)
{
label = 1;
return subst + 'АИ2' + statement.replace('replace', result[1]) + ' ';
}
}
return '';
}
function wb( mouth, t )
{
var article = request('https://ru.wikipedia.org/w/index.php?action=raw&title=' + mouth);
var new_mouth = article.match( /\|\s?Устье\s*=\s(.+)\n/ );
if (new_mouth == null)
{//озеро?
var new_mouth = article.match( /\|\s?Вытекающие\sреки\s*=\s(.+)\n/ );
if (new_mouth != null)
{
system = system + '/' + new_mouth[1];
wb( new_mouth[1], t++);
}
else
{//водохранилище
var new_mouth = article.match( /\|\s?Вытекающие\sводотоки\s*=\s(.+)\n/ );
if (new_mouth != null)
{
system = system + '/' + new_mouth[1];
wb( new_mouth[1], t++);
}
else
{
return 0;
}
}
}
else
{
system = system + '/' + new_mouth[1];
if (wb( new_mouth[1], t++) == 0)
{
var mouth_sea = article.match( /\|Бассейн\s*=\s(.+)\n/ );
if (mouth_sea != null)
{
system = system.replace(new_mouth[1], mouth_sea[1]);
}
}
}
return 1;
}
function processAllText()
{
txt = wpTextbox1.value;
var length = txt.length;
processText();
//r( /^[\n\r]+/, '' );
if ( txt == '' ){
if ( mw.config.get( 'wgPageName' ).indexOf('Категория:Притоки_') > -1 ){
txt = '{{' + 'КПР}}';
}
else if ( mw.config.get( 'wgPageName' ).indexOf('Категория:Бассейн_') > -1 ){
txt = '{{' + 'КБР|||}}';
}
else if ( mw.config.get( 'wgPageName' ).indexOf('Обсуждение_участника:') > -1 ){
txt = request('https://ru.wikipedia.org/w/index.php?action=raw&title=Проект:Водные_объекты/Сообщения_участникам');
txt = txt.substring(0,txt.indexOf('[[Категория'));
label = 3;
}
}
wpTextbox1.value = txt;
//комментарий
var comment = '';
var comment_line = wpSummary.value;
if (comment_line.indexOf('[[ПРО:ВО]]') == -1)
{
if ((comment_line.length > 0) && (comment_line.indexOf('*/ ') == -1))
{
comment = ', ';
}
if (label == 2)
{
comment = comment + 'восстановлена утерянная сноска с помощью скрипта [[ПРО:ВО]]';
}
else if (label == 3)
{
comment = '[[Проект:Водные объекты]]';
}
else if (length != txt.length)
{
comment = comment + 'автозамена скриптом [[ПРО:ВО]]';
}
else if (label == 1)
{
comment = comment + 'выявлено разногласие данных с помощью скрипта [[ПРО:ВО]]';
}
wpSummary.value = comment_line + comment;
}
txt = '';
comment_line = '';
if ( window.auto_comment &&
window.insertSummary &&
!document.editform.wpSection.value
) {
window.insertSummary( 'Скрипт ПРО:ВО' );
}
}
processAllText();
}
function registerWikificatorTool() {
registerTool( {
name: 'wikificator',
position: 200,
title: 'Скрипт ПРО:ВО',
label: 'Викификатор ПРО:ВО — автоматический обработчик текста',
callback: Wikify_WO,
classic: {
icon: '//upload.wikimedia.org/wikipedia/commons/9/99/Code-selected.png',
},
visual: {
icon: '//upload.wikimedia.org/wikipedia/commons/9/99/Code-selected.png',
modes: [ 'source' ],
addRightAway: true,
},
} );
}
if ( $.inArray( mw.config.get( 'wgAction' ), ['edit', 'submit'] ) !== -1 ) {
mw.loader.using( ['user.options', 'jquery.textSelection'], function () {
if ( mw.user.options.get('usebetatoolbar') === 1 ) {
$.when(
mw.loader.using( 'ext.gadget.registerTool' ),
$.ready
).then( registerWikificatorTool );
}
} );
}