MediaWiki:Gadget-sk.js: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Beau (dyskusja | edycje)
Beau (dyskusja | edycje)
Linia 43:
}
window.wp_sk = new Object();
wp_sk.version = '2.7.534';
 
/* =====================================================
Linia 230:
 
// zbędne w obrazkach
str = str.replace(/(\[\[Plik:[^\n\|\]]+?\|thumb)\|right/g, '$1'); // niepotrzebne
str = str.replace(/(\[\[Plik:[^\n\|\]]+?)\|right(\|thumb)/g, '$1$2'); // niepotrzebne
str = str.replace(/(\[\[Plik:[^\|\]]+?\|)frame(\|[0-9x]+px)/, '$1thumb$2'); // prawie na pewno błąd
str = str.replace(/(\[\[Plik:[^\|\]]+\|[^\|\]]+)\.\]\]/, '$1]]'); // kropka
Linia 316 ⟶ 317:
return '{{lang'+a.replace(/\{\{lang\|([a-z-]+)\}\}\s*/g, '|$1')+'}}';
});
 
// wciąganie {{lang}} do szablonów cytowania
str = str.replace(/{{(cytuj [^{}]+?)}} {{lang\|([a-z-]+)}}/gi, '{{$1 | język = $2}}');
 
// ujednolicanie nazw szablonów (tabela poniżej)
Linia 329 ⟶ 333:
 
str = str.replace(/\{\{commons\|Category:/gi, '{{commonscat|');
 
// stuby
wp_sk.isStub = false;
str = str.replace(/\{\{\s*([^|{}]+[ _]|[uU]ni|)[sS]tub2?(\|[^{}]+)?\}\}/g, function(a, temat)
{
if (temat.search(/^sekcja $/i)!=-1)
{
return a;
}
else
{
wp_sk.isStub = true;
return '';
}
});
/*
if (wp_sk.isStub)
{
str += '\n{{stub}}';
}
*/
 
// poprawka, bo FF wywala się na czołgach np. http://pl.wikipedia.org/w/index.php?title=T-72&diff=14511491&oldid=14437344
Linia 369 ⟶ 352:
return a;
});
 
// porządkowanie i wypełnianie Linków do map polski
str = wp_sk.lnkMapPL.cleanup(str);
 
return str;
Linia 424 ⟶ 404:
 
