Wikisłownikarz:Derbeth/sk.js: Różnice pomiędzy wersjami
Usunięta treść Dodana treść
0.19.0: zmiana zachowania popr. apostrofów dla niepolskich sekcji, popr. błędu z {blm}, zmiana sortowania interwiki |
0.20.0 - dodatkowa składnia skrótów, zamiana dwóch pauz na półpauzę |
||
Linia 3: | Linia 3: | ||
var wt_sk = new Object(); |
var wt_sk = new Object(); |
||
// wersja wyświetlana w dymku przy przycisku |
// wersja wyświetlana w dymku przy przycisku |
||
var wiktSkVer = '0. |
var wiktSkVer = '0.20.0'; |
||
// jeśli =true, to usuwa np. coś takiego: rzeczownik, rodzaj żeński, męski |
// jeśli =true, to usuwa np. coś takiego: rzeczownik, rodzaj żeński, męski |
||
wt_sk.usuwajWszystkieNiewypelnione = false; |
wt_sk.usuwajWszystkieNiewypelnione = false; |
||
Linia 264: | Linia 264: | ||
str = str.replace(/\[http:\/\/([^\]]*)\|([^\]]*)\]/gi, "[http://$1 $2]"); |
str = str.replace(/\[http:\/\/([^\]]*)\|([^\]]*)\]/gi, "[http://$1 $2]"); |
||
// [[dobr<y?a>]] -> [[dobry|dobra]] |
// [[dobr<y?a>]] -> [[dobry|dobra]], [[<s?S>łowo]] -> [[słowo|Słowo]], [[<s?S>łow<o?a>]] -> [[słowo|Słowa]] |
||
str = str.replace(/\[\[<([^|#\]=?]+)\?([^|#\]=>]*)>([^|#\]=>]+)(<([^|#\]=?]+)\?([^|#\]=>]*)>)?\]\]/g, '[[$1$3$5|$2$3$6]]'); |
|||
str = str.replace(/\[\[([^|#\]=<]+)<([^|#\]=?]+)\?([^|#\]=>]*)>(=[^|#\]=]+)?\]\]/g, '[[$1$2$4|$1$3]]'); |
str = str.replace(/\[\[([^|#\]=<]+)<([^|#\]=?]+)\?([^|#\]=>]*)>(=[^|#\]=]+)?\]\]/g, '[[$1$2$4|$1$3]]'); |
||
Linia 593: | Linia 594: | ||
str = str.replace(/\{\{ *PAGENAME *\}\}/g, '{{subst:PAGENAME}}'); |
str = str.replace(/\{\{ *PAGENAME *\}\}/g, '{{subst:PAGENAME}}'); |
||
str = str.replace(/\<strike\>([^\n\<]+)\<\/strike\>/gm, "<s>$1</s>"); |
str = str.replace(/\<strike\>([^\n\<]+)\<\/strike\>/gm, "<s>$1</s>"); |
||
str = str.replace(/ -- /g, ' – '); // na ndash (półpauzę) |
|||
str = str.replace(/ +/g, " "); // usuwa podwójne spacje |
str = str.replace(/ +/g, " "); // usuwa podwójne spacje |
||
str = str.replace(/ +$/gm, ""); // wyrzucenie spacji z końca linii |
str = str.replace(/ +$/gm, ""); // wyrzucenie spacji z końca linii |
||
Linia 824: | Linia 826: | ||
}); |
}); |
||
str = |
str = changeTextBetween(str, '{{etymologia}}', '{{uwagi}}', poprawCudzyslowy); |
||
str = changeTextUntil(str, '{{uwagi}}', '{{źródła}}', poprawCudzyslowy); |
str = changeTextUntil(str, '{{uwagi}}', '{{źródła}}', poprawCudzyslowy); |
||
Wersja z 02:07, 23 mar 2009
/*<pre><nowiki>*/
var wt_sk = new Object();
// wersja wyświetlana w dymku przy przycisku
var wiktSkVer = '0.20.0';
// jeśli =true, to usuwa np. coś takiego: rzeczownik, rodzaj żeński, męski
wt_sk.usuwajWszystkieNiewypelnione = false;
wt_sk.icon = 'http://upload.wikimedia.org/wikipedia/commons/2/2e/Button_broom.png';
wt_sk.waitIcon = 'http://upload.wikimedia.org/wikipedia/commons/c/cc/Bouton_Vandale2.png';
wt_sk.inactiveIcon = 'http://upload.wikimedia.org/wikipedia/commons/f/f3/Button_broom2.png';
wt_sk.buttonId = 'wiktSkButton';
wt_sk.jezykBezJezyk = 'dżuhuri|esperanto|ewe|greka|hindi|ido|interlingua|inuktitut|jidysz|ladino|lingala|lojban|novial|pitjantjatjara|sanskryt|slovio|tetum|tok pisin|tupinambá|użycie międzynarodowe|volapük|zarfatit|znak chiński';
wt_sk.polskieZnakiSort = new Array('aä','ą','ã','á','b','c','ć','d','e','ę','f',
'g','h','i','j','k','l','ł','m','n','oö','ó','p','q','r','s','ś','t','uü','v',
'w','x','y','z','ź','ż');
wt_sk.SORT_NOTFOUND = 1000;
wt_sk.preloadedWaitIcon = new Image(23,22);
// tablica typu 'rosyjski' => funkcja przyjmująca tekst rosyjskiej funkcji i zwracająca poprawiony
wt_sk.poprawSekcje = Array();
wt_sk.kolejnoscZnaku = function(znak) {
for (var i=0; i<wt_sk.polskieZnakiSort.length; ++i) {
if (wt_sk.polskieZnakiSort[i].indexOf(znak) != -1) {
return i;
}
}
return wt_sk.SORT_NOTFOUND;
}
// -1 gdy str1 jest mniejszy od str2, 0 gdy równe, 1 gdy str2 > str1
wt_sk.porownajNapisy = function(str1,str2) {
// mniejsza z długości
var len = (str1.length < str2.length) ? str1.length : str2.length;
str1 = str1.toLocaleLowerCase();
str2 = str2.toLocaleLowerCase();
for (var i=0; i<len; ++i) {
var sort1 = wt_sk.kolejnoscZnaku(str1.charAt(i));
var sort2 = wt_sk.kolejnoscZnaku(str2.charAt(i));
if (sort1 == wt_sk.SORT_NOTFOUND && sort2 == wt_sk.SORT_NOTFOUND) { // dwa niepolskie znaki
var locComp = str1.charAt(i).localeCompare(str2.charAt(i));
if (locComp != 0) {
return locComp;
}
} else {
if (sort1 < sort2) return -1;
if (sort1 > sort2) return 1;
}
}
return (str1.length < str2.length) ? -1 : ((str1.length < str2.length) ? 0 : 1);
}
wt_sk.trim = function(str) {
str = str.replace(/ $/gm, "");
return str.replace(/^\s*|\s*$/g, "");
}
function TurnFirstToLower(input) {
if (input != "")
{
var input = wt_sk.trim(input);
var temp = input.substr(0, 1);
return temp.toLowerCase() + input.substr(1, input.length);
}
else
return "";
}
wt_sk.escapeRegex = function(txt) {
txt = txt.replace(/([{[\]|()])/g, "\\$1");
return txt;
}
// changeFunc - funkcja, która bierze tekst i zwraca tekst po zmianach
// begin, end - czysty tekst (nie wyr. reg.), między którymi ma zawierać się
// tekst, który będzie podany do funkcji
// jeśli begin i end nie zostaną znalezione, nic nie jest edytowane
function changeTextBetween(str, begin,end,changeFunc) {
var matches = str.split(new RegExp(wt_sk.escapeRegex(end)));
if(matches.length == 2) {
var mid = matches[0], after = matches[1];
var midMatches = mid.split(new RegExp(wt_sk.escapeRegex(begin)));
if (midMatches.length == 2) {
var before = midMatches[0], target = midMatches[1];
target = changeFunc(target);
str = before + begin + target + end + after;
}
}
return str;
}
// zmienia tekst od wystąpienia "begin" do końca lub wystąpienia "optionalEnd"
function changeTextUntil(str, begin,optionalEnd,changeFunc) {
var matches = str.split(new RegExp(wt_sk.escapeRegex(begin)));
if(matches.length == 2) {
var before = matches[0], mid = matches[1];
var midMatches = mid.split(new RegExp(wt_sk.escapeRegex(optionalEnd)));
if (midMatches.length == 2) {
var target = midMatches[0], after = midMatches[1];
target = changeFunc(target);
str = before + begin + target + optionalEnd + after;
} else if (midMatches.length == 1) {
target = mid;
target = changeFunc(target);
str = before + begin + target;
}
}
return str;
}
function changeTextAfter(str,splitBy,changeFunc) {
var m = str.split(new RegExp(wt_sk.escapeRegex(splitBy)));
if (m.length == 2) {
var before = m[0];
var text = m[1];
text = changeFunc(text);
str = before + splitBy + text;
}
return str;
}
wt_sk.buttonIsActive = function() {
if (!wgUserGroups) {
return false;
}
for (var i=0; i<wgUserGroups.length; ++i) {
if (wgUserGroups[i] == 'autoconfirmed') {
return true;
}
}
return false;
}
// Dodaje opis w opisie zmian, o ile takiego nie bylo
wt_sk.dodajOpis = function()
{
var opis = "[[WS:NSK|formatowanie automatyczne]]";
if ("a b".split(/( )/g).length != 3) { // IE albo inny diabeł
opis += ' (niepełne działanie pod Internet Explorerem)';
}
var wpS = document.forms.editform.wpSummary;
wpS.value=wt_sk.trim(wpS.value);
if (wpS.value.indexOf(opis)<0)
if (wpS.value.substring(wpS.value.length,wpS.value.length-2)=="*\/")
wpS.value = wpS.value +" "+ opis;
else
if (wpS.value.length>0)
wpS.value = wpS.value +", "+ opis;
else
wpS.value = opis;
}
wt_sk.verify = function() {
var wpS = document.forms.editform.wpSummary;
var warnJaki = '(UWAGA: sekcja "język jaki" - skrypt SK nie dokończył działania)';
wpS.value = wpS.value.replace(warnJaki, '');
if (document.editform.wpTextbox1.value.match(/\{\{język jaki\}\}/)) {
wpS.value += ' ' + warnJaki;
}
}
wt_sk.rozne = function(str)
{
str = str.replace(/\t/g, " "); // Zamienia tabulatory na spacje
// Standaryzujemy końce wiersza
str = str.replace(/(\r)(\n)/gm, "$2"); // Konwersja uszkodzonych końców wiersza UNIX-DOS
str = str.replace(/\r/gm, "\n");
str = str.replace(/(\r)(\n)/gm, "$2");
str = str.replace(/^ ? ? (\n)/gm, "$1"); // Usuwanie spacji w wierszy z samymi spacjami
str = str.replace(/(\n\n)\n+/gm, "$1"); // Usuwanie drugiej pustej linii - może być tylko jedna
//Spacje na końcach i początkach wierszy
str = str.replace(/ ? ?<br \/> ? ?/gi, "<br />"); // Usuwamy spacje sprzed i zza znaku łamania wiersza
str = str.replace(/^ /gm, ""); // Usuwamy spacje z początku wiersza
str = str.replace(/ $/g, ""); // Usuwamy spacje z końca wiersza
// Naprawa kategorii
str = str.replace(/\[\[ ?([Cc]ategory|[Kk]ategoria) ?: ?/g, "[[Kategoria:");
str = str.replace(/(\]\])(\[\[Kategoria:)/g, "$1\n$2");
// Jednostki
str = str.replace(/–|–|–/g, "–");
str = str.replace(/—|—|—/g, "—");
str = str.replace(/(cm| m|km|mi)<sup>2<\/sup>/g, "$1²");
str = str.replace(/²/g, "²");
str = str.replace(/°/g, "°");
//replace html with wiki syntax
if( !str.match(/'<\/?[ib]>|<\/?[ib]>'/gi) )
{
str = str.replace(/<i>(.*)<\/i>/gi, "''$1''");
str = str.replace(/<b>(.*)<\/b>/gi, "'''$1'''");
}
str = str.replace(/<br\/>/gi, "<br />");
str = str.replace(/<br>/gi, "<br />");
str = str.replace(/ ? ?<br \/> ? ?/gi, "<br />");
// Inne
// Wymieniamy w linkach [[w:pl: na [[w:
str = str.replace(/\[\[w\:pl\:/gi, "[[w:");
// Opuszczanie "szablon:" w {{szablon:ddd}}
str = str.replace(/\{\{[\s]*szablon[\s]*:[\s]*/gi, "{{");
return wt_sk.trim(str);
}
// Dekodowanie linków z [[w:Wikipedysta:Nux/wp sk.js]]
wt_sk.rLinkdecode = function(a,name,anchor,end)
{
try
{
name=decodeURIComponent(name)
anchor=decodeURIComponent(anchor.replace(/\.([0-9A-F]{2})\.([0-9A-F]{2})/g,'%$1%$2'))
a='[['+name+anchor+end;
}
catch(err){}
return a.replace(/_/g,' ');
}
//formats links in standard fashion
wt_sk.linkfixer = function(str, checkImages)
{
// str = str.replace(/\]\[/g, "] [");
// [[Kto%C5%9B_jaki%C5%9B#co.C5.9B|...]]→[[Ktoś jakiś#coś|...]]
str = str.replace(/\[\[([^|#\]]*)([^|\]]*)(\||\]\])/g, wt_sk.rLinkdecode);
var m = str.match(/\[?\[[^\]]*\]\]?/g);
if (m)
{
for (var i = 0; i < m.length; i++)
{
var x = m[i].toString();
var y = x;
//internal links only
if ( !y.match(/^\[?\[http:\/\//mi) && !y.match(/^\[?\[image:/mi) )
{
if (y.indexOf(":") == -1 && y.substr(0,3) != "[[_" && y.indexOf("|_") == -1)
{
if (y.indexOf("|") == -1)
y = y.replace(/_/g, " ");
else
y = y.replace( y.substr(0, y.indexOf("|")), y.substr(0, y.indexOf("|")).replace(/_/g, " "));
}
y = y.replace(/ ?\| ?/, "|");
}
str = str.replace(x, y);
}
}
//repair bad internal links
str = str.replace(/\[\[ +([^\]]*)\]\]/g, "[[$1]]");
str = str.replace(/\[\[([^\]]*)( |_)#([^\]]*)\]\]/g, "[[$1#$3]]");
str = str.replace(/ +(\]\]|\}\})/g, '$1');
str = str.replace(/\{\{ +/g, '{{');
//repair bad external links
str = str.replace(/\[?\[http:\/\/([^\]]*)\]\]?/gi, "[http://$1]");
str = str.replace(/\[http:\/\/([^\]]*)\|([^\]]*)\]/gi, "[http://$1 $2]");
// [[dobr<y?a>]] -> [[dobry|dobra]], [[<s?S>łowo]] -> [[słowo|Słowo]], [[<s?S>łow<o?a>]] -> [[słowo|Słowa]]
str = str.replace(/\[\[<([^|#\]=?]+)\?([^|#\]=>]*)>([^|#\]=>]+)(<([^|#\]=?]+)\?([^|#\]=>]*)>)?\]\]/g, '[[$1$3$5|$2$3$6]]');
str = str.replace(/\[\[([^|#\]=<]+)<([^|#\]=?]+)\?([^|#\]=>]*)>(=[^|#\]=]+)?\]\]/g, '[[$1$2$4|$1$3]]');
//Wikisłownik: [[coś=polski]], [[coś=język polski]] -> [[coś#coś (język polski)|coś]]
var skrotyJezykow = {'da': 'język duński', 'dsb': 'język dolnołużycki', 'de': 'język niemiecki',
'en': 'język angielski', 'es': 'język hiszpański', 'eo': 'esperanto',
'fr': 'język francuski', 'hsb': 'język górnołużycki', 'it': 'język włoski',
'pl': 'język polski', 'sv': 'język szwedzki'};
for (var skrot in skrotyJezykow) {
str = str.replace(new RegExp('='+skrot+'(]]|\\|)', 'g'), '='+skrotyJezykow[skrot]+'$1');
}
dopiszJezyk = function(nazwa) {
if (nazwa.search(/^język/) == -1 && nazwa.search(new RegExp(wt_sk.jezykBezJezyk,'i')) == -1) {
nazwa = 'język ' + nazwa;
}
return nazwa;
}
str = str.replace(/\[\[([^|#\]=]+)=([^|#\]]+)\|/g, function(m, m1, m2) {
m2 = dopiszJezyk(m2);
return '[['+m1+'#'+m1+' ('+m2+')|';
});
str = str.replace(/\[\[([^|#\]=]+)=([^|#\]]+)\]\]/g, function(m, m1, m2) {
m2 = dopiszJezyk(m2);
return '[['+m1+'#'+m1+' ('+m2+')|'+m1+']]';
});
return wt_sk.trim(str);
}
//fixes images
wt_sk.imagefixer = function(str)
{
// Naprawa odwołań do grafiki
str = str.replace(/\[\[(Image|Grafika|File|Plik)\: */gmi, "[[Plik:");
str = str.replace(/\[\[(Image|Grafika|File|Plik)\: *(Image|Grafika|File|Plik)\: */gmi, "[[Plik:");
//remove external images
str = str.replace(/\[?\[(?:image|grafika|file|plik):http:\/\/([^\]]*)\]\]?/gi, "[http://$1]");
//fix links within internal images
var m = str.match(/\[\[(?:image|grafika|file|plik):[^\[\]\n]*(\[?\[[^\]\n]*\]*[^\[\]\n]*)*\]+/gi);
if (m)
{
for (var i = 0; i < m.length; i++)
{
var x = m[i].toString();
var y = x;
y = y.replace(/^\[\[p/mi, "P").replace(/\]\]$/, ""); // P bo Plik
y = y.replace(/(\[[^\]]*)$/, "$1]");
y = wt_sk.linkfixer(y, true);
y = "[[" + y + "]]";
str = str.replace(x, y);
}
}
return wt_sk.trim(str);
}
//simplifies some links e.g. [[dog|dog]] to [[dog]] and [[dog|dogs]] to [[dog]]s
wt_sk.linksimplifyer = function(str)
{
// ważne: nie powinien poprawiać Massen[[Sprint|sprint]], dlatego wcześniej
// musi być spacja albo cudzysłów
var m = str.match(/(?:^| |\n|,|;|'|"|\u201E)\[\[([^\[]*)\|([^\[]*)\]\]/g); //"'
if (m)
{
for (var i = 0; i < m.length; i++)
{
var n_arr = m[i].toString().match(/\[\[([^\[]*)\|([^\[]*)\]\]/);
var n = n_arr[0];
var a = n_arr[1];
var b = n_arr[2];
if (b.indexOf(a) == 0)
{
var k = n.replace(/\[\[([^\]\|]*)\|(\1)([a-zA-Ząśżźćęń󳥌ŻŹĆĘŃÓŁ]*)\]\]/i, "[[$2]]$3");
str = str.replace(n, k);
}
}
}
str = str.replace(/\[\[([^\]\|]+)\|([^\]\|]+)\]\]([A-Za-z\'][A-Za-z]*)([\.\,\;\:\"\u201D\!\?\)\s\n]|$)/gm, "[[$1|$2$3]]$4"); //"'
return str;
}
wt_sk.fixNewlines = function(str) {
str = str.replace(/[\r\n][\r\n][\r\n]+/gm, "\n\n");
str = str.replace(/(\r)(\n)/gm, "$2"); // Konwersja uszkodzonych końców wiersza UNIX-DOS
str = str.replace(/\r/g, '');
return str;
}
wt_sk.wiktionary = function(str)
{
// czyszczenie kodu przed przystąpieniem do pracy
str = str.replace(/^-{3,}/mg, ''); // wyrzucenie poziomych linii ----
str = str.replace(/ +/g, " "); // usuwa podwójne spacje
str = str.replace(/ +$/gm, ""); // wyrzucenie spacji z końca linii
str = str.replace(/; +;/g,';');
str = str.replace(/ ; /g, '; ');
str = str.replace(/^(\*+\:*)([^ \n\*\:])/gmi, "$1 $2"); // *ala -> * ala
str = str.replace(/^(\:+)([^ \n\*\:])/gmi, "$1 $2"); // :ala -> : ala
str = str.replace(/\{\{zobtlum/gi, "{{zobtłum");
{
var prefix = ' *\\( *\\{\\{ *';
str = str.replace(new RegExp(prefix+'język ', 'ig'), ' ({{język ');
str = str.replace(new RegExp(prefix+'('+wt_sk.jezykBezJezyk+') *\\}\\} *\\)', 'ig'), ' ({{$1}})');
}
str = wt_sk.fixNewlines(str);
str = str.replace(/(?:zobacz|zob\.|patrz) (?:też|także|również)\:? ?\[\[w\: *([^\|\]]+)\|([^\]]+)\]\] (?:w|na) Wikipedii\.?/gi, "{{wikipedia|$1|$2}}");
{
var titleEsc = wt_sk.escapeRegex(wgTitle);
var re=new RegExp("\\{\\{wikipedia\\|"+titleEsc+"\\|"+titleEsc+"\\}\\}","gmi");
str = str.replace(re, "{{wikipedia}}");
}
{
var wpMatches = str.match(/\{\{wikipedia\|([^|}]+)\|([^}]+)\}\}/gmi);
if (wpMatches) {
for (var i=0; i<wpMatches.length; ++i) {
var wpMatch = wpMatches[i].toString().match(/\{\{wikipedia\|([^|}]+)\|([^}]+)\}\}/i);
if (wpMatch && TurnFirstToLower(wpMatch[1]) == TurnFirstToLower(wpMatch[2])) {
str = str.replace(wpMatches[i], '{{wikipedia|'+wpMatch[1]+'}}');
}
}
}
}
str = str.replace(/\n+'*(?:zobacz|zob\.) (?:tez|też|także|również)\:?'* ?/gmi, "\nzobacz też: ");
str = str.replace(/(; |^\{\{uwagi\}\}\s*(?:\(\d+\.\d+\))?\s*)'*((?:zobacz|zob\.|patrz) (?:tez|też|także|takze|również)|zob\.):?'*:? *→? */gmi, "$1zobacz też: ");
str = str.replace(/\r/g, '');
str = str.replace(/(\r)(\n)/gm, "$2"); // Konwersja uszkodzonych końców wiersza UNIX-DOS
str = str.replace(/\( +\{\{/g, '({{'); //ważne w tym miejscu, patrz linijka niżej!
// dzielimy hasło na część przed sekcjami językowymi i na sekcje językowe
var sectionRegex = /(==(?:[^(]+\([^{]){0,6}[^(]*\(\{\{[^}]+\}\} *\) *==)/g;
var firstSecIndex = str.search(sectionRegex);
// najpierw test, czy dzielenie działa dobrze; na IE nie działa
if (!str.match('{{język jaki}}') && firstSecIndex != -1 && "a b".split(/( )/g).length == 3) {
var beforeSections = str.substring(0,firstSecIndex);
beforeSections = poprawTekstPrzedSekcjami(beforeSections);
var allSections = str.substring(firstSecIndex);
var allSectionsArray = allSections.split(sectionRegex);
if (allSectionsArray.length > 0) {
// usuń pierwszy element tablicy, jeśli jest pusty
if(allSectionsArray[0].search(/\w/) == -1) {
allSectionsArray.shift();
}
// muszą być pary: nagł. języka - treść języka
if (allSectionsArray.length % 2 == 0) {
allSectionsArray = sortujSekcjeJezykowe(allSectionsArray);
var poczatekObcych = 0;
if (allSectionsArray[0].match(/{{\s*język polski\s*}}/i)) {
poczatekObcych = 1;
}
if (poczatekObcych > 0) {
allSectionsArray[0] = poprawSekcjePolska(allSectionsArray[0]);
}
for (var i=poczatekObcych; i<allSectionsArray.length; ++i) {
allSectionsArray[i] = poprawSekcjeObca(allSectionsArray[i]);
}
str = ''; // sklejanie
for (var i=0; i<allSectionsArray.length; ++i) {
//if (!allSectionsArray[i].match(/\n{2}$/)) {
allSectionsArray[i] += "\n\n";
allSectionsArray[i] = allSectionsArray[i].replace("[\n\r\f]*$", "\n\n");
//}
str += allSectionsArray[i];
}
} else {
alert('błąd w skrypcie - zły podział na sekcje!'+allSectionsArray);
}
}
beforeSections = beforeSections.replace(/[\n\r\f]+$/, "\n");
str = beforeSections + str;
}
str = str.replace(/''\[\[mianownik\|M\]\]''/gi, "{{M}}");
str = str.replace(/''\[\[dopełniacz\|D\]\]''/gi, "{{D}}");
str = str.replace(/''\[\[celownik\|C\]\]''/gi, "{{C}}");
str = str.replace(/''\[\[biernik\|B\]\]''/gi, "{{B}}");
str = str.replace(/''\[\[narzędnik\|N\]\]''/gi, "{{N}}");
str = str.replace(/''\[\[miejscownik\|Ms\]\]''/gi, "{{Ms}}");
str = str.replace(/''\[\[wołacz\|W\]\]''/gi, "{{W}}");
str = str.replace(/\]\] ''(m|f|n|w|c)''( *$| \(|,|;)/gm, "]] {{$1}}$2");
str = str.replace(/ \{\{c\}\}/g, ' {{w}}'); // w szwedzkim bywa ''c'' zamiast ''w''
str = str.replace(/''\[\[liczba pojedyncza\|lp\]\]''/gi, "{{lp}}");
str = str.replace(/''\[\[liczba mnoga\|lm\]\]''/gi, "{{lm}}");
str = str.replace(/''lp''/g, "{{lp}}");
str = str.replace(/''lm''/g, "{{lm}}");
str = str.replace(/''blp.?''/g, "{{blp}}");
str = str.replace(/''blm.?''/g, "{{blm}}");
str = str.replace(/''im\.''/gi, "{{ims}}");
str = str.replace(/''\[\[rzeczownik\|rzecz.\]\]''/gi, "{{rzecz}}");
str = str.replace(/''\[\[czasownik\|czas.\]\]''/gi, "{{czas}}");
str = str.replace(/''\[\[przymiotnik\|przym.\]\]''/gi, "{{przym}}");
str = str.replace(/''\[\[przysłówek\|przysł.\]\]''/gi, "{{przysł}}");
str = str.replace(/''\[\[anatomia\|anat.\]\]''/gi, "{{anat}}");
str = str.replace(/''\[\[biologia\|biol.\]\]''/gi, "{{biol}}");
str = str.replace(/''\[\[botanika\|bot.\]\]''/gi, "{{bot}}");
str = str.replace(/''\[\[chemia\|chem.\]\]''/gi, "{{chem}}");
str = str.replace(/''\[\[mitologia\|mit.\]\]''/gi, "{{mit}}");
str = str.replace(/''\[\[potocznie\|pot.\]\]''/gi, "{{pot}}");
str = str.replace(/''\[\[religia\|rel.\]\]''/gi, "{{rel}}");
str = str.replace(/''\[\[zoologia\|zool.\]\]''/gi, "{{zool}}");
str = str.replace(/''\[\[żeglarstwo\|żegl.\]\]''/gi, "{{żegl}}");
str = str.replace(/([^\'])''(czas)\.''([^\'])/g, "$1{{$2}}$3"); //'
str = str.replace(/([^\'])''(czas)\.''$/g, "$1{{$2}}"); //'
str = str.replace(/''\[\[przestarzale\|przest.\]\]''/gi, "{{przest}}");
{
var old;
do {
old = str;
str = str.replace(/([^\'])''(abl|adm|alb|amer|anat|ang|antrop|arab|aram|archit|astr|astrol|austr|austral|B|bezosob|białor|biochem|biol|Bm|bot|braz|bret|bryt|bud|bułg|C|chem|chin|chorw|cuk|czesk|D|dawn|dk|dłuż|dolnoniem|dosł|druk|du|duń|ekon|el|elektr|elektron|ent|etc|etw|eufem|ezot|far|farm|filoz|fiz|fizj|folk|franc|fryz|geogr|geol|geom|głuż|goc|góralska|górn|górnol|gram|grec|gwara|hand|hebr|hist|hiszp|hydrol|ims|inform|irl|iron|isl|itd|jęz|jid|jmd|jmdm|jmdn|karc|kolej|komp|książk|kulin|lekcew|licz|lingw|lit|liter|litew|lm m|lm nm|log|lotn|lud|łac|łot|M|mac|mar|masz|mat|mech|med|meteorol|mil|miner|mit|mosob|mot|Ms|muz|N|ndk|ng|ngt|niem|nieodm|nieos|nl|nłac|nmosob|Nn|norw|nprzech|obraź|odczas|odprzym|odrzecz|ofic|ornit|pejor|pers|PIE|podn|poet|pogard|pol|poligr|polit|porów|porównaj|port|pot|pragerm|pranord|praw|przech|przecz|przedr|przen|przest|przesz|przyim|przym|przysł|przysz|psych|qu|reg|rel|roln|ros|rozk|rum|rzadz|rzecz|sanskr|sb|scs|serb|slang|słc|słń|sport|staroang|starofranc|starofryz|starogr|staroirl|staronord|starop|starosłow|staroszw|sth|stomat|stopn|strbr|strcz|swh|swn|syst|szw|szwajc|środ|śwn|także|techn|ter|tłum|turk|UK|ukr|US|W|wet|wędk|węg|wł|włók|wojsk|wulg|zdrobn|zgrub|zobacz|zool|zwł|żart|żegl)\.''([^\']|$)/g, "$1{{$2}}$3");
} while (old != str);
}
str = str.replace(/''(rzecz|przym|czas|przysł|zdrobn|US|UK)''(?!')/g, "{{$1}}");
str = str.replace(/([^\'])''(?:astron\.?|astronomia)''([^\'])/g,"$1{{astr}}$2");
str = str.replace(/([^\'])''(?:astrol\.?|astrologia)''([^\'])/g,"$1{{astrol}}$2");
str = str.replace(/([^\'])''biologia''([^\'])/g,"$1{{biol}}$2");
str = str.replace(/([^\'])''mitologia''([^\'])/g,"$1{{mit}}$2");
str = str.replace(/([^\'])''dawna nazwa''([^\'])/g,"$1{{daw}}$2");
str = str.replace(/([^\'])''dokonany''([^\'])/g,"$1{{dk}}$2");
str = str.replace(/([^\'])''dosłownie''([^\'])/g,"$1{{dosł}}$2");
str = str.replace(/([^\'])''drukarstwo''([^\'])/g,"$1{{druk}}$2");
str = str.replace(/([^\'])''(?:ekonomia|ekonom\.?)''([^\'])/g,"$1{{eko}}$2");
str = str.replace(/([^\'])''elektronika''([^\'])/g,"$1{{elektron}}$2");
str = str.replace(/([^\'])''(?:eufemistyczni?e|eufemizm)''([^\'])/g,"$1{{eufem}}$2");
str = str.replace(/([^\'])''farmac\.?''([^\'])/g,"$1{{farm}}$2");
str = str.replace(/([^\'])''filozo?f?\.?''([^\'])/g,"$1{{filo}}$2");
str = str.replace(/([^\'])''i tak dalej''([^\'])/g,"$1{{itd}}$2");
str = str.replace(/([^\'])''informatyka''([^\'])/g,"$1{{inform}}$2");
str = str.replace(/([^\'])''potocznie''([^\'])/g,"$1{{pot}}$2");
str = str.replace(/([^\'])''prawo''([^\'])/g,"$1{{praw}}$2");
str = str.replace(/([^\'])''milit\.''([^\'])/g,"$1{{mil}}$2");
str = str.replace(/\{\{dawn\}\}/g, '{{daw}}'); // nie ma takiego skrótu wg SJP PWN
str = str.replace(/([^\'])''(?:(?:wyraz(?:'' '')| )nieodmienny|nieodmienne)''([^\'])/g,"$1{{nieodm}}$2");
str = str.replace(/([^\'])''(?:bez liczby mnogiej|bez lm|bez \{\{lm\}\})''([^\'])/g,"$1{{blm}}$2");
str = str.replace(/([^\'])''(?:bez liczby pojedynczej|bez lp|bez \{\{lp\}\})''([^\'])/g,"$1{{blp}}$2");
if (wgTitle != "brak") {
str = str.replace(/([^\'])(?:''bez'' \{\{lm\}\}|\{\{lm\}\} brak)\b([^\'])/g,"$1{{blm}}$2");
str = str.replace(/([^\'])(?:''bez'' \{\{lp\}\}|\{\{lp\}\} brak)\b([^\'])/g,"$1{{blp}}$2");
}
str = str.replace(/([^\'])''bezokol.?''([^\'])/g,"$1''bezokolicznik''$2");
str = str.replace(/([^\'])''bzosob.?''([^\'])/g,"$1{{bezosob}}$2");
str = str.replace(/([^\'])''liczba mnoga''([^\'])/g,"$1{{lm}}$2");
str = str.replace(/([^\'])''liczba podwójna''([^\'])/g,"$1{{du}}$2");
str = str.replace(/([^\'])''liczba pojedyncza''([^\'])/g,"$1{{lp}}$2");
str = str.replace(/([^\'])''niedokonany''([^\'])/g,"$1{{ndk}}$2");
/*str = str.replace(/([^\'])''rodzaj żeński''([^\'])/g,"$1{{f}}$2");
str = str.replace(/([^\'])''rodzaj męski''([^\'])/g,"$1{{m}}$2");
str = str.replace(/([^\'])''rodzaj nijaki''([^\'])/g,"$1{{n}}$2");
str = str.replace(/([^\'])''rodzaj wspólny''([^\'])/g,"$1{{w}}$2");*/
// 'zamiana nawet, gdy nie ma kropki - niepotrzebne, bo robione już wyżej
//str = str.replace(/pokrewne\}\}\s\'\'(rzecz|czas|przym|przysł|zdrobn)\'\'/g, "pokrewne}} {{$1}}");
// 'na koniec dodanie średnika przed {{rzecz}}
str = str.replace(/, \{\{(rzecz|przym|czas|przysł|zdrobn|ims)\}\}/g, "; {{$1}}");
str = str.replace(/\]\] \{\{(rzecz|przym|czas|przysł|zdrobn|przest|ims)\}\} \[\[/g, "]]; {{$1}} [[");
// 'usuwanie niewypełnionych części szablonu
str = str.replace(/(\<\!\-\-)?''(\[\[prosty\|)?Proste(\]\])? (\[\[)?zdanie(\]\])? (\[\[)?z(\]\])? (\[\[)?charakterystyczny(\]\])?m (\[\[)?użycie(\]\])?m ((''')|(\[\[słowo\|))?słowa((''')|(\]\]))?\.''( \→ (\[\[tłumaczenie\|)?Tłumaczenie(\]\])? (\[\[)?na(\]\])? (''')?polski(''')?\.)?(\-\-\>)?/gi, " ");
str = str.replace(/\<\!\-\-\s\{\{IPA\|[^\}]+\}\}\s\-\-\>/gi, " ");
str = str.replace(/\:\s\((\d\.\d\))\s\[\[słowo\]\] \[\[po\]\] \[\[polski\|polsku\]\] \[\[lub\]\] \[\[definicja\]\]/gi, "$1");
str = str.replace(/ +\[\[Aneks:IPA\|IPA\]\](: \/ *\/)? */g, ' ');
str = str.replace(/ *\<\!\-\- *(?:\[\[Aneks\:IPA\|[^\]\n]*\]\]|\{\{IPA[^\}\n]*\}\})[^\n]*\-\-\> */g, ' ');
str = str.replace(/<!-- *-->/, ' ');
str = str.replace(/ *\{\{IPA\|?\}\} */g, ' ');
str = str.replace(/ ''przykład''( → tłumaczenie)?$/gm, '');
str = str.replace(/(: *\(\d\.\d{1,2}\)) *('' *'')? *→/g, '$1');
str = str.replace(/: *\((1\.(\d{2}|[2-9])|[2-9]\.\d{1,2})\) *\n/g, '');
str = str.replace(/: *\(1\.1\) *\n(: *\(\d\.\d{1,2}\))/g, '$1');
if (wt_sk.usuwajWszystkieNiewypelnione) {
str = str.replace(/''rzeczownik, rodzaj żeński, męski''/, "''rzeczownik''");
str = str.replace(/\* *angielski: \(1\.1\) \[\[ *\]\]\n?/g, '');
if (str.match(/ \[\[krótki\|krótka\]\] \[\[definicja\]\]/)) {
if (!str.match(/dopisać definicję/)) {
str = "{{dopracować|dopisać definicję}}\n" + str;
str = str.replace(/({{dopracować[^}]*}})\n{2,}/g,"$1\n");
}
}
}
str = str.replace(/''\[\[Do\]\]/g, "''[[do|Do]]");
str = str.replace(/''\[\[Nie\]\]/g, "''[[nie|Nie]]");
str = str.replace(/''\[\[Jak\]\]/g, "''[[jak|Jak]]");
str = str.replace(/^(\=+) *([^\n]*[^\=\n ]+) *\=+$/gm, "$1 $2 $1"); // naprawa nagłówków
// == hasło ({{język jakiś}} ) == -> == hasło ({{język jakiś}}) == (spacja zabija linki)
str = str.replace(/\}\} +\) *==$/gm, '}}) ==');
str = str.replace(/\n{2,}({{(wymowa|trans))/g, '\n$1'); // zbędny odstęp przed wymową/transliteracją
str = str.replace(/\[\[Aneks\:Język polski \- koniugacja ([IVX]+[abc]?)\|[kK]oniugacja [IVX]+[abc]?\]\]/g, "{{koniugacjaPL|$1}}");
str = str.replace(/\[\[Aneks\:Język hiszpański \- koniugacja (II?I?)\|[kK]oniugacja II?I?\]\]/g, "{{koniugacjaES|$1}}");
str = str.replace(/\<div style=\"[^"]+"\>\n\{\|\-\n\|\- style\=\"font\-size\:72px\; color\: black\; height\: 72px\;\"\n\|([^\n]+)\n\|\-\n\|([^\n]+)\n\|\}\n\<\/div\>/g,"{{litera|$1|$2}}");
str = str.replace(/\<table align\=right\>\<tr\>\<td width\=[0-9]* height\=[0-9]* bgcolor\=([^\s\>]+) ?(align\=center)?\>(\<font color\=[^\>]+\>)?([^\<]+)?(\<\/font\>)?\<\/td\>\<\/tr\>\<\/table\>/gi, "{{kolor|$1|$4}}");
// korekty poza zwykłymi hasłami - np. w przysłowiach
str = str.replace(/\{\{uzycie\}\}/i, '{{użycie}}');
str = str.replace(/\{\{Wersje\}\}/i, '{{wersje}}');
// usuwa średnik i przecinek z końca linii
str = str.replace(/(;|,)$/gm, "");
str = str.replace(/\}\}\[\[/g, '}} [[');
str = str.replace(/: : /g, ': '); // temp
str = str.replace(/\{\{ *PAGENAME *\}\}/g, '{{subst:PAGENAME}}');
str = str.replace(/\<strike\>([^\n\<]+)\<\/strike\>/gm, "<s>$1</s>");
str = str.replace(/ -- /g, ' – '); // na ndash (półpauzę)
str = str.replace(/ +/g, " "); // usuwa podwójne spacje
str = str.replace(/ +$/gm, ""); // wyrzucenie spacji z końca linii
str = wt_sk.fixNewlines(str);
return wt_sk.trim(str);
}
function poprawCudzyslowyWLinii(str) {
// podmiana cudzysłowów w kodzie HTML; po wszystkim zrobi się na odwrót
var TEMP_QUOTE = "\u1111";
str = str.replace(/(align|alt|background|bgcolor|border|cellpadding|cellspacing|class|clear|color|cols|dir|face|height|id|label|link|name|nowrap|rows|rules|scrolling|size|span|src|style|title|type|valign|width)="([^"]+)"/gm,"$1="+TEMP_QUOTE+"$2"+TEMP_QUOTE);
// nie poprawiamy cudzysłowów w celu linku
{
do {
var old = str;
str = str.replace(/(\[\[[^|\]"]*)"([^|\]]*[|\]])/g, "$1"+TEMP_QUOTE+"$2");
} while(old != str);
}
// zamiana wszystkich cudzysłowów na proste "
str = str.replace(/[\u00AB\u00BB\u2018\u2019\u201A\u201C\u201D\u201E\u2039\u203A\u300C\u300D\u300E\u300F\uFE30\uFE41\uFE42\uFE43\uFE44]/gm, '"');
// otwarcie 201E „ 00AB « 201A ‚ zamknięcie 201D ” 00BB » 2019
do {
old = str;
// ważna kolejność, bo w obu jest sąsiedztwo z ' - dla '''a'''". powinien być nawias zamykający
// z drugiej strony: ''"'''Cośtam''' - otwierający
str = str.replace(/>" /gm, ">\u201D ");
str = str.replace(/( '+|^|[\s\u201E=>\(\*\|])\"/gm, "$1\u201E"); //otw
str = str.replace(/\"([\s\u201D\:\.\!\?\)\]\}\<\;\'\,]|$)/gm, "\u201D$1"); //zam
str = str.replace(/(['])"/gm, "$1\u201E");
} while (old!=str);
do {
old = str;
str = str.replace(/(\u201E[^\u201D\u201E]*\u201E[^\u201D\u201E]*)\u201E/gm, "$1\"");
str = str.replace(/\u201D([^\u201D\u201E]*\u201D[^\u201D\u201E]*\u201D)/gm, "\"$1");
} while (old!=str);
do {
old = str;
str = str.replace(/(\u201E[^\u201D]*)\u201E/gm, "$1\u00AB");
str = str.replace(/(\u00AB[^\u201E\u201D\u00AB\u00BB]*)\u201D/gm, "$1\u00BB");
} while (old!=str);
str = str.replace(new RegExp(TEMP_QUOTE,'g'), '"'); // powrót do cudzysłowów w HTML-u
return str;
}
// rozbija tekst na linie i poprawia linijka po linijce
function poprawCudzyslowy(str) {
//var newline = "a b".split(/( )/g).length == 3 ? "\n" : "\r\n"; // "\r\n" is for IE or other sh*t
//var lines = str.split(new RegExp(newline));
var lines = str.split("\n");
for (var i=0; i<lines.length; ++i) {
lines[i] = poprawCudzyslowyWLinii(lines[i]);
}
str = lines.join("\n");
return str;
}
// przyjmuje tablicę w postaci par '==coś({{esperanto}})==','{{wymowa}}...'
function sortujSekcjeJezykowe(sekcje) {
var nieposort = new Array(sekcje.length/2);
for (var i=0; i<sekcje.length; i+=2) {
nieposort[i/2] = sekcje[i];
//http://dev.opera.com/articles/view/efficient-javascript/?page=2#stringaccumulator
nieposort[i/2] += sekcje[i+1];
}
return nieposort.sort(porownajSekcje);
}
// zwraca 'rosyjski', 'jidysz' itp.
function jezykSekcji(tekstSekcji) {
return tekstSekcji.match(/\(\s*\{\{(?:język)? *([^}]+)\}\}/i)[1];
}
function porownajSekcje(a,b) {
var jezykA = jezykSekcji(a);
var jezykB = jezykSekcji(b);
var priorytetRegExp = new RegExp('^(polski|znak chiński)');
if (jezykA.search(priorytetRegExp) != -1) {
return -1;
}
if (jezykB.search(priorytetRegExp) != -1) {
return 1;
}
//return jezykA.localeCompare(jezykB);
return wt_sk.porownajNapisy(jezykA,jezykB);
}
function jezykTlumaczenia(linia) {
var tlumRegEx = /^\* *([^:]+):/;
var jezyk = '';
var m = linia.match(tlumRegEx);
if (m) {
jezyk = m[1];
}
return jezyk;
}
function porownajTlumaczenia(a,b) {
return wt_sk.porownajNapisy(jezykTlumaczenia(a), jezykTlumaczenia(b));
}
// podstawowe założenie: PRZED wywołaniem tej funkcji wszystkie warianty
// zob. też itp. zostały zamienione na "zobacz też"
function poprawTekstPrzedSekcjami(str) {
str = str.replace(/^zobacz też\:?(?: *\[\[([^\n\]\|]*)\]\] ?\,?)/gmi, "{{zobteż|$1}}");
str = str.replace(/^zobacz też\:?(?: ?\[\[([^\n\]\|]*)\|([^\n\]\|]*)\]\] ?\,?)/gmi, "{{zobteż2|$1|$2}}");
str = str.replace(/(\{\{zobteż2\|[^\n\}\|]*(?:\|[^\n\}\|]*\|[^\n\}\|]*)*)(\}\})/gmi, "$1|$2");
var old;
do {
old=str;
str = str.replace(/(\{\{zobteż\|[^\n\}]+)\}\}(?: ?\[\[([^\n\]\|]*)\]\] ?\,?)/gmi, "$1|$2}}");
if (str.match(/(\{\{zobteż\|[^\n\}]+)\}\}(?: ?\[\[([^\n\]\|]*)\|([^\n\]\|]*)\]\] ?\,?)/gmi))
{
var old2;
do {
old2=str;
str = str.replace(/(\{\{zobteż\|[^\n\}\|]*)\|([^\n\}]*\}\} ?\[\[[^\n\]\|]*\|[^\n\]\|]*\]\])/gmi, "$1\t$2");
} while (str!=old2);
do {
old2=str;
str = str.replace(/(\{\{zobteż\|[^\n\}\|]*)\t([^\n\}]*\}\} ?\[\[[^\n\]\|]*\|[^\n\]\|]*\]\])/gmi, "$1||$2");
} while (str!=old2);
str = str.replace(/(\{\{)zobteż(\|[^\n\}]*)(\}\} ?\[\[[^\n\]\|]*\|[^\n\]\|]*\]\])/gmi, "$1zobteż2$2|$3");
}
str = str.replace(/(\{\{zobteż2\|[^\n\}]+)\}\}(?: ?\[\[([^\n\]\|]*)\]\] ?\,?)/gmi, "$1|$2|}}");
str = str.replace(/(\{\{zobteż2\|[^\n\}]+)\}\}(?: ?\[\[([^\n\]\|]*)\|([^\n\]\|]*)\]\] ?\,?)/gmi, "$1|$2|$3}}");
} while (str!=old);
str = str.replace(/\n+(\n\{\{zobteż)/gmi, "$1");
str = str.replace(/(\{\{zobteż[^}\n]+\}\})\n{2,}/gi, "$1\n");
return str;
}
function poprawSekcjeOgolnie(str) {
// ryzykowne zmiany estetyczne
str = str.replace(/\n{2,}/g, "\n"); // usuwanie pustych linii
// dodaje średnik: [[raz]] (1.2) [[dwa]] -> [[raz]]; (1.2) [[dwa]]
str = changeTextAfter(str, '{{składnia}}', function(text) {
return text.replace(/\]\][ ,] ?(\(\d*\.\d*\)) (\[\[|\{\{)/gm, "]]; $1 $2");
});
str = changeTextBetween(str, '{{znaczenia}}', '{{przykłady}}', function(znacz) {
return znacz.replace(/[\,\.\;\:]? ?\{\{wikipedia/g, "; {{wikipedia");
});
// dodaje brakującą sekcję źródła
if (str.search(/<ref[ >]/) != -1) {
if (str.search('<references */>') == -1) {
str = str.replace(/\s+$/, '');
if (str.indexOf('{{źródła}}') == -1) {
str += "\n{{źródła}}\n";
}
str = str.replace(/\s*\{\{źródła\}\}\s*/, "\n{{źródła}}\n<references/>\n");
}
} else {
if (str.search('<references */>') != -1) {
str = str.replace(/\{\{źródła\}\}\s+<references\/>/, '');
}
}
return str;
}
function poprawSekcjePolska(str) {
str = poprawSekcjeOgolnie(str);
str = str.replace(/^\* *(\(\d\.[^)]+\) *\{\{zobtłum)/gm, ': $1');
str = poprawCudzyslowy(str);
// sortowanie tłumaczeń
var m = str.split(/(\{\{tłumaczenia\}\}[^*]*)/);
if (m.length == 3) {
var before = m[0] + m[1];
var text = m[2];
var m2 = text.split(/((?:\*[^\n]+(?:$|\n))+)/);
if (m2.length == 3) {
var after = m2[2];
var translations = m2[1];
var lines = translations.split(/\n/);
var lastLine = lines.pop(); // na końcu pusta linia
if (lastLine.match(/\w/)) {
lines.push(lastLine);
}
var langRegExp = new RegExp(wt_sk.jezykBezJezyk, 'i');
for (var i=0; i<lines.length; ++i) {
var matched;
if (matched = lines[i].match(/^\*\s*([^:]+):/)) { // w tłumaczeniach
var lang = wt_sk.trim(matched[1]);
if (lang.search(langRegExp) == -1) {
lang = 'język ' + lang;
}
var linkRegexp = new RegExp("\\[\\[" + wgPageName + "\\]\\]");
while (lines[i].search(linkRegexp) != -1) {
lines[i] = lines[i].replace(linkRegexp, '[[#'+wgPageName+' ('+lang+')|'+wgPageName+']]');
}
}
if (lines[i].search(/^\*\s*rosyjski:/) != -1) {
lines[i] = wt_sk.poprawAkcentWLinkach(lines[i]);
}
}
lines = lines.sort(porownajTlumaczenia);
translations = lines.join("\n");
if (!translations.match("\n$")) {
translations += "\n";
}
str = before + translations + after;
}
}
return str;
}
function poprawSekcjeObca(str) {
str = poprawSekcjeOgolnie(str);
if (str.match(/\{\{język jaki\}\}/)) {
return str;
}
str = str.replace(/\{\{tłumaczenia\}\}\s*[\n\r]+\*\s*angielski: \(1\.1\) \[\[\s*\]\]\s*/g, '');
str = str.replace(/\{\{tłumaczenia\}\}\s*\n*$/g, '');
str = str.replace(/\{\{tłumaczenia\}\}\s+\{\{źródła\}\}/, '{{źródła}}');
// poprawianie linków do tego samego hasła - ale tylko w sekcji "znaczenia"
str = changeTextBetween(str, '{{znaczenia}}', '{{przykłady}}', function(znacz) {
var linkRegexp = new RegExp("\\[\\[" + wgPageName + "\\]\\]",'g');
return znacz.replace(linkRegexp, '[[#'+wgPageName+' (język polski)|'+wgPageName+']]');
});
str = changeTextBetween(str, '{{etymologia}}', '{{uwagi}}', poprawCudzyslowy);
str = changeTextUntil(str, '{{uwagi}}', '{{źródła}}', poprawCudzyslowy);
var funkcjaDlaJezyka = wt_sk.poprawSekcje[jezykSekcji(str)];
if (funkcjaDlaJezyka) {
str = funkcjaDlaJezyka(str);
}
return str;
}
wt_sk.poprawSekcje['rosyjski'] = function(str) {
str = wt_sk.poprawAkcentWLinkach(str);
return str;
}
wt_sk.poprawAkcentWLinkach = function(str) {
var oldStr;
do {
oldStr=str
str = str.replace(/\[\[(([^\]|]+)́([^\]|]*))\]\]/g, "[[$2$3|$1]]"); // [[па́па]] -> [[папа|па́па]]
str = str.replace(/\[\[([^\]|]+)́([^\]|]*)\|/g, '[[$1$2|'); // [[па́па|па́пе]] -> [[папа|па́пе]]
} while (oldStr != str);
return str;
}
// "Nazwa używana w linku", // Nazwa do sortowania
// Ta tablica musi już być posortowana
// Kolejność sortowania za pywikipedia/family.py zgodnie z self.alphabetic
// Ponieważ pywikipedia/families/wikipedia_family.py zgodnie z self.interwiki_putfirst jest 'pl': self.alphabetic
// Dane za http://meta.wikimedia.org/wiki/Interwiki_sorting_order#By_order_of_alphabet.2C_based_on_local_language_.28by_first_word.29
wt_sk.Jezyki=[
'af', 'ak', 'als', 'am', 'ang', 'ab', 'ar', 'an', 'arc', 'roa-rup',
'frp', 'as', 'ast', 'gn', 'av', 'ay', 'az', 'id', 'ms', 'bm', 'bn',
'zh-min-nan', 'nan', 'map-bms', 'jv', 'su', 'ba', 'be', 'be-x-old',
'bh', 'bcl', 'bi', 'bar', 'bo', 'bs', 'br', 'bug', 'bg', 'bxr',
'ca', 'ceb', 'cv', 'cs', 'ch', 'cbk-zam', 'ny', 'sn', 'tum', 'cho',
'co', 'cy', 'da', 'dk', 'pdc', 'de', 'dv', 'nv', 'dsb', 'na', 'dz',
'mh', 'et', 'el', 'eml', 'en', 'myv', 'es', 'eo', 'ext', 'eu', 'ee',
'fa', 'hif', 'fo', 'fr', 'fy', 'ff', 'fur', 'ga', 'gv', 'sm', 'gd',
'gl', 'gan', 'ki', 'glk', 'gu', 'got', 'hak', 'xal', 'ko', 'ha',
'haw', 'hy', 'hi', 'ho', 'hsb', 'hr', 'io', 'ig', 'ilo', 'bpy',
'ia', 'ie', 'iu', 'ik', 'os', 'xh', 'zu', 'is', 'it', 'he', 'kl',
'kn', 'kr', 'pam', 'ka', 'ks', 'csb', 'kk', 'kw', 'rw', 'ky', 'rn',
'sw', 'kv', 'kg', 'ht', 'ku', 'kj', 'lad', 'lbe', 'lo', 'la', 'lv',
'to', 'lb', 'lt', 'lij', 'li', 'ln', 'jbo', 'lg', 'lmo', 'hu',
'mk', 'mg', 'ml', 'mt', 'mi', 'mr', 'arz', 'mzn', 'cdo', 'mdf',
'mo', 'mn', 'mus', 'my', 'nah', 'fj', 'nl', 'nds-nl', 'cr', 'ne',
'new', 'ja', 'nap', 'ce', 'pih', 'no', 'nb', 'nn', 'nrm', 'nov',
'ii', 'oc', 'or', 'om', 'ng', 'hz', 'uz', 'pa', 'pi', 'pag', 'pap',
'ps', 'km', 'pms', 'nds', 'pl', 'pnt', 'pt', 'aa', 'kaa', 'crh',
'ty', 'ksh', 'ro', 'rmy', 'rm', 'qu', 'ru', 'sah', 'se', 'sa', 'sg',
'sc', 'za', 'sco', 'stq', 'st', 'tn', 'sq', 'scn', 'si', 'simple',
'sd', 'ss', 'sk', 'sl', 'cu', 'szl', 'so', 'srn', 'sr', 'sh', 'fi',
'sv', 'tl', 'ta', 'kab', 'roa-tara', 'tt', 'te', 'tet', 'th', 'vi',
'ti', 'tg', 'tpi', 'tokipona', 'tp', 'chr', 'chy', 've', 'tr',
'tk', 'tw', 'udm', 'uk', 'ur', 'ug', 'vec', 'vo', 'fiu-vro', 'wa',
'zh-classical', 'vls', 'war', 'wo', 'wuu', 'ts', 'yi', 'yo',
'zh-yue', 'diq', 'zea', 'bat-smg', 'zh', 'zh-tw', 'zh-cn'];
function sortujInterwiki(str)
{
var ilink="";
var i;
for (i=0; i<wt_sk.Jezyki.length; i++ )
{
var b=true;
var sr="\\[\\["+wt_sk.Jezyki[i]+"\\:[\^\\n\[\\]]*\\]\\]";
while (str.search(sr,"gmi") != -1)
{
var p=str.search(sr,"gmi");
var f=str.match(sr,"gmi")[0];
if (b && (f=="[["+wt_sk.Jezyki[i]+":"+wgTitle+"]]"))
{
if (wt_sk.Jezyki[i] != wgContentLanguage) ilink=ilink+" "+f;
b=false;
}
str=str.substring(0,p)+" "+str.substring(p+f.length,str.length);
}
}
str = wt_sk.trim(ilink)+"\n"+wt_sk.trim(str);
str = str.replace(/\n{3,}/gm, "\n\n");
str = str.replace(/ +$/gm, ""); // Usuwanie spacji z końców wierszy
return wt_sk.trim(str);
}
function wiktSk() {
document.getElementById(wt_sk.buttonId).src = wt_sk.waitIcon;
setTimeout('internalWiktSk();', 1);
}
function internalWiktSk()
{
var txt = document.editform.wpTextbox1;
var old = txt.value;
txt.value = wt_sk.linkfixer(txt.value, false);
txt.value = wt_sk.imagefixer(txt.value);
txt.value = wt_sk.rozne(txt.value);
txt.value = wt_sk.wiktionary(txt.value);
txt.value = wt_sk.linksimplifyer(txt.value);
if (wgNamespaceNumber == 0) {
txt.value = sortujInterwiki(txt.value);
}
txt.value = wt_sk.trim(txt.value);
if (txt.value != wt_sk.trim(old)) {
wt_sk.dodajOpis();
}
wt_sk.verify();
setTimeout('document.getElementById(wt_sk.buttonId).src = wt_sk.icon;',150);
}
wt_sk.addFormatButton = function() {
editingTools = document.getElementById('toolbar');
if (editingTools != null)
{
if (wt_sk.buttonIsActive() ) {
FormatTextButton = '<a href="javascript:wiktSk();"><img src="'+wt_sk.icon+'" alt="Formatuj" id="'+wt_sk.buttonId+'" title="Porządkowanie kodu (wersja ' + wiktSkVer + ')"></a>';
} else {
FormatTextButton = '<img src="'+wt_sk.inactiveIcon+'" alt="Nieaktywne" title="Nie możesz wykonać sprzątania kodu na tej stronie. Wersja skryptu to ' + wiktSkVer + '.">';
}
editingTools.innerHTML += FormatTextButton;
wt_sk.preloadedWaitIcon.src = wt_sk.waitIcon;
}
}
addOnloadHook(function (){
// Dodaje przycisk do toolbara
wt_sk.addFormatButton();
});
/*</nowiki></pre>*/