// przypisy - przyprzątnięcia
/*
str = str.replace(/<(ref[^<>\/]*?)[ ]*><\/ref>/g, "<$1 />"); // puste na pojedynczy
// rozwijamy {{r}}, bo kod niżej pracuje na <ref/>-ach
str = str.replace(/\s+(<ref[ >]|\{\{[Ff]akt(?:\|data=[0-9\-]+)?\}\})/g, '$1'); // bez białych przed
str = str.replace(/{{r((?:\|[^|}]+)*)}}/g, function(a, inside) {
return inside.replace(/\|([^|}]+)/g, function(b, name) {
// escape'ujemy " w nazwach
return '<ref name="' + name.replace(/"/g, "\\\"") + '" />';
});
});
*/
str = str.replace(/<(ref[^<>\/]*?)[ ]*> *<\/ref>/g, "<$1 />"); // puste na pojedynczy
str = str.replace(/[ \t]+(<ref[ >]|\{\{[Ff]akt(?:\|data=[0-9\-]+)?\}\})/g, '$1'); // bez białych przed
// nowe linie przed ref w references
str = str.replace(/(<references>|\{\{Przypisy[\s\S]*?\|\s*przypisy\s*=|\{\{Uwagi[\s\S]*?\|\s*uwagi\s*=|\{\{Przypisy-lista[\s\S]*?\|\s*l\. kolumn\s*=\s*[0-9]+\s*\|\s*1=|\{\{Przypisy-lista[\s\S]*?\|\s*(1\s*=)|\{\{Przypisy-lista[\s\S]*?\|)((?:<ref name[^<>]+>[\s\S]*?<\/ref>\s*)+)/gi,
function(a, prerefs, temp_refs, refs)
{
Linia 435 ⟶ 425:
);
// przypisy i interpunkcja
str = str.replace(/([,])((?:(?:<ref[\s\S]+?(?:<\/ref|\/)>)|(\{{2}(?:odn|r|u)\|[^}]+\}{2}))+)/ggi, "$2$1"); // przecinek
str = str.replace(/((?:\s|^)[^& ]*);((?:(?:<ref[\s\S]+?(?:<\/ref|\/)>)|(\{{2}(?:odn|r|u)\|[^}]+\}{2}))+)/ggi, "$1$2;"); // średnik
str = str.replace(/([a-zA-ZąćęłńóśźżĄĆĘŁŃÓŚŹŻ]{5}|[()\[\]{}"”'>])[.]((?:(?:<ref[\s\S]+?(?:<\/ref|\/)>)|(\{{2}(?:odn|r|u)\|[^}]+\}{2}))+)/ggi, "$1$2."); // długi wyraz lub znak specjalny
str = str.replace(/([a-zA-ZąćęłńóśźżĄĆĘŁŃÓŚŹŻ][aeiouyąę])[.]([']*(?:(?:<ref[\s\S]+?(?:<\/ref|\/)>)|(\{{2}(?:odn|r|u)\|[^}]+\}{2}))+)/ggi, "$1$2."); // krótki z samogłoską
str = str.replace(/(<\/ref>|\{{2}(?:odn|r|u)\|[^}]+\}{2})\.\.(?=\s)/ggi, '</ref>$1.'); // dwukropek poziomy
/*
// zwijamy z powrotem <ref/> do {{r}}
str = str.replace(/< *ref *name *= *(?:"([^">\n]+)"|'([^'>\n]+)'|([^\s'"\/]+)) *\/ *>/g, function(a, name1, name2, name3) {
return "{{r|" + (name1||name2||name3) + "}}";
});
// łączymy kolejne wywołania postaci {{r}}{{r}}
// nie działa dla wywołań z parametrami grupaN=
str = str.replace(/(\{\{r(\|([^|}]+))+\}\}\s*)+/g, function(refs) {
return refs.replace(/\}\}\s*\{\{r\|/g, '|');
});
*/
 
// fakty i interpunkcja
Linia 454 ⟶ 456:
 
// galerie fix cooked by ToSter
str = str.replace(/<gallery([^\n>]*)>([\s\S]+?)<\/gallery>/gi, function(a, opcje, zaw) {
zaw = zaw.replace(/\n(Image|Grafika|File):/gi, '\nPlik:');
return "<gallery" + opcje + ">" + zaw + "</gallery>";
});
 
Linia 488 ⟶ 490:
 
str = str.replace(/([0-9]) (%|‰|°)(?!C)/g, '$1$2'); // bez x °C
str = str.replace(/([0-9]) (%|‰|°C)(?!F)/g, '$1 $2'); // spacjabez x °F
str = str.replace(/([0-9])(°[CF])/g, '$1 $2'); // spacja
 
str = str.replace(/<\/?br ?\/?>/gi, '<br />');
Linia 497 ⟶ 500:
//str = str.replace(/([ \n])ok ([^ ])/g, '$1ok. $2');
str = str.replace(/ d\/s /g, ' ds. ');
str = str.replace(/ wg\. /g, ' wg ');
 
// sklejanie skrótów
str = str.replace(/m\.? ?(npm\.?|n[. ]{1,3}p[. ]{1,3}m\.?)/g, 'm n.p.m.');
str = str.replace(/ m\. in\./g, ' m.in.');
str = str.replace(/ o\. o\./g, ' o.o.');
Linia 522 ⟶ 525:
str = wp_sk.iWikiFA.gather(str);
str = wp_sk.iWikiGA.gather(str);
str = wp_sk.iWikiFL.gather(str);
 
// usuwanie pozostawionych przy zbieraniu i innych wielokrotnych, pustych wierszy
Linia 530 ⟶ 534:
str = str.replace(/\s*$/, function(a) {return wp_sk.iWikiFA.output(a)});
str = str.replace(/\s*$/, function(a) {return wp_sk.iWikiGA.output(a)});
str = str.replace(/\s*$/, function(a) {return wp_sk.iWikiFL.output(a)});
str = str.replace(/\s*$/, function(a) {return wp_sk.iWiki.output(a)});
 
Linia 553 ⟶ 558:
//
// wewnętrzne szablony
zaw = zaw.replace(/<<<(#+)>>>/g,'<<<#$1>>>');
zaw = zaw.replace(/\{\{(([^\{\}]+)?(\{\{[^\{\}]+\}\})?)*\}\}/g,function(a){ return a.replace(/\|/g,'<<<#>>>') });
// wewnętrzne linki
zaw = zaw.replace(/\[\[[^\]]+\]\]/g,function(a){ return a.replace(/\|/g,'<<<#>>>') });
Linia 603 ⟶ 609:
catch(err){}
 
a = a.replace(/802\x11/g, '802.11');
return a.replace(/_/g,' ');
}
Linia 972 ⟶ 979:
str = str.replace(
// wg: http://meta.wikimedia.org/wiki/List_of_Wikipedias
/\[\[\s*([a-z\-]{2,3}|simple|ru-sib|be-x-old|zh-yue|map-bms|zh-min-nan|nds-nl|bat-smg|zh-classical|fiu-vro|roa-rup|tokipona|cbk-zam|roa-tara+)\s*:([^\]\|\[]+)\]\](?:[ \t]+\n)?/gi,
function (a, lang, art)
{
lang = lang.toLowerCase(); // [[DE:blah]]
// wg: http://svn.wikimedia.org/svnroot/mediawiki/trunk/phase3/maintenance/interwiki.sql
if (wp_sk.iWiki.order.indexOf(lang) >= 0) // czy na pewno interwiki
if (lang!='wp' && lang!='mw' && lang!='gej' && lang!='ppr' && lang!='rfc' && lang!='uea' && lang!='why' && lang!='csi') // CSI: Kryminalne...
{
wp_sk.iWiki.arr[wp_sk.iWiki.arr_i] = new Array(lang,art);
Linia 1043 ⟶ 1050:
'kr', 'pam', 'krc', 'ka', 'ks', 'csb', 'kk', 'kw', 'rw', 'rn', 'sw',
'kv', 'kg', 'ht', 'ku', 'kj', 'ky', 'mrj', 'lad', 'lbe', 'lo', 'ltg',
'la', 'lv', 'lb', 'lez', 'lt', 'lij', 'li', 'ln', 'jbo', 'lg', 'lmo', 'hu',
'mk', 'mg', 'ml', 'mt', 'mi', 'mr', 'xmf', 'arz', 'mzn', 'ms', 'cdo',
'mwl', 'mdf', 'mo', 'mn', 'mus', 'my', 'nah', 'na', 'fj', 'nl',
Linia 1054 ⟶ 1061:
'tn', 'sq', 'scn', 'si', 'simple', 'sd', 'ss', 'sk', 'sl', 'cu',
'szl', 'so', 'ckb', 'srn', 'sr', 'sh', 'su', 'fi', 'sv', 'tl', 'ta',
'kab', 'roa-tara', 'shi', 'tt', 'te', 'tet', 'th', 'ti', 'tg', 'to', 'chr',
'chy', 've', 'tr', 'tk', 'tw', 'udm', 'bug', 'uk', 'ur', 'ug', 'za',
'vec', 'vep', 'vi', 'vo', 'fiu-vro', 'wa', 'zh-classical', 'vls', 'war',
Linia 1062 ⟶ 1069:
 
/* =====================================================
Class: wp_sk.iWikiFA | iWikiGA | iWikiFL
 
Zbieranie, porządkowanie i wstawianie interwikowych
Linia 1081 ⟶ 1088:
wp_sk.iWikiFA = {
're': /\{\{[Ll]ink FA\|([a-z\-]{2,3}|simple|ru-sib|be-x-old|zh-yue|map-bms|zh-min-nan|nds-nl|bat-smg|zh-classical|fiu-vro|roa-rup|tokipona|cbk-zam|roa-tara)\}\}(?:[ \t]+\n)?/g,
'out_szablon' : 'linkLink FA'
}
//
Linia 1096 ⟶ 1103:
{
// wg: http://svn.wikimedia.org/svnroot/mediawiki/trunk/phase3/maintenance/interwiki.sql
if (wp_sk.iWiki.order.indexOf(lang) >= 0) // czy na pewno interwiki
if (lang!='wp' && lang!='mw' && lang!='gej' && lang!='ppr' && lang!='rfc' && lang!='uea' && lang!='why')
{
arr[arr_i] = lang;
Linia 1139 ⟶ 1146:
wp_sk.iWikiGA = {
're': /\{\{[Ll]ink GA\|([a-z\-]{2,3}|simple|ru-sib|be-x-old|zh-yue|map-bms|zh-min-nan|nds-nl|bat-smg|zh-classical|fiu-vro|roa-rup|tokipona|cbk-zam|roa-tara)\}\}(?:[ \t]+\n)?/g,
'out_szablon' : 'linkLink GA'
}
// rest as above
Linia 1145 ⟶ 1152:
wp_sk.iWikiGA.output = wp_sk.iWikiFA.output;
 
/* =====================================================
Class: wp_sk.lnkMapPL
 
Porządkowanie i wypełnianie szablonu Linków do map polski
 
.cleanup(str)
porządkowanie i wypełnanie (z linka z Google)
===================================================== */
// object init
wp_sk.lnkMapPL = new Object();
//
// UstawieniaiWikiFL
//
// object init
wp_sk.lnkMapPL.search_re = /\{\{(Linki do map Polski[^}]+)\n\|?\}\}\n/;
wp_sk.lnkMapPL.tpliWikiFL = '\{
're': /\{\{[Ll]ink FL\|([a-z\-]{2,3}|simple|ru-sib|be-x-old|zh-yue|map-bms|zh-min-nan|nds-nl|bat-smg|zh-classical|fiu-vro|roa-rup|tokipona|cbk-zam|roa-tara)\}\}(?:[ \t]+\n)?/g,
{{Linki do map Polski\n\
'out_szablon' : 'Link FL'
| stopniN=\n\
| minutN=\n\
| sekundN=\n\
| stopniE=\n\
| minutE=\n\
| sekundE=\n\
}}\n\
';
// kolejność istotna dla konwersji!
wp_sk.lnkMapPL.params = new Array(
'stopniN',
'minutN',
'sekundN',
'stopniE',
'minutE',
'sekundE'
);
 
//
// .cleanup(str)
//
wp_sk.lnkMapPL.cleanup = function (str)
{
//
// Pobranie zaw. infoboksu
//
var box = str.match(wp_sk.lnkMapPL.search_re);
if (!box)
{
return str;
}
box = box[1];
 
//
// Pobieranie wartości parametrów
//
var re;
var vals = new Array();
// "escapowanie" parametrów wewnętrznych szablonów
box = box.replace('{{{}}}','#{{{}}}#').replace(/\{\{[^}]*\}\}/g,function(a){ return a.replace('|','{{{}}}') });
for (var i=0; i<wp_sk.lnkMapPL.params.length; i++)
{
re = new RegExp(wp_sk.lnkMapPL.params[i]+'[ ]*=[ ]*([^|\\n]+)');
vals[i] = box.match(re);
if (vals[i]==null)
{
vals[i]='';
continue;
}
// usuwanie spacji itp oraz odescapowanie
vals[i] = vals[i][1].replace(/[ \t]*$/,'').replace(/^[ \t]*/,'').replace(/(^|[^#])\{\{\{\}\}\}([^#]|$)/g,'$1|$2').replace('#{{{}}}#','{{{}}}');
}
 
//
// konwersja specjalna
//
// konwersja na paramtery jeśli vals[0] = url z ...ll=latitude,longitude...
var ll_tmp,l_tmp,tmp;
var ll_re = /ll=([0-9.]+),([0-9.]+)/;
if(vals[0].indexOf('ll=')>=0)
{
ll_tmp = vals[0];
ll_tmp = ll_re.exec(ll_tmp);
if (ll_tmp!=null)
{
// N
l_tmp = ll_tmp[1];
vals[0] = tmp = Math.floor(l_tmp); // stopni
l_tmp -= tmp;
l_tmp *= 60;
vals[1] = tmp = Math.floor(l_tmp); // minut
l_tmp -= tmp;
l_tmp *= 60;
vals[2] = Math.floor(l_tmp*100000)/100000; // sekund
// N
l_tmp = ll_tmp[2];
vals[3] = tmp = Math.floor(l_tmp); // stopni
l_tmp -= tmp;
l_tmp *= 60;
vals[4] = tmp = Math.floor(l_tmp); // minut
l_tmp -= tmp;
l_tmp *= 60;
vals[5] = Math.floor(l_tmp*100000)/100000; // sekund
}
}
 
//
// Tworzenie nowego boksa i zastąpienie poprzedniej wersji
//
box = wp_sk.lnkMapPL.tpl;
for (var i=0; i<wp_sk.lnkMapPL.params.length; i++)
{
re = new RegExp('('+wp_sk.lnkMapPL.params[i]+'[ ]*=[ ]*)');
box = box.replace(re,'$1'+vals[i]);
}
 
return str.replace(wp_sk.lnkMapPL.search_re,box);
}
// rest as above
wp_sk.iWikiFL.gather = wp_sk.iWikiFA.gather;
wp_sk.iWikiFL.output = wp_sk.iWikiFA.output;
 
/* =====================================================