/*
** name = checkpage
** author = Formatierer
** status = tested in IE, Firefox and Opera
**
** This script checks some constraints in the german wiktionary
** Problems are displayed in the current window
** See also: http://de.wiktionary.org/wiki/Benutzer:Formatierer/checkpage_FAQ
**
** <nowiki>
*/
// begin namespace: checkpage
(function( _public, $, undefined ) {
var version="autoedit/checkpage 1.64";
// public:
_public.analyzePage = function() {
var ns = mw.config.get("wgNamespaceNumber");
if (ns === 0 || ns == 10 || ns == 106) { // 10 = Templates 106 = Reim
if (mw.config.get("wgAction") == "view") {
var pv=mw.util.getParamValue('checkpage');
if (pv && pv=="auto") {
_public.analyzeThisPage();
return;
}
var checkpageLink = mw.util.addPortletLink("p-views", null, "Check", "ca-checkpage",
"checkpage() für diese Seite aufrufen",null,"#ca-view");
$( checkpageLink ).click( _public.analyzeThisPage );
}
var rl=mw.util.getParamValue("redlink");
if(rl && rl=="1"){
checkComp(text);
}
if (mw.config.get("wgAction") == "submit") { // autocheck in preview mode only
// get(url) gets LF + TEXT
var text = '\n'+document.editform.wpTextbox1.value;
doReport=true;
checkText(text,mw.config.get("wgPageName"),ns,document.getElementById("contentSub"),partialEdit());
checkComp(text);
}
if(canSort){
createTSButton();
}
createCSButton();
}
}
_public.checkSave = function() {
var ns = mw.config.get("wgNamespaceNumber");
// Trick, weil geturl auch immer eine Leerzeile einfügt
var text = '\n'+document.editform.wpTextbox1.value;
var w=checkText(text,mw.config.get("wgPageName"),ns,document.getElementById("contentSub"),partialEdit());
if (w>0) {
document.getElementById("wpPreview").click();
}else{
document.getElementById("wpSave").click();
}
}
_public.sortTranslations = function() {
doSort=true;
document.editform.wpTextbox1.value = checkTextSort('\n'+document.editform.wpTextbox1.value);
document.getElementById("wpPreview").click();
}
_public.sortChapters = function() {
doSortCh=true;
document.editform.wpTextbox1.value = checkTextSort('\n'+document.editform.wpTextbox1.value);
document.getElementById("wpPreview").click();
}
_public.analyzeThisPage = function() {
if(inCheckThis) return; // already done?
inCheckThis=true;
var node=document.getElementById("ca-view");
if(node) node.removeAttribute("class");
node=document.getElementById("ca-current");
if(node) node.removeAttribute("class");
node=document.getElementById("ca-checkpage");
if(node) node.setAttribute("class","selected");
var oldid = mw.util.getParamValue( "oldid" );
var oldidp = "";
if ( oldid !== null ) {
oldidp += "&oldid=" + oldid;
}
if(mw.config.get("wgNamespaceNumber")==106){
checkRhyme();
}else{
if(document.getElementById("contentSub")){
thispage=mw.config.get("wgPageName");
$.get(buildUrl(thispage)+oldidp, handleResponse);
}
}
}
_public.insUe2 = function() {
var node=document.editform.wpTextbox1;
if (node) {
var t=node.value;
if (contains(t,"({{Sprache|")) {return;}
var itag=buildUe2();
node.value=insertStr(t,0,itag);
setCursor(node,0+itag.length);
}
}
_public.insUe3 = function() {
var node=document.editform.wpTextbox1;
if (node) {
var t=node.value;
if (contains(t,"{{Wortart|")) {return;}
var p = t.search(/\s==[\s\S]?\n/);
if (p<0)
{p=0;} else {
var q= t.indexOf("\n",p);
if (q<0) {p=p+3;
} else {
p=q+1;
}
}
var itag=buildUe3(composit.w2d);
node.value=insertStr(t,p,itag);
setCursor(node,p+itag.length);
}
}
_public.insST = function() {
var node=document.editform.wpTextbox1;
if (node) {
var t=node.value;
if (contains(t,"{{Deutsch Substantiv Übersicht")) {return;}
var p = t.search(/\s===[\s]?\n/);
if (p<0){
p=0;
} else {
var q= t.indexOf("\n",p);
if (q<0) {
p=p+4;
} else {
p=q+1;
}
}
var itag=buildSubTab(composit.w2d,composit.w1w+composit.wbs);
node.value=insertStr(t,p,itag);
setCursor(node,p+itag.length);
}
}
_public.insWT = function() {
var node=document.editform.wpTextbox1;
if (node) {
var t=node.value;
if (contains(t,"{{Worttrennung}}")) {return;}
var p = t.search(/{{Deutsch Substantiv Übersicht[\s\S]*\n}}/);
if (p<0)
{p=0;} else {
var q= t.indexOf("\n}}",p);
if (q>=0){
p=q+3;
}
}
var wt=$.trim(extractStr(composit.w2d,"{{Worttrennung}}","\n{{",'L'));
var wts2=getWtSg(wt);
var wtp2=getWtPl(wt);
var d1=getData1();
d1=$.trim(extractStr(d1,"{{Worttrennung}}","\n{{",'L'));
var wts1=getWtSg(d1);
var alt=wts1.hasOwnProperty("alt") || wts2.hasOwnProperty("alt");
var wta="";
var wtsa=[];
var wtpa=[];
var wtn="";
var wtsn=[];
var wtpn=[];
wtsn=buildWtA(false,wts1,wts2);
wtpn=buildWtA(false,wts1,wtp2);
if(alt){
wtn+="''Neue Rechtschreibung:'' ";
wta+="\n:''Alte Rechtschreibung:'' ";
wtsa=buildWtA(alt,wts1,wts2);
wtpa=buildWtA(alt,wts1,wtp2);
wta+=buildWtLine(wtsa,wtpa);
}
wtn+=buildWtLine(wtsn,wtpn);
var itag="\n{{Worttrennung}}\n:"+wtn+wta+"\n";
node.value=insertStr(t,p,itag);
setCursor(node,p+itag.length);
}
}
_public.insAus = function() {
var node=document.editform.wpTextbox1;
if (node) {
var t=node.value;
if (contains(t,"{{Aussprache}}")) {return;}
var p = t.search(/{{Worttrennung}}/);
if (p<0){
p=0;
} else {
var q= t.indexOf("\n{{",p);
if (q>=0){
p=q+1;
}
}
var itag='\n{{Aussprache}}\n'+buildIpa(composit.w2d,getIpaSg(getData1()),composit.w2w);
itag+=':{{Hörbeispiele}} {{Audio|}}, {{Pl.}} {{Audio|}}\n\n';
node.value=insertStr(t,p,itag);
setCursor(node,p+itag.length);
}
}
_public.insUeTab = function() {
var node=document.editform.wpTextbox1;
if (node) {
var t=node.value;
if (contains(t,"==== Übersetzungen ")) {return;}
var p = t.search(/\n{{Referenzen}}/);
if (p<0) {
p=t.length;
}
var itag=buildUeTab();
node.value=insertStr(t,p,itag);
setCursor(node,p+itag.length);
}
}
_public.insRef = function() {
var node=document.editform.wpTextbox1;
if (node) {
var t=node.value;
if (contains(t,"{{Referenzen}}")) {return;}
var p = t.search(/{{Ü-rechts}}/);
if (p<0) {
p=0;
} else {
var q= t.indexOf("\n",p);
if (q<0) {
p=p+12;
} else {
p=q;
}
}
var itag='\n'+buildReferenz(buildWort());
node.value=insertStr(t,p,itag);
setCursor(node,p+itag.length);
}
}
_public.insAll = function() {
_public.insUeTab();
_public.insRef();
_public.insAus();
_public.insWT();
_public.insST();
_public.insUe3();
_public.insUe2();
}
_public.neuesSubstantiv = function() {
// var p=prompt("Bestandteile des Kompositums eingeben. Beispiel: Leder;Jacke oder Bär;en;Hunger");
var text = '\n'+document.editform.wpTextbox1.value;
var p=extractStr(text,"{{Herkunft}}",'','L');
p=extractStr(p,":",'\n');
alert (p);
var a1=p.match(/\[\[\S*\]\]/g);
var pn=mw.config.get("wgPageName");
var i;
var a=[];
for (i=a1.length-1;i>=0;i--) {
if (endsWith(pn,a1[i].substring(2,a1[i].length-2).toLowerCase())) {
a[2]=a1[i].substring(2,a1[i].length-2);
}
if (startsWith(pn,a1[i].substring(2,a1[i].length-2))) {
a[0]=a1[i].substring(2,a1[i].length-2);
}
}
a[1]=extractStr(pn,a[0],a[2].toLowerCase(),'B');
p=a.join(';');
p=p.replace(/\s/g,'');
a=p.split(';');
if (a.length == 2) {
a[2]=a[1];
a[1]="";
}
composit={w1ex:false,w2ex:false,w1d:'',w2d:'',ausspr:false};
composit.w0w=a[0];
composit.w1w=a[0]+a[1];
if (endsWith(a[1],'-')){
composit.wbs='-';
composit.w1w=a[0]+a[1].substr(0,a[1].length-1);
}
composit.w2w=a[2];
if (a.length == 3) {
if(a[1].length >0) {
$.get(buildUrl(a[0]+a[1]),handleResponseW1F);
}
$.get(buildUrl(a[0]),handleResponseW1);
$.get(buildUrl(a[2]),handleResponseW2);
} else {
alert("Hä? '"+p+"'");
}
}
// private:
// flow control
var doReport=false;
var doSort=false;
var doSortCh=false;
var canSort=false;
var inCheckThis=false;
var diminutiv={};
var feminin={};
var reorder=[];
var flexion={};
var flexionv={};
var extend={wt:false,ls:false,hb:false};
var composit={w0w:'',w1w:'',wbs:'',w2w:'',w1ex:false,w2ex:false,w1d:'',w2d:'',ausspr:false};
var worttr={};
var lautschr={};
var reime={};
var thispage="";
var pages={};
function page(title,text){
this.title=title;
this.text=text;
}
function handleResponseW1(data){
composit.w1d=data;
callSubstantiv();
}
function handleResponseW2(data){
composit.w2d=data;
callSubstantiv();
}
function callSubstantiv(){
if ((composit.w1ex == (composit.w1d.length > 0)) &&
(composit.w2ex == (composit.w2d.length > 0)))
{
createTools(composit.w2d);
}
}
function createTools(data){
var node=document.getElementById("editform");
if (node){
if(composit.w2d.length ==0) {return;}
var b = '<hr>Ergänze: | <a title="Überschrift 2" href="javascript:checkpage.insUe2()">Ü2</a>';
b += ' | <a title="Überschrift 3" href="javascript:checkpage.insUe3()">Ü3</a>';
b += ' | <a href="javascript:checkpage.insST()">Substantivtabelle</a>';
if (composit.w1d.length > 0) {
b += ' | <a href="javascript:checkpage.insWT()">Worttrennung</a>';
b += ' | <a href="javascript:checkpage.insAus()">Aussprache</a>';
}
b += ' | <a href="javascript:checkpage.insUeTab()">Übersetzungen</a>';
b += ' | <a href="javascript:checkpage.insRef()">Referenzen</a>';
b += ' | <a href="javascript:checkpage.insAll()">Alles</a> |<hr>';
var div=document.createElement("div");
div.innerHTML += b;
node.parentNode.insertBefore(div,node);
}else{
insertIpa(data);
}
}
function insertIpa(data){
var node = document.getElementById("contentSub"); // top of page
if(node){
if(composit.w1d.length > 0 && composit.w2d.length > 0){
var ls=buildIpa(composit.w2d,getIpaSg(getData1()),composit.w2w);
if (composit.ausspr==false) {
ls='{{Bedeutungen}}\v{{Aussprache}}\n'+ls+
':{{Hörbeispiele}} {{Audio|}}, {{Pl.}} {{Audio|}}\n\n{{Bedeutungen}}\v';
} else {
ls=':{{IPA}}.*\n\v'+ls+'\v';
}
if (contains(ls,"{{Lautschrift") && !contains(ls,"…")) {
var tn = 'Nur für Experten! Lautschrift aus bekannten Wörtern ergänzen: ';
var p=node.parentNode;
var nl = document.createElement("a");
var t=mw.config.get("wgPageName");
nl.href=buildUrl2(t,"&action=edit")+
"&editintro=Vorlage:Autoedit/intro&autoedit="+
encodeURIComponent(
"s\v"+ls)+
"&autominor=true&autosummary=IPA erg. ("+version+")";
nl.innerHTML = t;
nl.setAttribute("style", "color:#FFC000");
p.insertBefore(document.createElement("br"),node.nextSibling);
p.insertBefore(nl,node.nextSibling);
p.insertBefore(document.createTextNode(tn),node.nextSibling);
}
}
}
}
function repl(f,r,p) {
return "s\v"+f+'\v'+r+'\v'+p;
}
function handleResponse(data){
var node = document.getElementById("contentSub"); // top of page
if(node){
doReport=true;
data='\n'+data;
pages[thispage]=new page(thispage,data);
checkText(data,thispage,mw.config.get("wgNamespaceNumber"),node,"");
checkExtend(data,thispage);
checkComp(data);
}
}
function handleResponseLinks(data){
if (data.parse !== undefined && data.parse.links !== undefined) {
addFlexionLinks(flexion,data.parse.links);
}
}
function handleResponseLinksV(data){
if (data.parse !== undefined && data.parse.links !== undefined) {
addFlexionLinks(flexionv,data.parse.links);
}
}
function handleResponseDim(data){
if (data.parse !== undefined && data.parse.links !== undefined) {
var dpl=data.parse.links;
var node = document.getElementById("contentSub"); // top of page
if(node){
var tn=' Verkleinerungsform anlegen. Deutsch: ';
var p=node.parentNode;
var i=dpl.length-1;
var br=true;
for(;i>=0;i--){
var t = dpl[i]['*'];
if (!dpl[i].hasOwnProperty("exists")) {
var pnf='';
var nl=document.createElement("a");
if (contains(t,'ß')){
pnf="\n{{Alternative Schreibweisen}}\n:{{CH&LI}} [["+t.replace(/ß/g,'ss')+"]]\n";
}
nl.href=buildUrl2(t,"&action=edit")+
"&editintro=Vorlage:Autoedit/intro&preload=Vorlage:Autoedit/de-Sub-Dim&autoedit="+
encodeURIComponent(
repl("@NF@",pnf,"g;")+
repl("@1@",diminutiv[t].wt,"g;")+
repl("@3@",diminutiv[t].lss+", {{Pl.}} "+diminutiv[t].lsp,"g;")+
repl("@4@",diminutiv[t].bed,"g;")+
repl("@5@",mw.config.get("wgPageName"),"g;")+
repl("@6@",diminutiv[t].rest,"g;")+
repl("@7@",diminutiv[t].ref,"g")
)+"&autominor=false&autosummary=Verkleinerungsform ("+version+")";
nl.innerHTML = t;
nl.setAttribute("style", "color:#CC0000");
if(br){
br=false;
p.insertBefore(document.createElement("br"),node.nextSibling);
}
p.insertBefore(nl,node.nextSibling);
p.insertBefore(document.createTextNode(tn),node.nextSibling);
node = nl;
tn = ", ";
}
}
}
}
}
function handleResponseFem(data){
if (data.parse !== undefined && data.parse.links !== undefined) {
var dpl=data.parse.links;
var i=dpl.length-1;
for(;i>=0;i--){
var t = dpl[i]['*'];
if (!dpl[i].hasOwnProperty("exists")) {
var node = document.getElementById("contentSub"); // top of page
if(node){
var pnf='';
var tn=' Weibliche Form anlegen. Deutsch: ';
var p=node.parentNode;
var nl=document.createElement("a");
if (contains(t,'ß')){
pnf="\n{{Alternative Schreibweisen}}\n:{{CH&LI}} [["+t.replace(/ß/g,'ss')+"]]\n";
}
nl.href=buildUrl2(t,"&action=edit")+
"&editintro=Vorlage:Autoedit/intro&preload=Vorlage:Autoedit/de-Sub-fem&autoedit="+
encodeURIComponent(
repl("@NF@",pnf,"g;")+
repl("@1@",feminin.wt,"g;")+
repl("@2@",t+"nen","g;")+
repl("@3@",feminin.lss+", {{Pl.}} "+feminin.lsp,"g;")+
repl("@4@",feminin.bed,"g;")+
repl("@5@",mw.config.get("wgPageName"),"g;")+
repl("@6@",feminin.rest,"g;")+
repl("@7@",feminin.ref,"g")
)+"&autominor=false&autosummary=weibl. Form ("+version+")";
nl.innerHTML = t;
nl.setAttribute("style", "color:#CC0000");
p.insertBefore(document.createElement("br"),node.nextSibling);
p.insertBefore(nl,node.nextSibling);
p.insertBefore(document.createTextNode(tn),node.nextSibling);
}
}
}
}
}
function handleResponseLinksComp(data){
if (data.parse !== undefined && data.parse.links !== undefined) {
var dpl=data.parse.links;
var i=dpl.length-1;
for(;i>=0;i--){
var t = dpl[i]['*'];
if (dpl[i].hasOwnProperty("exists")) {
if (composit.w1w==t) {
composit.w1ex=true;
$.get(buildUrl(t),handleResponseW1);
}
if (composit.w2w==t) {
composit.w2ex=true;
$.get(buildUrl(t),handleResponseW2);
}
}
}
if(!composit.w1ex){
i=dpl.length-1;
for(;i>=0;i--){
var t = dpl[i]['*'];
if (dpl[i].hasOwnProperty("exists")) {
if (composit.w1w==toUpperFirst(t)) {
composit.w1ex=true;
$.get(buildUrl(t),handleResponseW1);
}
}
}
}
}
}
function handleResponseExtend(data){
var node = document.getElementById("contentSub"); // top of page
if(node){
var wt="";
var wta="";
var wtn="";
var ls="{{Lautschrift|…}}";
var hb="{{Audio|}}";
var a1=[];
var a2=[];
var lsx="";
var wtx="";
var w=extractStr(data,"{Wortart|Substantiv|Deutsch","\n==");
w=extractStr(w,"{{Worttrennung}}","{{Bedeutungen}}");
worttr=getWtStruct(extractStr(w,"{{Worttrennung}}","\n{{",'B'));
lautschr=getSgPlStruct(extractStr(w,":{{IPA}}","\n",'B'));
var s=buildPropNeu(lautschr,"Sg.");
switch(extend.kasus){
case "deGenSgses":
if(s.length>0 && !contains(s,"…")){
ls=lsPlusE(s,extend.gf,"səs");
}
wt=buildWtAltNeu(worttr,"Sg.");
wt=wtPlusE(wt,"·ses");
break;
case "deGenSges":
if(s.length>0 && !contains(s,"…")){
ls=lsPlusE(s,extend.gf,"əs");
}
wt=buildWtAltNeu(worttr,"Sg.");
wt=wtPlusE(wt,"es");
break;
case "deGenSgs":
if(s.length>0 && !contains(s,"…")){
ls=lsPlusE(s,extend.gf,"s");
}
wt=buildWtAltNeu(worttr,"Sg.");
wt+="s";
break;
case "deDatSge":
if(s.length>0 && !contains(s,"…")){
ls=lsPlusE(s,extend.gf,"ə");
}
wt=buildWtAltNeu(worttr,"Sg.");
wt=wtPlusE(wt,"e");
break;
default:
if(extend.kasus=="deDatPln"){
lsx="n";
wtx="n";
}
var at=w.split("{{Aussprache}}");
a1=at[0].split("{{Pl.}}");
if (a1.length == 3) {
if(contains(a1[0],"te Rechts")) {
wta=$.trim(extractStr(a1[1]," ","\n"));
wtn=$.trim(extractStr(a1[2]," ","\n"));
}
if(contains(a1[0],"ue Rechts")) {
wta=$.trim(extractStr(a1[2]," ","\n"));
wtn=$.trim(extractStr(a1[1]," ","\n"));
}
wt="''Neue Rechtschreibung:'' "+wtn+wtx+
"\n:''Alte Rechtschreibung:'' "+wta+wtx;
}
if (a1.length == 2) {
wt=$.trim(extractStr(a1[1]," ","\n"))+wtx;
}
if (at.length == 2) {
a2=at[1].split("{{Pl.}}");
if (a2.length > 1) {
if (extend.ls) {
ls=$.trim(extractStr(a2[1]," ","\n"));
ls=ls.replace(/([^….])\}\}/g,"$1"+lsx+"}}");
if (endsWith(thispage,"en")){
ls=anpassenLs(thispage,ls);
}
}
if (extend.hb && a2.length > 2) {
hb=$.trim(extractStr(a2[2]," ","\n"));
}
}
}
}
if (extend.wt && wt.length>0
|| extend.ls && !contains(ls,'…')
|| extend.hb && !contains(hb,"{fehlend}") && !contains(hb,"{Audio|}")) {
var tn = 'Flektierte Form aus Grundform ergänzen: '+extend.sp+' ';
var p=node.parentNode;
var nl =document.createElement("a");
var t=mw.config.get("wgPageName");
nl.href=buildUrl2(t,"&action=edit")+
"&editintro=Vorlage:Autoedit/intro&autoedit="+
encodeURIComponent(
repl("Worttrennung}}\n\n","Worttrennung}}\n:"+wt+"\n\n",";")+
repl("Worttrennung}}\n:\n","Worttrennung}}\n:"+wt+"\n",";")+
repl("{{Lautschrift\\|\\.\\.\\.}}|{{Lautschrift\\|…}}",ls,";")+
repl("{{Audio\\|}}|{{fehlend}}",hb,"")
)+"&autominor=true&autosummary=erg. ("+version+")";
var pv=mw.util.getParamValue('checkpage');
if (pv && pv=="auto") {
window.location.href=nl.href;
return;
}
nl.innerHTML = t;
nl.setAttribute("style", "color:#FFC000");
p.insertBefore(document.createElement("br"),node.nextSibling);
p.insertBefore(nl,node.nextSibling);
p.insertBefore(document.createTextNode(tn),node.nextSibling);
}
}
}
function handleResponseKonjugation(data){
//alert(JSON.stringify(data));
var h,i,s1b;
var hta = ["1. Person Singular","2. Person Singular","3. Person Singular",
"1. Person Plural","2. Person Plural","3. Person Plural"];
var s1=extractStr(data,'id="Infinitive_und_Partizipien"',"");
var d1=s1.split("</table>");
var hsns='';
for(h=1;h<d1.length-1;h=h+3){
var ht = " Präsens Aktiv";
var pt = "2. Person Singular";
s1=extractStr(d1[h],'title="Hilfe:Imperativ"',"");
s1=extractStr(s1,'. Pers',"");
var s1a=s1.split("<tr>");
for(i=0;i<s1a.length;i++){
if(contains(s1a[i],". Pers")){
s1b=s1a[i].split("<td>",2);
addFlexionVerb("Deutsch",s1b[1],thispage,"","…","Audio|",pt+" Imperativ"+ht);
pt = "2. Person Plural";
}
}
s1=extractStr(d1[h+1],'>Präsens<','>Präteritum<');
s1a=s1.split("<tr>");
var htai=0;
hsns='';
for(i=0;i<s1a.length;i++){
if(contains(s1a[i],"Hauptsatz")){
hsns=" der Hauptsatzkonjugation";
}
s1b=s1a[i].split(". Pers");
if(s1b.length>1){
s1b=s1b[1].split("<td>",5);
addFlexionVerb("Deutsch",s1b[1],thispage,"","…","Audio|",hta[htai]+" Indikativ"+ht+hsns);
addFlexionVerb("Deutsch",s1b[2],thispage,"","…","Audio|",hta[htai]+" Konjunktiv"+ht+hsns);
if(hsns!=''){
addFlexionVerb("Deutsch",s1b[3],thispage,"","…","Audio|",hta[htai]+" Indikativ"+ht+" der Nebensatzkonjugation");
addFlexionVerb("Deutsch",s1b[4],thispage,"","…","Audio|",hta[htai]+" Konjunktiv"+ht+" der Nebensatzkonjugation");
}
htai++;
}
}
s1=extractStr2(d1[h+1],'>Präteritum<','>Perfekt<','');
s1a=s1.split("<tr>");
htai=0;
ht = " Präteritum Aktiv";
hsns='';
for(i=0;i<s1a.length;i++){
if(contains(s1a[i],"Hauptsatz")){
hsns=" der Hauptsatzkonjugation";
}
s1b=s1a[i].split(". Pers");
if(s1b.length>1){
s1b=s1b[1].split("<td>",5);
addFlexionVerb("Deutsch",s1b[1],thispage,"","…","Audio|",hta[htai]+" Indikativ"+ht+hsns);
addFlexionVerb("Deutsch",s1b[2],thispage,"","…","Audio|",hta[htai]+" Konjunktiv II"+ht+hsns);
if(hsns!=''){
addFlexionVerb("Deutsch",s1b[3],thispage,"","…","Audio|",hta[htai]+" Indikativ "+ht+" der Nebensatzkonjugation");
addFlexionVerb("Deutsch",s1b[4],thispage,"","…","Audio|",hta[htai]+" Konjunktiv II "+ht+" der Nebensatzkonjugation");
}
htai++;
}
}
}
if(!isEmpty(flexionv)){
apiParseLinks(flexionv,handleResponseLinksV);
}
}
function handleResponseRhyme(data){
if (data.query !== undefined && data.query.backlinks !== undefined) {
//todo data["query-continue"]
var warn=[];
var i=0;
var bl=data.query.backlinks;
for (i=0;i<bl.length;i++) {
if(reime.hasOwnProperty(bl[i].title)){
reime[bl[i].title].link=true;
}else{
warn.push(new warning(-1,"Reimwort fehlt oder falscher Link in: "+bl[i].title));
}
}
var w;
for(w in reime){
if(reime[w].cnt > 1){
warn.push(new warning(-1,"Reimwort mehrfach vorhanden: "+w));
}
if(!reime[w].link){
warn.push(new warning(-1,"Link zu dieser Seite fehlt in: "+w));
}
}
reportWarnings(document.getElementById("contentSub"),[],warn,[false,false,false,true]);
}
}
function getData1() {
return extractStr2(composit.w1d,"|Deutsch}}","{{Bedeutungen}}","{{Grammatische Merkmale}}");
}
function getHerkunft(text){
var r=['','',''];
var p=extractStr(text,"{{Herkunft}}",'','L');
var a=p.match(/\S+.*/);
if (a==null) return r;
a=a[0].match(/\[\[[^\]\s]+\]\]/g);
if (a==null) return r;
var pn=mw.config.get("wgPageName");
var i=a.length-1;
var as="";
for (;i>=0;i--) {
as=a[i].substring(2,a[i].length-2);
if (endsWith(pn,as)) {
r[2]=as;
}
if (endsWith(pn,as.toLowerCase())) {
r[2]=as;
}
if (startsWith(pn,as)) {
r[0]=as;
}
}
r[1]=pn.substr(r[0].length,pn.length-r[0].length-r[2].length);
return r;
}
function addwte (r,alt,wt){
if (wt.length>0) {
if(alt){
if(!r.hasOwnProperty("alt")) {
r.alt=[];
}
r.alt.push(wt);
}else{
if(!r.hasOwnProperty("neu")) {
r.neu=[];
}
r.neu.push(wt);
}
}
}
function getWtSg(txt){
var a=buildLines(txt);
var r={};
for (var i in a) {
var l=$.trim(a[i]);
var alt=contains(l,"lte Rechts");
if(l.length>0 && l.charAt(0)==':') {
var ls=l.split(',');
var j=ls[0].lastIndexOf(' ');
if(j==-1){
j=0;
}
addwte(r,alt,ls[0].substr(j+1));
}
}
return r;
}
function getWtPl(txt){
var a=buildLines(txt);
var r={};
for (var i in a) {
var l=$.trim(a[i]);
var alt=contains(l,"lte Rechts");
if(l.length>0 && l.charAt(0)==':') {
addwte(r,alt,getWtPln(l,''));
addwte(r,alt,getWtPln(l,'1'));
addwte(r,alt,getWtPln(l,'2'));
addwte(r,alt,getWtPln(l,'3'));
addwte(r,alt,getWtPln(l,'4'));
}
}
return r;
}
function getWtPln(t,pl){
var s=$.trim(extractStr(t,"{{Pl."+pl+"}}",",",'B'));
if (s.length == 0) {
s=$.trim(extractStr(t,"{{Pl."+pl+"}}","",'B'));
}
return s;
}
function getWtPart(txt){
var a=buildLines(txt);
var r={};
for (var i in a) {
var z=$.trim(a[i]);
var alt=contains(z,"lte Rechts");
if(z.length>0 && z.charAt(0)==':') {
addwte(r,alt,getWtN(z,'Part.'));
}
}
return r;
}
function addwts (r,key,alt,wt){
if (wt.length>0) {
wt=$.trim(wt).replace(/,$/,'');
if(alt){
if(!r.hasOwnProperty("alt")) {
r.alt={};
}
r.alt[key]=wt;
}else{
if(!r.hasOwnProperty("neu")) {
r.neu={};
}
r.neu[key]=wt;
}
}
}
function getWtStruct(t,vl){
var r={};
var a=buildLines(t);
for (var i in a) {
var z=$.trim(a[i]);
var alt=contains(z,"lte Rechts");
if(z.length>0 && z.charAt(0)==':') {
if (contains(z,"{{Sg.}}")) {
addwts(r,"Sg.",alt,getSgPl(z,"{{Sg.}}"));
} else if (contains(z,"{{Sg.1}}")) {
addwts(r,"Sg.1",alt,getSgPl(z,"{{Sg.1}}"));
} else if (contains(z,"schreibung:''")) {
addwts(r,"Sg.",alt,getSgPl(z,"schreibung:''"));
} else if (contains(z,"schreibung'':")) {
addwts(r,"Sg.",alt,getSgPl(z,"schreibung'':"));
} else if (contains(z,"{{kSg.}}")) {
addwts(r,"Sg.",alt,'');
} else {
addwts(r,"Sg.",alt,getSgPl(z,":"));
}
addwts(r,"Sg.2",alt,getSgPl(z,"{{Sg.2}}"));
addwts(r,"Sg.3",alt,getSgPl(z,"{{Sg.3}}"));
addwts(r,"Sg.4",alt,getSgPl(z,"{{Sg.4}}"));
addwts(r,"Pl.",alt,getSgPl(z,"{{Pl.}}"));
addwts(r,"Pl.1",alt,getSgPl(z,"{{Pl.1}}"));
addwts(r,"Pl.2",alt,getSgPl(z,"{{Pl.2}}"));
addwts(r,"Pl.3",alt,getSgPl(z,"{{Pl.3}}"));
addwts(r,"Pl.4",alt,getSgPl(z,"{{Pl.4}}"));
}
}
return r;
}
function getSgPlStruct(z,vl){
var r={};
var f=false;
var z=$.trim(z);
if(z.length>0) {
if (contains(z,"{{Sg.}}")) {
addwts(r,"Sg.",f,getSgPl(z,"{{Sg.}}"));
} else if (contains(z,"{{Sg.1}}")) {
addwts(r,"Sg.1",f,getSgPl(z,"{{Sg.1}}"));
} else {
addwts(r,"Sg.",f,getSgPl(z,""));
}
addwts(r,"Sg.2",f,getSgPl(z,"{{Sg.2}}"));
addwts(r,"Sg.3",f,getSgPl(z,"{{Sg.3}}"));
addwts(r,"Sg.4",f,getSgPl(z,"{{Sg.4}}"));
addwts(r,"Pl.",f,getSgPl(z,"{{Pl.}}"));
addwts(r,"Pl.1",f,getSgPl(z,"{{Pl.1}}"));
addwts(r,"Pl.2",f,getSgPl(z,"{{Pl.2}}"));
addwts(r,"Pl.3",f,getSgPl(z,"{{Pl.3}}"));
addwts(r,"Pl.4",f,getSgPl(z,"{{Pl.4}}"));
}
return r;
}
function getSgPl(t,vl){
var s=$.trim(extractStr(t,vl,"{{Sg",'B'));
if (s.length == 0) {
s=$.trim(extractStr(t,vl,"{{Pl.",'B'));
}
if (s.length == 0) {
s=$.trim(extractStr(t,vl,"{{kPl.",'B'));
}
if (s.length == 0) {
s=$.trim(extractStr(t,vl,"",'B'));
}
return s;
}
function getWtN(t,pl){
var s=$.trim(extractStr(t,"{{"+pl+"}}",",",'B'));
if (s.length == 0) {
s=$.trim(extractStr(t,"{{"+pl+"}}","",'B'));
}
return s;
}
function getIpaSg(txt){
txt=extractStr(txt,":{{IPA}}","\n");
return extractStr(txt,"{{Lautschrift|","}}",'B');
}
function anpassenLs(t,ls){
var endls=ls.substr(-5,1);
var endchr=t.substr(-3,1);
if (endls.search(/[mnŋʀlj]/) == -1 && endchr.search(/[aeiouäöüy]/) == -1){
ls=ls.replace(/ən\}\}/g,"n̩}}");
}
return ls;
}
function buildUrl(t){
return buildUrl2(t,"&action=raw&maxage=0");
}
function buildUrl2(t,p){
return mw.config.get("wgServer")+mw.config.get("wgScript")+"?title="+mw.util.wikiUrlencode(t)+p;
}
function buildApi(t,p){
return mw.config.get("wgServer")+mw.config.get("wgScriptPath")+"/api.php?"+p+mw.util.wikiUrlencode(t);
}
function buildWort() {
var w=toUpperFirst(composit.w1w);
if (composit.wbs == '-'){
w+='-'+composit.w2w;
} else {
w+=toLowerFirst(composit.w2w);
}
return w;
}
function buildUe2(){
return "== "+buildWort()+" ({{Sprache|Deutsch}}) ==\n";
}
function buildUe3(t){
t=extractStr(t,"=== {{Wortart|"," ===");
return t+'\n';
}
function buildSubTab(t,w){
t=extractStr(t,"{{Deutsch Substantiv Übersicht","\n}}");
t = t.replace(/\|Bild.*\n/g,"");
t = t.replace(/\bder\s+\S|\bdie\s+\S|\bdas\s+\S|\bdes\s+\S|\bdem\s+\S|\bden\s+\S/g,
function (s) {
if (endsWith(w,'-')) {
return s.substr(0,s.length-1) + w + s.substr(s.length-1,1);
} else {
return s.substr(0,s.length-1) + w + toLowerFirst(s.substr(s.length-1,1));
}
});
return t+'\n';
}
function buildWtLine(sg,pl){
var s="";
if(sg.length>0) {
s+=sg[0];
}
if(pl.length==1) {
s+=", {{Pl.}} "+pl[0];
}
if(pl.length>1) {
for(var i=1;i<=pl.length;i++) {
s+=", {{Pl."+(i).toString()+"}} "+pl[i-1];
}
}
return s;
}
function buildWtA(alt,v,w){
var w1=[];
var w2=[];
var r=[];
if(v.hasOwnProperty("neu")){
w1=v.neu;
}
if(w.hasOwnProperty("neu")){
w2=w.neu;
}
if(alt){
if(v.hasOwnProperty("alt")){
w1=v.alt;
}
if(w.hasOwnProperty("alt")){
w2=w.alt;
}
}
if(w1.length>0 && w2.length>0){
for(var i=0;i<w2.length;i++){
r.push(buildWt(w1[0],w2[i]));
}
}
return r;
}
function buildWt(v,w){
if (endsWith(v,'-')) {
return toUpperFirst(v+w);
} else {
return toUpperFirst(v)+'·'+toLowerFirst(w);
}
}
function buildWtPl(alt,w1,w2){
var wtps='';
if(w1.length==1) {
wtps+=", {{Pl.}} "+buildWt(wts1,wtpa[0]);
}
if(wtpa.length>1) {
for(var i=1;i<=wtpa.length;i++) {
wtps+=", {{Pl."+(i).toString()+"}} "+buildWt(wts1,wtpa[i-1]);
}
}
}
function buildUeTab() {
return "\n==== Übersetzungen ====\n{{Ü-Tabelle|Ü-links=\n"+
"*{{en}}: [1] {{Ü|en|}}\n*{{fr}}: [1] {{Ü|fr|}}\n|Ü-rechts=\n"+
"*{{it}}: [1] {{Ü|it|}}\n*{{es}}: [1] {{Ü|es|}}\n}}\n";
}
function buildIpa(txt,ipa1,w2){
var ipa=extractStr(txt,":{{IPA}}","\n");
ipa=ipa.replace(/\ˌ/g,"");
ipa=ipa.replace(/\ˈ/g,"ˌ");
if (w2.search(/^[AEIOUÄÖÜaeiouäöü]/)>=0) {
ipa=ipa.replace(/\|/g,"|ʔ");;
}
var a=ipa.split("{Lautschrift");
for (var i=1;i<a.length;i++) {
if(!contains(a[i],'ˌ')){
a[i]=a[i].replace(/\|/g,"|ˌ");
}
}
ipa=a.join("{Lautschrift");
ipa=ipa.replace(/\|ʔˌ/g,"|ˌʔ");
ipa=ipa.replace(/\|/g,"|"+ipa1);
if(!contains(ipa,'ˈ')){
ipa=ipa.replace(/\|/g,"|ˈ");
}
return ipa;
}
function buildReferenz(w){
var s="\n{{Referenzen}}\n<!--Achtung, bitte die Referenz-Links testen -->";
s+="\n:[1] {{Wikipedia|"+w+"}}";
s+="\n:[1] {{Ref-DWDS|"+w+"}}";
s+="\n:[1] {{Ref-Canoo|"+w+"}}";
s+="\n:[1] {{Ref-UniLeipzig|"+toAnsi(w)+"}}";
s+="\n:[1] {{Ref-FreeDictionary|"+toAnsi(w)+"}}";
return s;
}
function partialEdit(){
var pe=document.getElementsByName("wpSection");
if (pe.length>0) {
return pe[0].value;
}
return "";
}
function createCSButton(){
var node = document.getElementById("wpDiff");
if(node){
var p=node.parentNode;
var y=document.createElement("input");
y.setAttribute("id", "wpCheck");
y.setAttribute("value", "Check & Save");
y.setAttribute("title", "checkpage() aufrufen. Bei Fehlern Vorschau anzeigen, sonst speichern.");
y.setAttribute("type", "button");
y.setAttribute("onclick", "checkpage.checkSave()");
p.insertBefore(y,node.nextSibling);
p.insertBefore(document.createTextNode('\n'),node.nextSibling);
}
}
function createTSButton(){
var node = document.getElementById("wpDiff");
if(node){
var p=node.parentNode;
var y=document.createElement("input");
y.setAttribute("id", "wpTsort");
y.setAttribute("value", "Sort");
y.setAttribute("title", "Übersetzungstabelle sortieren");
y.setAttribute("type", "button");
y.setAttribute("onclick", "checkpage.sortTranslations()");
p.insertBefore(y,node.nextSibling);
p.insertBefore(document.createTextNode('\n'),node.nextSibling);
}
}
function checkRhyme(){
var a="#mw-content-text > ul a:not('.new')";
$(a).each(function(index, element) {
if (reime.hasOwnProperty($(element).text())){
reime[$(element).text()].cnt++;
}else{
reime[$(element).text()] = {cnt:1,link:false};
}
})
var url=buildApi(mw.config.get("wgPageName"),"action=query&list=backlinks&bllimit=9999&blnamespace=0&blfilterredir=nonredirects&format=json&bltitle=");
$.get(url, handleResponseRhyme);
}
function checkExtend(text,t) {
if(!window.hasOwnProperty("autoedit")){return;}
// (?: starts a non-capturing group )? makes this group optional
var re=/Deklinierte Form\s*\|\s*(\S+)\s*\}\}[^\v]+?\{\{Grundformverweis(?: Dekl)?\s*\|\s*(\S+)\}\}/g;
do {
var arr=re.exec(text);
if (arr != null && arr.length == 3){
if(!contains(arr[0],"\n=")){
extend.sp=arr[1];
extend.gf=arr[2];
extend.wt=contains(text,"{{Worttrennung}}\n\n") || contains(text,"{{Worttrennung}}\n:\n");
extend.ls=contains(text,"{{Lautschrift|…") || contains(text,"{{Lautschrift|...");
extend.hb=false;
if (contains(text,"Nominativ Plural")) {
extend.hb=contains(text,"{{Audio|}}");
if (extend.wt || extend.ls || extend.hb) {
$.get(buildUrl(arr[2]), handleResponseExtend);
}
}else if (contains(text,"Dativ Plural") && arr[1]=="Deutsch" && endsWith(t,"n")){
if (extend.wt || extend.ls) {
extend.kasus="deDatPln";
$.get(buildUrl(arr[2]), handleResponseExtend);
}
}else if (contains(text,"Genitiv Singular") && arr[1]=="Deutsch" && (t==arr[2]+"ses")){
if (extend.wt || extend.ls) {
extend.kasus="deGenSgses";
$.get(buildUrl(arr[2]), handleResponseExtend);
}
}else if (contains(text,"Genitiv Singular") && arr[1]=="Deutsch" && (t==arr[2]+"es")){
if (extend.wt || extend.ls) {
extend.kasus="deGenSges";
$.get(buildUrl(arr[2]), handleResponseExtend);
}
}else if (contains(text,"Genitiv Singular") && arr[1]=="Deutsch" && (t==arr[2]+"s")){
if (extend.wt || extend.ls) {
extend.kasus="deGenSgs";
$.get(buildUrl(arr[2]), handleResponseExtend);
}
}else if (contains(text,"Dativ Singular") && arr[1]=="Deutsch" && (t==arr[2]+"e")){
if (extend.wt || extend.ls) {
extend.kasus="deDatSge";
$.get(buildUrl(arr[2]), handleResponseExtend);
}
}
}
}
} while (arr != null);
}
function checkComp(text) {
if (contains(text,"{{Wortart|Substantiv|Deutsch") || !contains(text,"{{Wortart|")) {
if (contains(text,"{{Deutsch Substantiv Übersicht")
&& contains(text,"{{Worttrennung}}")
&& contains(text,"{{Lautschrift|")
&& !contains(text,"{{Lautschrift|...")
&& !contains(text,"{{Lautschrift|…")
) {
return;
}
if (contains(text,"{{Aussprache}}")) {
composit.ausspr=true;
}
if (contains(text,"{{Herkunft}}")) {
var a = getHerkunft(text);
var url = '';
if (a[0].length > 0) {
composit.w0w=a[0];
}
if (endsWith(a[1],'-')) {
url += "[["+a[0]+a[1].substr(0,a[1].length-1)+"]]";
composit.wbs='-';
composit.w1w=a[0]+a[1].substr(0,a[1].length-1);
} else {
url += "[["+a[0]+a[1]+"]]";
composit.wbs='';
composit.w1w=a[0]+a[1];
}
url += "[["+toLowerFirst(a[0]+a[1])+"]]";
if (a[2].length > 0) {
url += "[["+a[2]+"]]";
composit.w2w=a[2];
}
if (url.length>0) {
url = buildApi(url,"action=parse&prop=links&format=json&text=");
$.get(url, handleResponseLinksComp);
}
}
}
}
function addFlexionLinks(flexion,dpl) {
var node = document.getElementById("contentSub");
if(node){
var tn='Flektierte Form anlegen. ';
var p=node.parentNode;
var i=dpl.length-1;
var lsp='';
var br=true;
var t = '';
var j,nl;
for(;i>=0;i--){
t = dpl[i]['*'];
var ft = flexion[t];
var ls = '…';
var hb = 'Audio|';
var pnf ='';
var p4 ='';
var p7 ='I';
var anzGm=0;
nl =document.createElement("a");
if (lsp!=ft.sp){
lsp=ft.sp;
tn=tn+lsp+': ';
}
if (ft.vorlage == "S6-Sub") {
ls = '{{Lautschrift|…}}';
hb = '{{Audio|}}';
}
if (ft.vorlage == "de-Partizip") {
if (ft.hasOwnProperty("gm")) {
if (contains(ft.gm[0],"Perfekt")) {
p7 = "II";
}
}
}
if (!dpl[i].hasOwnProperty("exists")) {
if (ft.hasOwnProperty("gm")) {
p4=ft.gm.join('\n');
anzGm =ft.gm.length;
}
if (ft.hasOwnProperty("form")) {
p4=ft.form;
}
if (ft.hasOwnProperty("nf")) {
for (var nf in ft.nf) {
if (pnf.length==0) {
pnf+="\n{{Nebenformen}}\n:";
if(anzGm>1){
for (j=0;j<ft.nf[nf].length;j++){
if(j > 0) {pnf+="[["+nf+"]]\n:";}
pnf+="''"+ft.nf[nf][j]+":'' ";
}
}
} else {
if(anzGm>1){
for (j=0;j<ft.nf[nf].length;j++){
if(j > 0) {pnf+="[["+nf+"]]";}
pnf+="\n:''"+ft.nf[nf][j]+":'' ";
}
}else{
pnf+=", ";
}
}
pnf+="[["+nf+"]]";
}
}
if (pnf.length>0) {
pnf+="\n";
}
if (contains(t,'ß')){
pnf="\n{{Alternative Schreibweisen}}\n:{{CH&LI}} [["+t.replace(/ß/g,'ss')+"]]\n"+ pnf;
}
if (ft.ls.length>0) {
ls = ft.ls;
}
ls=$.trim(ls);
if (ft.hb.length>0) {
hb = ft.hb;
}
ft.exists=false;
nl.href=buildUrl2(t,"&action=edit")+
"&editintro=Vorlage:Autoedit/intro&preload=Vorlage:Autoedit/"+ft.vorlage+"&autoedit="+
encodeURIComponent(
repl("@NF@",pnf,"g;")+
repl("@1@",ft.wt,"g;")+
repl("@2@",ls,"g;")+
repl("@3@",hb,"g;")+
repl("@4@",p4,"g;")+
repl("@5@",ft.title,"g;")+
repl("@6@",ft.sp,"g;")+
repl("@7@",p7,"g")
)+"&autominor=false&autosummary=neu ("+version+")";
nl.innerHTML = t;
nl.setAttribute("style", "color:#00E000")
if(br){
br=false;
p.insertBefore(document.createElement("br"),node.nextSibling);
}
p.insertBefore(nl,node.nextSibling);
p.insertBefore(document.createTextNode(tn),node.nextSibling);
node = nl;
tn = ", ";
}
}
tn='Flektierte Form ansehen. ';
p=node.parentNode;
i=dpl.length-1;
lsp='';
br=true;
for(;i>=0;i--){
t = dpl[i]['*'];
nl =document.createElement("a");
if (dpl[i].hasOwnProperty("exists")) {
nl.href=buildUrl2(t,"");
nl.innerHTML = t;
nl.setAttribute("style", "color:#0000E0")
p.insertBefore(nl,node.nextSibling);
p.insertBefore(document.createTextNode(tn),node.nextSibling);
if(br){
br=false;
p.insertBefore(document.createElement("br"),node.nextSibling);
}
node = nl;
tn = ", ";
}
}
}
}
function addFlexionAdjEnd(name,title,wt,wte,ls,hb,form,vorlage) {
if (flexion[name] === undefined) {
flexion[name] = {};
}
var f=flexion[name];
f.exists=true;
f.title=title;
f.vorlage=vorlage;
f.sp="Deutsch";
if(wte.length<2){
wt=wt.replace(/·$/,'');
}
if (f.hasOwnProperty("wt")) {
if (f.wt.length < wt.length+wte.length && wt.length > 1){
f.wt=wt+wte;
}
} else {
if (wt.length > 1){
f.wt=wt+wte;
} else {
f.wt="";
}
}
f.wt=f.wt.replace(/··/g,"·");
if (f.hasOwnProperty("ls")) {
if (f.ls.length < ls.length){
f.ls=ls;
}
} else {
f.ls=ls;
}
if (startsWith(f.ls,"…") || startsWith(f.ls,"...")) {
f.ls="…";
}
if (f.hasOwnProperty("hb")) {
if (f.hb.length < hb.length){
f.hb=hb;
}
} else {
f.hb=hb;
}
if (!f.hasOwnProperty("form")) {
f.form =form;
}
}
function prepareWorttrennungAdj(wt) {
var re2 = /ch$|ck$|ph$|sh$|rh$|th$/g;
var re1 = /a$|e$|i$|o$|u$|ä$|ö$|ü$|y$/g;
if (startsWith(wt,':')) {
wt=wt.substr(1);
}
if (endsWith(wt,',')) {
wt=$.trim(wt.substr(0,wt.length-1));
}
if (endsWith(wt,'sch')) {
wt = insertStr(wt,-3,'·');
} else if (endsWith(wt,'e')) {
wt = wt.substr(0,wt.length-1);
} else if (wt.search(re2)>=0) {
wt = insertStr(wt,-2,'·');
} else if (wt.search(re1)>=0) {
wt = wt+'·';
} else {
wt = insertStr(wt,-1,'·');
}
return $.trim(wt);
}
function prepareLautschrift(t,ls,e) {
if (endsWith(ls,"-") || endsWith(ls,"…") || endsWith(ls,".")) {
return ls;
}
if (e=="n") {
return ls+e;
}
if (startsWith(e,"s")) {
if (endsWith(t,"s")) {
return ls.substr(0,ls.length-1)+e;
}else{
return (ls+e).replace(/ts$/,"ʦ");
}
}
if (endsWith(t,"b")) {return ls.substr(0,ls.length-1)+"b"+e;}
if (endsWith(t,"d")) {return ls.substr(0,ls.length-1)+"d"+e;}
if (endsWith(t,"g")) {
if (endsWith(ls,"ç") || endsWith(ls,"k")) {
return ls.substr(0,ls.length-1)+"ɡ"+e;
}
}
if (endsWith(t,"r")) {
if (endsWith(ls,"ɐ̯")) {
return ls.substr(0,ls.length-2)+"ʀ"+e;
} else if (endsWith(ls,"ɐ")) {
return ls.substr(0,ls.length-1)+"əʀ"+e;
}
}
if (!endsWith(t,"ss")) {
if (endsWith(t,"s")) {
return ls.substr(0,ls.length-1)+"z"+e;
}
}
if (endsWith(t,"v")) {return ls.substr(0,ls.length-1)+"v"+e;}
return ls+e;
}
function addFlexionAdj(param,title,wt,ls,hb,form,kls,khb) {
if (param == undefined) return;
var re = /\s+|<.*>|{.*}|am /g;
var nameList = param.split(re);
if (form == "Superla") {
if (endsWith(wt,"ten")) {
wt=wt.substr(0,wt.length-2);
}
if (startsWith(wt,'am ')) {
wt=wt.substr(3);
}
if (startsWith(ls,"am ")) {
ls=ls.substr(3);
}
} else {
wt=prepareWorttrennungAdj(wt);
}
for (var i=0;i<nameList.length;i++) {
if (nameList[i].length>2 && !contains(nameList[i],' ')) { //keine Leerz.
if (!contains(nameList[i],'(') && !contains(nameList[i],')')) {
var nli=nameList[i];
if (form == "Superla" && endsWith(nli,"ten")) {
nli=nli.substr(0,nli.length-2);
}
if (form == "Posi") {
ls=prepareLautschrift(title,ls,'');
addFlexionAdjEnd(nli+"e",title,wt,"e",ls+"ə",'',form,"de-Adj-e");
addFlexionAdjEnd(nli+"es",title,wt,"es",ls+"əs",'',form,"de-Adj-es");
if (kls == "…") {
addFlexionAdjEnd(nli+"er",title,wt,"er",ls+"ɐ",'',form,"de-Adj-er");
} else {
addFlexionAdjEnd(nli+"er",title,wt,"er",kls,khb,form,"de-Adj-er");
}
if (nli.search(/ah?$|eh?$|ih?$|oh?$|uh?$|äh?$|öh?$|üh?$|yh?$/g)<0) {
if (ls.search(/l$|m$|n$|ŋ$|n̩$|ʀ$/g)<0) {
addFlexionAdjEnd(nli+"en",title,wt,"en",ls+"n̩",'',form,"de-Adj-en");
} else {
addFlexionAdjEnd(nli+"en",title,wt,"en",ls+"ən",'',form,"de-Adj-en");
}
if (ls.search(/b$|d$|g$|ɡ$|k$|l$|m$|n$|ŋ$|p$|ʀ$|t$/g)<0) {
addFlexionAdjEnd(nli+"em",title,wt,"em",ls+"m̩",'',form,"de-Adj-em");
} else {
addFlexionAdjEnd(nli+"em",title,wt,"em",ls+"əm",'',form,"de-Adj-em");
}
} else {
addFlexionAdjEnd(nli+"en",title,wt,"en",ls+"ən",'',form,"de-Adj-en");
addFlexionAdjEnd(nli+"em",title,wt,"em",ls+"əm",'',form,"de-Adj-em");
}
} else {
if (form == "Superla") {
if(endsWith(ls,"n̩") || endsWith(ls,"ən")){
ls=ls.substr(0,ls.length-2);
addFlexionAdjEnd(nli+"e",title,wt,"e",ls+"ə",'',form,"de-Adj-e");
addFlexionAdjEnd(nli+"es",title,wt,"es",ls+"əs",'',form,"de-Adj-es");
addFlexionAdjEnd(nli+"er",title,wt,"er",ls+"ɐ",'',form,"de-Adj-er");
addFlexionAdjEnd(nli+"en",title,wt,"en",ls+"n̩",hb,form,"de-Adj-en");
addFlexionAdjEnd(nli+"em",title,wt,"em",ls+"əm",'',form,"de-Adj-em");
} else {
addFlexionAdjEnd(nli+"e",title,wt,"e",'','',form,"de-Adj-e");
addFlexionAdjEnd(nli+"es",title,wt,"es",'','',form,"de-Adj-es");
addFlexionAdjEnd(nli+"er",title,wt,"er",'','',form,"de-Adj-er");
addFlexionAdjEnd(nli+"en",title,wt,"en",ls,hb,form,"de-Adj-en");
addFlexionAdjEnd(nli+"em",title,wt,"em",'','',form,"de-Adj-em");
}
} else { // Komparativ
if(endsWith(ls,"ɐ")){
ls=ls.substr(0,ls.length-1);
addFlexionAdjEnd(nli+"e",title,wt,"e",ls+"əʀə",'',form,"de-Adj-e");
addFlexionAdjEnd(nli+"es",title,wt,"es",ls+"əʀəs",'',form,"de-Adj-es");
addFlexionAdjEnd(nli+"er",title,wt,"er",ls+"əʀɐ",'',form,"de-Adj-er");
addFlexionAdjEnd(nli+"en",title,wt,"en",ls+"əʀən",'',form,"de-Adj-en");
addFlexionAdjEnd(nli+"em",title,wt,"em",ls+"əʀəm",'',form,"de-Adj-em");
} else {
addFlexionAdjEnd(nli+"e",title,wt,"e",'','',form,"de-Adj-e");
addFlexionAdjEnd(nli+"es",title,wt,"es",'','',form,"de-Adj-es");
addFlexionAdjEnd(nli+"er",title,wt,"er",'','',form,"de-Adj-er");
addFlexionAdjEnd(nli+"en",title,wt,"en",'','',form,"de-Adj-en");
addFlexionAdjEnd(nli+"em",title,wt,"em",'','',form,"de-Adj-em");
}
}
}
}
}
}
}
function flex(title,vorlage) {
this.title=title;
this.vorlage=vorlage;
this.exists=true;
this.wt='';
this.ls='';
this.hb='';
this.gm=[];
this.nf={};
}
function addFlexionSub(v,it,p,title,wt,ls,hb,gm,ht) {
var param = getTemplateParam2(v,it,p);
if (param == undefined) return;
var re = /\s+|<[^>]*>|{{[^}]*}}|\bder |\bdie |\bdas |\bdes |\bdem |\bden |\bthe /g;
var nameList = param.split(re);
var formen = [];
var i=0;
var j=0;
for (i=0;i<nameList.length;i++) {
if (nameList[i].length>2 && nameList[i].length>=title.length-1) { //Pl+Sg-Etant.
if (!contains(nameList[i],'(') && !contains(nameList[i],')')) {
formen.push(nameList[i]);
}
}
}
for (i=0;i<formen.length;i++) {
if (formen[i]!=title) {
if (flexion[formen[i]] === undefined) {
flexion[formen[i]] = new flex(title,"S6-Sub");
}
var fi=flexion[formen[i]];
for (j=0;j<formen.length;j++) {
if(formen[i]!=formen[j]) {
if(typeof fi.nf[formen[j]] === "undefined"){
fi.nf[formen[j]] = [];
}
fi.nf[formen[j]].push(gm);
}
}
if (fi.wt.length < wt.length){
fi.wt=wt;
}
if (fi.ls.length < ls.length){
fi.ls=ls;
}
if (fi.hb.length < hb.length){
fi.hb=hb;
}
fi.sp=extractStr(getTemplateParam2(v,it,"0"),""," Substantiv",'R');
var dative = "";
if (fi.sp == "Deutsch" && gm == "Dativ Singular") {
if (title + 'e' == formen[i] || title + 'se' == formen[i]) {
dative = "{{Dativ-e}} ";
}
}
if($.inArray('*'+dative+gm+ht,fi.gm) == -1){
fi.gm.push('*'+dative+gm+ht);
}
}
}
}
function apiParseLinks(flexion,hr) {
var url = '';
for (var i in flexion) {
url += "[["+i+"]]";
}
if (url.length>0) {
url = buildApi(url,"action=parse&prop=links&format=json&text=");
$.get(url, hr);
}
}
function createDim(v,title,it) {
var i,s,w,dw;
var endung='';
var laut='';
var nowtls=false;
var tsge='';
var tple='';
var t=extractStr2(v.text,getTemplateParam2(v.tt,it,"0"),"\n=","");
var wfn=extractStr(t,"{{Verkleinerungsformen}}","\n{{",'B');
var ar=getLinks(wfn);
if(ar.length==0){
return;
}
var titlea=toAnsi(title);
var tpl=getTemplateParam2(v.tt,it,"Nominativ Plural");
if (tpl==undefined) {
tpl=getTemplateParam2(v.tt,it,"Nominativ Plural 1");
}
if (tpl==undefined) {
tpl='';
} else {
tpl=extractStr(tpl,"die ","",'B');
}
if(endsWith(title,"e")){
tsge=title.substr(0,title.length-1);
}
if(endsWith(tpl,"e")){
tple=tpl.substr(0,tpl.length-1);
}
for(i=0;i<ar.length;i++){
w=ar[i];
var schwa=false;
var plural=false;
nowtls=false;
if(endsWith(w,"chen")){
endung="chen";
laut="çən";
} else if(endsWith(w,"lein")){
endung="lein";
laut="laɪ̯n";
} else {
endung="";
}
if(title+endung == w){
;
} else if(tsge+endung == w){
schwa=true;
} else if(tpl+endung == w){
plural=true;
} else if(tple+endung == w){
plural=true;
schwa=true;
} else {
nowtls=true;
}
var genend=getGenusEnd(v.head);
var und = '';
var hk="{{Herkunft}}\n:[[Ableitung]] der Verkleinerungsform aus dem Substantiv ''[["
+title+"]]''";
if (tsge+endung == w || startsWithUml(w,tsge)){
und = ' und';
hk+=", Subtraktionsfuge -e";
}
if (startsWithUml(w,title) || startsWithUml(w,tsge)){
und = ' und';
hk+=", Umlautung";
}
hk+=und + " mit dem [[Derivatem]] ([[Ableitungsmorphem]]) ''[[-"+endung+"]]''\n";
diminutiv[w]={};
dw=diminutiv[w];
dw.bed="\n:[1] klein"+genend+" [["+title+"]]\n";
dw.rest=hk;
s=extractStr2(v.text,"\n{{Referenzen}}","\n\n","");
s=s.replace(new RegExp(title,'g'),w);
if(title != titlea){
s=s.replace(new RegExp(titlea,'g'),toAnsi(w));
}
dw.ref=s.replace(/\n\n$/,'');
if(nowtls){
dw.lss="{{Lautschrift|…}}";
dw.lsp=dw.lss;
dw.wt=" , {{Pl.}} ";
} else {
worttr=getWtStruct(extractStr(t,"{{Worttrennung}}","\n{{",'B'));
lautschr=getSgPlStruct(extractStr(t,":{{IPA}}","\n",'B'));
if(plural){
dw.wt=buildWtAltNeu(worttr,"Pl.");
s=buildPropNeu(lautschr,"Pl.");
} else {
dw.wt=buildWtAltNeu(worttr,"Sg.");
s=buildPropNeu(lautschr,"Sg.");
}
if(schwa){
dw.wt=dw.wt.substr(0,dw.wt.length-1);
dw.wt=prepareWorttrennungDim(dw.wt)
s=s.replace(/ə}}/,"}}");
}
if(s.length==0||contains(s,"…")){
dw.lss="{{Lautschrift|…}}";
dw.lsp=dw.lss;
}else{
dw.lsp=lsPlusE(s,title,laut);
dw.lss=lsPlusE(s,title,laut);
}
dw.wt=wtPlusE(dw.wt,"·"+endung)+", {{Pl.}} "+wtPlusE(dw.wt,"·"+endung);
dw.wt=dw.wt.replace(/··/g,"·");
}
}
if (!isEmpty(diminutiv)) {
var url = buildApi(wfn,"action=parse&prop=links&format=json&text=");
$.get(url, handleResponseDim);
}
}
function prepareWorttrennungDim(wt) {
var re2 = /·ch$|·ck$|·ph$|·sh$|·rh$|·th$/g;
var re1 = /·.$/g;
if (startsWith(wt,':')) {
wt=wt.substr(1);
}
if (endsWith(wt,',')) {
wt=$.trim(wt.substr(0,wt.length-1));
}
if (endsWith(wt,'·sch')) {
wt = wt.replace(/·sch$/,'sch');
} else if (wt.search(re2)>=0) {
wt = wt.substr(0,wt.length-3)+wt.substr(wt.length-2,2);
} else if (wt.search(re1)>=0) {
wt = wt.substr(0,wt.length-2)+wt.substr(wt.length-1,1);
}
return $.trim(wt);
}
function createWF(v,text,title,it) {
var t=extractStr2(text,getTemplateParam2(v,it,"0"),"\n=","");
var wfn=extractStr(t,"{{Weibliche Wortformen}}","\n{{",'B');
var wf=title.replace(/e$/,'')+"in";
var titlea=toAnsi(title);
if(!contains(wfn,wf)){
return;
}
var s=extractStr(t,"{{Bedeutungen}}","\n{{Weibliche Wortformen");
var hk="{{Herkunft}}\n:[[Ableitung]] ([[Motion]], [[Movierung]]) des Femininums aus der männlichen Form ''[["
+title+"]]''";
if (endsWith(title,"e")){
hk+=", Subtraktionsfuge -e und";
}
hk+=" mit dem [[Derivatem]] ([[Ableitungsmorphem]]) ''[[-in]]''\n\n";
if (contains(s,"{{Herkunft}}")){
s=s.replace(/\{\{Herkunft\}\}[^\v]*?\n\n/,hk);
}else if (contains(s,"{{Symbole}}")){
s=s.replace(/(\{\{Symbole\}\}[^\v]*?\n\n)/,"$1"+hk);
}else if (contains(s,"{{Abkürzungen}}")){
s=s.replace(/(\{\{Abkürzungen\}\}[^\v]*?\n\n)/,"$1"+hk);
}else{
s=s.replace(/(\{\{Bedeutungen\}\}[^\v]*?\n\n)/,"$1"+hk);
}
feminin.bed=extractStr(s,"{{Bedeutungen}}","\n{{Weibliche Wortformen",'B');
s=extractStr(t,"\n{{Weibliche Wortformen}}","\n=",'L');
s=extractStr(s,"\n{{","\n=",'R')+'\n';
s=s.replace(/\{\{Wortbildungen\}\}[^\v]*?\n\n/,'');
feminin.rest=s.replace(/\n\n$/,'\n');
s=extractStr2(text,"\n{{Referenzen}}","\n\n","");
s=s.replace(new RegExp(title,'g'),wf);
if(title != titlea){
s=s.replace(new RegExp(titlea,'g'),toAnsi(wf));
}
feminin.ref=s.replace(/\n\n$/,'');
worttr=getWtStruct(extractStr(t,"{{Worttrennung}}","\n{{",'B'));
lautschr=getSgPlStruct(extractStr(t,":{{IPA}}","\n",'B'));
feminin.wt=buildWtAltNeu(worttr,"Sg.");
s=buildPropNeu(lautschr,"Sg.");
if(endsWith(title,"or")){
s=buildPropNeu(lautschr,"Pl.");
s=s.replace(/ʀən}}/,"ɐ̯}}");
}
if(endsWith(title,"e")){
feminin.wt=feminin.wt.substr(0,feminin.wt.length-1);
s=s.replace(/ə}}/,"}}");
}
if(s.length==0||contains(s,"…")){
feminin.lss="{{Lautschrift|…}}";
feminin.lsp=feminin.lss;
}else{
feminin.lsp=lsPlusE(s,title,"ɪnən");
feminin.lss=lsPlusE(s,title,"ɪn");
}
feminin.wt=wtPlusE(feminin.wt,"in")+", {{Pl.}} "+wtPlusE(feminin.wt,"in·nen");
feminin.wt=feminin.wt.replace(/··/g,"·");
if (wf.length>0) {
var url = buildApi(wfn,"action=parse&prop=links&format=json&text=");
$.get(url, handleResponseFem);
}
}
function createFlexionAdj(v,title,it) {
var pwt = '';
var kwt = '';
var swt = '';
var pls = '…';
var kls = '…';
var sls = '…';
var khb = 'Audio|';
var shb = 'Audio|';
var t = '';
var ii = getTemplate2(v,"Worttrennung",it);
if (ii>0) {
pwt = $.trim(getTextAfter2(v,ii));
ii =getTemplate2(v,"Komp.",ii);
if (ii>0) {
kwt = $.trim(getTextAfter2(v,ii));
ii =getTemplate2(v,"Sup.",ii);
if (ii>0) {
swt = $.trim(getTextAfter2(v,ii).split('\n')[0]);
}
}
}
ii =getTemplate2(v,"Aussprache",ii+1);
if (ii>0) {
ii =getTemplate2(v,"Lautschrift",ii);
if (ii>0) {
pls = getTemplateParam2(v,ii,"1");
ii =getTemplate2(v,"Komp.",ii);
if (ii>0) {
ii =getTemplate2(v,"Lautschrift",ii);
if (ii>0) {
kls = getTemplateParam2(v,ii,"1");
ii =getTemplate2(v,"Sup.",ii);
if (ii>0) {
ii =getTemplate2(v,"Lautschrift",ii);
if (ii>0) {
sls = getTemplateParam2(v,ii,"1");
}
}
}
}
}
ii =getTemplate2(v,"Hörbeispiele",ii+1);
if (ii>0) {
ii =getTemplate2(v,"Komp.",ii);
if (ii>0) {
ii =getTemplate2(v,"Audio",ii);
if (ii>0) {
khb = "Audio|";
t = getTemplateParam2(v,ii,"1");
if (t != undefined) {
khb += t;
t = getTemplateParam2(v,ii,"2");
if (t != undefined) {
khb += "|"+t;
}
}
ii =getTemplate2(v,"Sup.",ii);
if (ii>0) {
ii =getTemplate2(v,"Audio",ii);
if (ii>0) {
shb = "Audio|";
t = getTemplateParam2(v,ii,"1");
if (t != undefined) {
shb += t;
t = getTemplateParam2(v,ii,"2");
if (t != undefined) {
shb += "|"+t;
}
}
}
}
}
}
}
}
addFlexionAdj(getTemplateParam2(v,it,"Superlativ"),title,swt,sls,shb,"Superla",kls,khb);
var komp = getTemplateParam2(v,it,"Komparativ");
addFlexionAdj(komp,title,kwt,kls,khb,"Kompara",kls,khb);
var posi = getTemplateParam2(v,it,"Positiv");
if (endsWith(posi,"e")) {
posi = posi.substr(0,posi.length-1);
pls = pls.substr(0,pls.length-1);
} else if(endsWith(posi,"el")) {
if (!endsWith(pls,"eːl")) {
posi = posi.substr(0,posi.length-2)+'l';
if (endsWith(pls,"əl")) {
pls = pls.substr(0,pls.length-2)+'l';
}else{
pls = pls.substr(0,pls.length-1);
}
pwt = pwt.substr(0,pwt.length-3)+'·l';
if (pwt.length > 3 && pwt[pwt.length-4] == '·') {
pwt = pwt.substr(0,pwt.length-4)+pwt.substr(pwt.length-3);
}
}
}
if (posi+"er" != komp){
kls = '…';
}
addFlexionAdj(posi,title,pwt,pls,'',"Posi",kls,khb);
}
function buildWtAltNeu(o,p) {
var wt='';
if(o.hasOwnProperty("alt")){
if(o.alt.hasOwnProperty(p)){
wt="\n:''Alte Worttrennung:'' "+o.alt[p];
}
}
if(o.hasOwnProperty("neu")){
if(o.neu.hasOwnProperty(p)){
if(o.hasOwnProperty("alt") && (o.alt[p] != o.neu[p])){
wt="''Neue Worttrennung:'' "+o.neu[p]+wt;
}else{
wt=o.neu[p];
}
}
}
return wt;
}
function buildPropNeu(o,p) {
if(o.hasOwnProperty("neu")){
if(o.neu.hasOwnProperty(p)){
return o.neu[p];
}
}
return '';
}
function createFlexionSub(v,text,title,it) {
var t=extractStr2(text,getTemplateParam2(v,it,"0"),"\n=","");
worttr=getWtStruct(extractStr(t,"{{Worttrennung}}","\n{{",'B'));
lautschr=getSgPlStruct(extractStr(t,":{{IPA}}","\n",'B'));
var hbs=getSgPlStruct(extractStr(t,":{{Hörbeispiele}}","\n",'B'));
var ht = " des Substantivs '''[["+title+"]]'''";
var p1 = [""," 1"," 2"," 3"," 4"];
var p2 = ["","1","2","3","4"];
var wt,ls,hb;
for (var k=0;k<p1.length;k++) {
wt=buildWtAltNeu(worttr,"Pl."+p2[k]);
ls=buildPropNeu(lautschr,"Pl."+p2[k]);
hb=buildPropNeu(hbs,"Pl."+p2[k]);
addFlexionSub(v,it,"Genitiv Singular"+p1[k],title,'','','',"Genitiv Singular",ht);
addFlexionSub(v,it,"Dativ Singular"+p1[k],title,'','','',"Dativ Singular",ht);
addFlexionSub(v,it,"Akkusativ Singular"+p1[k],title,'','','',"Akkusativ Singular",ht);
addFlexionSub(v,it,"Instrumental Singular"+p1[k],title,'','','',"Instrumental Singular",ht);
addFlexionSub(v,it,"Lokativ Singular"+p1[k],title,'','','',"Lokativ Singular",ht);
addFlexionSub(v,it,"Vokativ Singular"+p1[k],title,'','','',"Vokativ Singular",ht);
addFlexionSub(v,it,"Plural"+p1[k],title,wt,ls,hb,"Plural",ht);
addFlexionSub(v,it,"Nominativ Plural"+p1[k],title,wt,ls,hb,"Nominativ Plural",ht);
addFlexionSub(v,it,"Genitiv Plural"+p1[k],title,'','','',"Genitiv Plural",ht);
addFlexionSub(v,it,"Dativ Plural"+p1[k],title,'','','',"Dativ Plural",ht);
addFlexionSub(v,it,"Akkusativ Plural"+p1[k],title,'','','',"Akkusativ Plural",ht);
addFlexionSub(v,it,"Instrumental Plural"+p1[k],title,'','','',"Instrumental Plural",ht);
addFlexionSub(v,it,"Lokativ Plural"+p1[k],title,'','','',"Lokativ Plural",ht);
addFlexionSub(v,it,"Vokativ Plural"+p1[k],title,'','','',"Vokativ Plural",ht);
}
}
function createFlexionVerb(v,text,title,it) {
var t, p1wt = '';
var p2wt = '';
var p1ls = '…';
var p2ls = '…';
var p1hb = 'Audio|';
var p2hb = 'Audio|';
var ii = getTemplate2(v,"Worttrennung",it);
var wt=$.trim(extractStr(text,"{{Worttrennung}}","\n{{",'L'));
p1wt = buildWtAltNeu(getWtSg(wt),0).replace(/\n/g,"d\n")+'d';
p2wt = buildWtAltNeu(getWtPart(wt),0);
ii = getTemplate2(v,"Aussprache",ii+1);
if (ii>0) {
ii = getTemplate2(v,"Lautschrift",ii);
if (ii>0) {
p1ls = getTemplateParam2(v,ii,"1");
ii = getTemplate2(v,"Part.",ii);
if (ii>0) {
ii =getTemplate2(v,"Lautschrift",ii);
if (ii>0) {
p2ls = getTemplateParam2(v,ii,"1");
}
}
}
ii = getTemplate2(v,"Hörbeispiele",ii+1);
if (ii>0) {
ii = getTemplate2(v,"Part.",ii);
if (ii>0) {
ii = getTemplate2(v,"Audio",ii);
if (ii>0) {
p2hb = "Audio|";
t = getTemplateParam2(v,ii,"1");
if (t != undefined) {
p2hb += t;
t = getTemplateParam2(v,ii,"2");
if (t != undefined) {
p2hb += "|"+t;
}
}
}
}
}
}
$.get(buildUrl2(title+" (Konjugation)",''), handleResponseKonjugation);
addFlexionPartizip("Deutsch",title+'d',title,p1wt,p1ls+'t',p1hb,"Präsens");
addFlexionPartizip("Deutsch",getTemplateParam2(v,it,"Partizip II"),title,p2wt,p2ls,p2hb,"Perfekt");
}
function addFlexionPartizip(spr,p,title,wt,ls,hb,gm) {
if (p == undefined) return;
var formen = [];
formen.push(p);
var i=0;
var j=0;
// alert("Flexion "+JSON.stringify(formen));
for (i=0;i<formen.length;i++) {
if (formen[i]!=title) {
if (flexion[formen[i]] === undefined) {
flexion[formen[i]] = new flex(title,"de-Partizip");
}
var fi=flexion[formen[i]];
if (fi.wt.length < wt.length){
fi.wt=wt;
}
if (fi.ls.length < ls.length){
fi.ls=ls;
}
if (fi.hb.length < hb.length){
fi.hb=hb;
}
fi.sp=spr;
if($.inArray(gm,fi.gm) == -1){
fi.gm.push(gm);
}
}
}
}
function addFlexionVerb(spr,param,title,wt,ls,hb,gm,ht) {
param=param.replace(/<[^>]*>|\n|,| /g,' ');
param=param.replace(/\bmich\b|\bdich\b|\bsich\b|\buns\b|\beuch\b/g,'');
var re = /!|\bich\b|\bdu\b|\ber\/sie\/es\b|\bwir\b|\bihr\b|\bsie\b/g;
var nameList = param.split(re);
var formen = [];
var i=0;
var j=0;
for (i=0;i<nameList.length;i++) {
nameList[i]=$.trim(nameList[i]);
if (nameList[i].length>2) {
if (!contains(nameList[i],'(') && !contains(nameList[i],')')) {
formen.push(nameList[i]);
}
}
}
for (i=0;i<formen.length;i++) {
if (formen[i]!=title) {
if (flexionv[formen[i]] === undefined) {
flexionv[formen[i]] = new flex(title,"de-Verb");
}
var fi=flexionv[formen[i]];
for (j=0;j<formen.length;j++) {
if(formen[i]!=formen[j]) {
if(typeof fi.nf[formen[j]] === "undefined"){
fi.nf[formen[j]] = [];
}
fi.nf[formen[j]].push(gm);
}
}
if (fi.wt.length < wt.length){
fi.wt=wt;
}
if (fi.ls.length < ls.length){
fi.ls=ls;
}
if (fi.hb.length < hb.length){
fi.hb=hb;
}
fi.sp=spr;
var g="*"+gm+" des Verbs '''[["+thispage+"]]'''";
if($.inArray(g,fi.gm) == -1){
fi.gm.push(g);
}
}
}
}
function wtPlusE(wt,e){
var a=wt.split("\n");
var i;
for(i=0;i<a.length;i++){
if(!startsWith(e,'·')){
if(endsWith(a[i],"sch")){
a[i]=insertStr(a[i],-3,'·');
}else if (a[i].search(/ch$|ck$|ph$|sh$|rh$|th$/g)>=0) {
a[i]=insertStr(a[i],-2,'·');
}else if (a[i].search(/a$|e$|i$|o$|u$|ä$|ö$|ü$|y$/g)<0) {
a[i]=insertStr(a[i],-1,'·');
}
}
a[i]+=e;
}
return a.join("\n");
}
function lsPlusE(ls,t,e){
var a=ls.split("}}");
var i;
for(i=0;i<a.length;i++){
if(a[i].length>0){
a[i]=prepareLautschrift(t,a[i],e);
}
}
return a.join("}}");
}
function createFlexionWtLs(v,it) {
var param = getTemplateParam2(v,it,"Nominativ Singular");
if (param == undefined) param='';
var re = /\s+|<[^>]*>|{{[^}]*}}|\bder |\bdie |\bdas |\bdes |\bdem |\bden |\bthe /g;
var nameList = param.split(re);
var NomSg =nameList[1];
var wts=buildWtAltNeu(worttr,"Sg.");
var lss=buildPropNeu(lautschr,"Sg.");
for (var i in flexion) {
var fi=flexion[i];
if (i==NomSg+'e'){
if (fi.wt.length==0){
fi.wt=wtPlusE(wts,'e');
}
if (fi.ls.length==0){
fi.ls=lsPlusE(lss,NomSg,"ə");
}
}
if (i==NomSg+'es'){
if (fi.wt.length==0){
fi.wt=wtPlusE(wts,'es');
}
if (fi.ls.length==0){
fi.ls=lsPlusE(lss,NomSg,"əs");
}
}
if (i==NomSg+'ses'){
if (fi.wt.length==0){
fi.wt=wtPlusE(wts,'·ses');
}
if (fi.ls.length==0){
fi.ls=lsPlusE(lss,NomSg,"səs");
}
}
if (i==NomSg+'s'){
if (fi.wt.length==0){
fi.wt=wts.replace(/\n/g,"s\n")+'s';
}
if (fi.ls.length==0){
fi.ls=lsPlusE(lss,NomSg,"s");
}
}
if (i==NomSg+'n'){
if (fi.wt.length==0){
fi.wt=wts.replace(/\n/g,"n\n")+'n';
}
if (fi.ls.length==0){
fi.ls=lsPlusE(lss,NomSg,"n");
}
}
for (var j in flexion) {
if (i==j+'n'){
if (fi.wt.length==0){
fi.wt=flexion[j].wt.replace(/\n/g,"n\n")+'n';
}
if (fi.ls.length==0){
fi.ls=flexion[j].ls.replace(/([^….])\}\}/g,"$1n}}");
if (endsWith(i,"en")){
fi.ls=anpassenLs(i,fi.ls);
}
}
}
}
}
}
function createFlexion(sct,title) {
if(!window.hasOwnProperty("autoedit")){return;}
var i,j,si,sj,w=[];
for(i=1;i<sct.section.length;i++){
si=sct.section[i];
for(j=1;j<si.child.section.length;j++){
sj=si.child.section[j];
var it=getTemplate2(sj.tt,"Deutsch Substantiv Übersicht",0);
if(it>=0) {
createFlexionSub(sj.tt,sj.text,title,it);
createFlexionWtLs(sj.tt,it);
createWF(sj.tt,sj.text,title,it);
createDim(sj,title,it);
}
var sp=["Esperanto","Englisch","Polnisch","Estnisch"];
var k;
for(k=0;k<sp.length;k++){
it=getTemplate2(sj.tt,sp[k]+" Substantiv Übersicht",0);
if(it>=0) {
createFlexionSub(sj.tt,sj.text,title,it);
}
}
it=getTemplate2(sj.tt,"Deutsch Adjektiv Übersicht",0);
if(it>=0 && !contains(title,' ') && !contains(title,'_')) {
if(getTemplateParam2(sj.tt,it,"keine weiteren Formen") === undefined){
if (!(endsWith(title,"mittel") || endsWith(title,"viel"))) {
createFlexionAdj(sj.tt,title,it);
}
}
}
it=getTemplate2(sj.tt,"Deutsch Verb Übersicht",0);
if(it>=0) {
if (!(endsWith(title,"sein") || endsWith(title,"tun"))) {
createFlexionVerb(sj.tt,sj.text,title,it);
}
}
}
}
if(!isEmpty(flexion)){
apiParseLinks(flexion,handleResponseLinks);
}
}
var templates = [];
function templatep(name,value){
this.name=name;
this.value=value;
}
function getTemplate(name,start){
for (var i=start;i<templates.length;i++) {
if(templates[i][0].name=='0' && templates[i][0].value==name) {
return i;
}
}
return -1;
}
function getTemplate2(t,name,start){
for (var i=start;i<t.length;i++) {
if(t[i][0].name=='0' && t[i][0].value==name) {
return i;
}
}
return -1;
}
function getTemplateParam(index,name){
for (var i=templates[index].length-1;i>=0;i--) {
if (templates[index][i].name==name) {
return templates[index][i].value;
}
}
return undefined;
}
function getTemplateParam2(t,index,name){
for (var i=t[index].length-1;i>=0;i--) {
if (t[index][i].name==name) {
return t[index][i].value;
}
}
return undefined;
}
function getTextAfter(index){
if (templates[index+1][0].name == 'T') {
return templates[index+1][0].value;
}
return '';
}
function getTextAfter2(t,index){
if (t[index+1][0].name == 'T') {
return t[index+1][0].value;
}
return '';
}
function wse(obj){
this.state=obj.state;
this.tlist=obj.tlist;
this.tpnum=obj.tpnum;// template parameter nummer
this.pname=obj.pname;
this.pval=obj.pval;
}
// simple Wiki Parser
function parseWiki(text,templates,rekursiv,warn)
{
var chr = '';
var nowikistate = 0;
var stack = [];
var i=0;
var pos=0;
var p= new ph(rekursiv); //zeiger auf lokale variable
var aktwse = new wse({state:1,tlist:[],tpnum:0,pname:'',pval:''});
text+="\n";
var textlow=text.toLowerCase();
var tmptxt='';
var textlist =[];
var debug = false;
while (pos<text.length){
chr = text.charAt(pos);
if (debug) {
debug = confirm("parseWiki ["+chr+"]"+text.substr(pos+1,50)+"\nstate="+aktwse.state+"\npos="+pos+"\nfrom="+from+"\nlevel="+level+"\nattr="+attr+"\nattr1="+attr1+"\nval="+val+"\ntag="+tag+"\nakthse.sb="+akthse.sb+"\nsb="+sb+"\nstack[level].sb="+stack[level].sb);
}
switch (aktwse.state) { //switch1
case 1:
if (chr == '\n') {
tmptxt+=chr;
aktwse.state=3;
} else if (chr == '{') {
if (containsAt(textlow,"{{{{",pos)) {
stack.push(new wse(aktwse));
aktwse.state=21;
pos++;
} else if (containsAt(textlow,"{{{",pos)) {
pos+=2;
} else if (containsAt(textlow,"{{",pos)) {
stack.push(new wse(aktwse));
aktwse.tlist = [];
aktwse.state=21;
pos++;
}
} else if (chr == '}') {
if (containsAt(textlow,"}}}}",pos)) {
aktwse.state=2;
pos++;
} else if (containsAt(textlow,"}}}",pos)) {
pos+=2;
} else if (containsAt(textlow,"}}",pos)) {
aktwse.state=2;
pos++;
}
} else if (chr == '<' && containsAt(textlow,"<nowiki",pos)) {
nowikistate = 1;
aktwse.state=11;
pos+=6;
} else {
tmptxt+=chr;
} break;
case 3:
if (chr == '\n') {
tmptxt+=chr;
aktwse.state=3;
} else if (chr == '=') {
tmptxt+=chr;
aktwse.state=3;
} else {
aktwse.state=1;
pos--;
} break;
case 11:
i = text.indexOf('>', pos);
if (i >= 0){
pos = i;
aktwse.state = 13;
}else{
pos =text.length;
warn.push(new warning(-1,"parseWiki nowiki end not found: "+pos+" state="+aktwse.state));
aktwse.state = 1;
} break;
case 13:
i = textlow.indexOf('</nowiki', pos);
if (i >= 0){
pos = i;
aktwse.state = 15;
}else{
pos =text.length;
warn.push(new warning(-1,"parseWiki </nowiki not found: "+pos+" state="+aktwse.state));
aktwse.state = 1;
} break;
case 15:
i = textlow.indexOf('>', pos);
if (i >= 0){
pos = i;
aktwse.state = nowikistate;
}else{
pos =text.length;
warn.push(new warning(-1,"parseWiki </nowiki end not found: "+pos+" state="+aktwse.state));
aktwse.state = 1;
} break;
case 21:
if (chr == '}'){
if (containsAt(textlow,"}}",pos)) {
aktwse.state=2;
pos++;
} else {
aktwse.state=1;
}
} else if (chr == '{') {
if (containsAt(textlow,"{{{{",pos)) {
stack.push(new wse(aktwse));
aktwse.tlist = [];
aktwse.state=21;
pos++;
} else if (containsAt(textlow,"{{{",pos)) {
stack.push(new wse(aktwse));
aktwse.state=31;
pos+=2;
} else if (containsAt(textlow,"{{",pos)) {
stack.push(new wse(aktwse));
aktwse.tlist = [];
aktwse.state=21;
pos++;
}
} else if (chr == '}') {
if (containsAt(textlow,"}}}}",pos)) {
aktwse.state=2;
pos++;
} else if (containsAt(textlow,"}}}",pos)) {
pos+=2;
} else if (containsAt(textlow,"}}",pos)) {
aktwse.state=2;
pos++;
}
} else if (chr == '|') {
aktwse.state=1;
} else if (chr == '<' && containsAt(textlow,"<nowiki",pos)) {
nowikistate = aktwse.state;
aktwse.state=11;
pos+=6;
} else {
aktwse.state=23;
aktwse.tpnum=0;
aktwse.pval = chr;
} break;
case 23:
if (chr == '}'){
if (containsAt(textlow,"}}",pos)) {
aktwse.tlist.push(new templatep('0',aktwse.pval));
aktwse.pval='';
aktwse.state=2;
pos++;
} else {
aktwse.state=1;
}
} else if (chr == '{') {
if (containsAt(textlow,"{{{{",pos)) {
stack.push(new wse(aktwse));
aktwse.tlist = [];
aktwse.state=21;
pos++;
} else if (containsAt(textlow,"{{{",pos)) {
stack.push(new wse(aktwse));
aktwse.state=31;
pos+=2;
} else if (containsAt(textlow,"{{",pos)) {
stack.push(new wse(aktwse));
aktwse.tlist = [];
aktwse.state=21;
pos++;
}
} else if (chr == '|') {
aktwse.tlist.push(new templatep('0',$.trim(aktwse.pval)));
aktwse.pval='';
aktwse.state=25;
} else if (chr == '<' && containsAt(textlow,"<nowiki",pos)) {
nowikistate = aktwse.state;
aktwse.state=11;
pos+=6;
} else {
aktwse.pval += chr;
} break;
case 25:
if (chr == '}'){
if (containsAt(textlow,"}}",pos)) {
aktwse.tpnum++;
aktwse.tlist.push(new templatep(aktwse.tpnum.toString(),aktwse.pval));
aktwse.state=2;
pos++;
} else {
aktwse.pval += chr;
}
} else if (chr == '{') {
if (containsAt(textlow,"{{{{",pos)) {
stack.push(new wse(aktwse));
aktwse.tlist = [];
aktwse.state=21;
pos++;
} else if (containsAt(textlow,"{{{",pos)) {
stack.push(new wse(aktwse));
aktwse.state=31;
pos+=2;
} else if (containsAt(textlow,"{{",pos)) {
stack.push(new wse(aktwse));
aktwse.tlist = [];
aktwse.state=21;
pos++;
}
} else if (chr == '|') {
aktwse.tpnum++;
aktwse.tlist.push(new templatep(aktwse.tpnum.toString(),aktwse.pval));
aktwse.pval='';
aktwse.state=25;
} else if (chr == '=') {
aktwse.pname = aktwse.pval;
aktwse.pval='';
aktwse.state=27;
} else if (chr == '<' && containsAt(textlow,"<nowiki",pos)) {
nowikistate = aktwse.state;
aktwse.state=11;
pos+=6;
} else {
aktwse.pval += chr;
} break;
case 27:
if (chr == '}'){
if (containsAt(textlow,"}}",pos)) {
aktwse.tlist.push(new templatep($.trim(aktwse.pname),$.trim(aktwse.pval)));
aktwse.state=2;
pos++;
} else {
aktwse.pval += chr;
}
} else if (chr == '{') {
if (containsAt(textlow,"{{{{",pos)) {
stack.push(new wse(aktwse));
aktwse.tlist = [];
aktwse.state=21;
pos++;
} else if (containsAt(textlow,"{{{",pos)) {
stack.push(new wse(aktwse));
aktwse.state=31;
pos+=2;
} else if (containsAt(textlow,"{{",pos)) {
stack.push(new wse(aktwse));
aktwse.tlist = [];
aktwse.state=21;
pos++;
}
} else if (chr == '|') {
aktwse.tlist.push(new templatep($.trim(aktwse.pname),$.trim(aktwse.pval)));
aktwse.pval='';
aktwse.state=25;
} else if (chr == '<' && containsAt(textlow,"<nowiki",pos)) {
nowikistate = aktwse.state;
aktwse.state=11;
pos+=6;
} else {
aktwse.pval += chr;
} break;
case 31:
if (chr == '}'){
if (containsAt(textlow,"}}}",pos)) {
aktwse.state=2;
pos+=2;
} else {
aktwse.pval += chr;
}
}
default:
warn.push(new warning(-1,"parseWiki internal error at: "+pos+" state="+aktwse.state));
} //switch1
switch (aktwse.state) { //switch2
case 2:
if (stack.length==1) {
textlist =[];
textlist.push(new templatep('T',tmptxt));
templates.push(textlist);
tmptxt='';
if (aktwse.tlist.length>0){
templates.push(aktwse.tlist);
}
}
if (stack.length>0) {
aktwse=stack.pop();
} else {
warn.push(new warning(-1,"parseWiki Fehler in Vorlagenstruktur: pos="+pos+" state="+aktwse.state));
}
state=1;
break;
default:
} //switch2
pos++;
}
if (stack.length>0) {
warn.push(new warning(-1,"parseWiki Fehler in Vorlagenstruktur: pos="+pos+" state="+aktwse.state));
}
textlist =[];
textlist.push(new templatep('T',tmptxt));
templates.push(textlist);
}
// Objekt für zu suchende HTML-Tags; enthält Steuerinformationen
var tags = {};
// Hilfsobjekt zur references-Prüfung
var tagmark = {};
function tag(name,f1,f2){
this.name=name;
this.f1=f1;
this.f2=f2;
}
function initTags(){
// tags["br"]=new tag("br",ignore,ignore);
tags["nowiki"]=new tag("nowiki",setrek,resetrek);
// tags["p"]=new tag("p",ignore,ignore);
tags["ref"]=new tag("ref",ignore,setref);
tags["references"]=new tag("references",ignore,resetref);
tags["#1"]=new tag("#1",ignore,resetref1);
tags["#2"]=new tag("#2",ignore,resetref2);
// tags["small"]=new tag("small",ignore,ignore);
// tags["sub"]=new tag("sub",ignore,ignore);
// tags["sup"]=new tag("sup",ignore,ignore);
}
function ignore(){
return "";
}
function setrek(p){
tagmark["rek"]=p.rek;
p.rek=false;
}
function resetrek(p){
p.rek=tagmark["rek"];
return "";
}
function setref(p){
tagmark["ref"]=true;
return "";
}
function resetref(p){
tagmark["ref"]=false;
return "";
}
function resetref1(p){
tagmark["ref"]=false;
return "{{Quellen}}";
}
function resetref2(p){
tagmark["ref"]=false;
return "{{Quellen|}}";
}
function onEndHtml(warn){
if(tagmark["ref"]==true){
warn.push(new warning(-1,"<ref>-Tag ohne nachfolgendes <references /> oder {{Quellen}} gefunden"));
}
}
function isTag(tag){
return tags[tag.toLowerCase()] != undefined;
}
// html stack element
function hse(tag,sb,from,to){
this.tag=tag;
this.sb=sb;
this.from=from;
this.to=to;
}
function ph(rek) {
this.rek=rek;
}
// simple HTML Parser
function parseHTML(text,rekursiv,warn)
{
var sb="";
var pos=0;
var state=1;
var startp=0;
var slash = false;
var i=0;
var from=0; // start of tag-element
var chr = '';
var attr = '';
var attr1 = '';
var tag = '';
var val = '';
var stack = [];
var level=0;
var akthse = new hse("","",0,0);
var p= new ph(rekursiv); //ptr to local variable
// some tricks
text=text.replace(/\{\{Quellen\}\}/g,"<#1 />");
text=text.replace(/\{\{Quellen\|\}\}/g,"<#2 />");
text+="\n";
var textlow=text.toLowerCase();
stack.push(akthse);
while (pos<text.length){
chr = text.charAt(pos);
switch (state) { //switch1
case 1:
slash = false;
attr = '';
tag = '';
val = '';
i = text.indexOf('<', pos);
if (i >= 0){
from=i;
pos = i;
state = 3;
sb+=text.substring(startp,i);
startp = i;
}else{
pos =text.length;
sb+=text.substring(startp);
} break;
case 3:
if (chr=='<'){
sb+=text.substring(from,pos);
from=pos;
}else if (chr==' '||chr=='\n'||chr=='>'){
startp=from;
state = 1;
}else if (chr=='/'){
slash = true;
state = 5;
}else{
tag+=chr;
state = 5;
} break;
case 5:
if (chr=='<'){
state = 2;
}else if (chr==' '||chr=='\n'){
if (isTag(tag)){
state = 7;
}else{
startp=from;
state = 1;
}
}else if (chr=='/'){
if (isTag(tag)){
state = 19;
}else{
startp=from;
state = 1;
}
}else if (chr=='>'){
if (isTag(tag)){
stack[level].sb += sb;
sb="";
startp=pos+1;
state = 20;
}else{
startp=from;
state = 1;
}
}else{
tag+=chr;
} break;
case 7:
if (chr=='<'){
state = 2;
}else if (chr==' '||chr=='\n'){
if(attr.length>0){
attr1=attr;
attr="";
}
; //loop
}else if (chr=='/'){
state = 19;
}else if (chr=='>'){
if (isTag(tag)){
stack[level].sb += sb;
sb="";
startp=pos+1;
attr="";
state = 20;
}else{
startp=from;
state = 1;
}
}else if (chr=='='){
state = 11;
}else{
attr+=chr;
} break;
case 11:
if (chr=='<'){
state = 2;
}else if (chr==' '||chr=='\n'){
; //loop
}else if (chr=='>'){
state = 20;
}else if (chr=='"'){
startp=pos+1;
state = 13;
}else if (chr=="'"){
startp=pos+1;
state = 15;
}else{
val+=chr;
state = 17;
} break;
case 13:
i = text.indexOf('"', startp);
if (i >= 0){
pos = i;
state = 7;
val=text.substring(startp,i);
attr='';
val='';
}else{
pos =text.length;
val+=text.substring(startp);
state = 1;
} break;
case 15:
i = text.indexOf("'", startp);
if (i >= 0){
pos = i;
state = 7;
val=text.substring(startp,i);
attr='';
val='';
} else {
pos =text.length;
sb+=text.substring(startp);
state = 1;
} break;
case 17:
if (chr=='<'){
state = 2;
}else if (chr=='>'){
stack[level].sb += sb;
sb="";
startp=pos+1;
state = 20;
attr="";
val="";
}else if (chr=='/'){
state = 19;
}else if (chr==' '||chr=='\n'){
attr="";
val="";
state = 7;
}else{
val+=chr;
} break;
case 19:
if (chr=='<'){
state = 2;
}else if (chr=='>'){
sb+=tags[tag.toLowerCase()].f2(p);
stack[level].sb += sb;
sb="";
attr="";
val="";
state = 1;
startp=pos+1;
}else{
state = 1;
} break;
case 21:
i = textlow.indexOf("</"+tag.toLowerCase(), pos);
if (i >= 0){
from=i;
pos = i+tag.length+1;
state = 23;
sb+=text.substring(startp,i);
startp = i;
} else {
pos =text.length;
sb+=text.substring(startp);
} break;
case 23:
if (chr=='<'){
state = 2;
}else if (chr=='>'){
sb += tags[tag.toLowerCase()].f2(p);
stack[level].sb += sb;
sb="";
startp=pos+1;
state = 1;
}else{
state = 1;
} break;
default:
warn.push(new warning(-1,"parseHTML internal error at: "+pos+" state="+state));
} //switch1
switch (state) { //switch2
case 2:
sb+=text.substring(from,pos);
from=pos;
tag="";
state = 3;
break;
case 20:
startp=pos+1;
if (p.rek){
if (slash){
akthse=new hse("","",0,0);
if(level>0) {
var found = false;
var k=0;
var j=level;
while(!found && j>0){
if(stack[j].tag.toLowerCase() == tag.toLowerCase()) {
found = true;
}else {
j--;
}
}
if (found) {
for (k=level;k>=j;k--) {
akthse=stack.pop();
level--;
akthse.sb+=tags[akthse.tag.toLowerCase()].f2(p);
}
} else {
sb+=tags[tag.toLowerCase()].f2(p);
warn.push(new warning(-1,"Schließendes HTML-Element ohne öffnendes Element gefunden: "+mask(text.substring(from,pos+1))));
}
} else {
sb+=tags[tag.toLowerCase()].f2(p);
warn.push(new warning(-1,"Schließendes HTML-Element ohne öffnendes Element gefunden: "+mask(text.substring(from,pos+1))));
}
tag='';
sb+=akthse.sb;
}else{ //!slash
tags[tag.toLowerCase()].f1(p);
if(p.rek){
stack.push(new hse(tag,sb,from,pos));// = >+1
level++;
}
sb="";
}
if(p.rek){
state = 1;
}else{
state = 21;
}
}else{
state = 21;
} break;
default:
} //switch2
pos++;
}
while (level>0) {
akthse=stack.pop();
level--;
stack[level].sb+=akthse.sb;
stack[level].sb+=tags[akthse.tag.toLowerCase()].f2(p);
}
stack[0].sb += sb;
onEndHtml(warn);
}
function checkText(text,title,ns,node,pedit) {
var warnings = [];
var parts = [];
var checkdone = [false,false,false,false];
text = filterComments(text,warnings);
if(!pages.hasOwnProperty(title)){
pages[title] = new page(title,text);
}
pages[title].cotxt = filterComments(pages[title].text,warnings);
pages[title].nwtxt = filterTag(pages[title].text,"nowiki",warnings);
var lines = buildLines(pages[title].nwtxt);
// do work
analyzeBraces(pages[title].nwtxt,warnings);
checkdone[0]=true;
if (ns == 0) {
do {
if (contains(title,"(Deklination)") || contains(title,"(Konjugation)")) {
break;
}
if (contains(pages[title].nwtxt,"{{Sprache|Umschrift}}")
|| contains(pages[title].nwtxt,"{{Sprache|Latein}}")) {
break; // Probleme
}
if (warnings.length == 0) {
var fitext = filterTag(text,"math",warnings); //um nicht als Vorlagen interpretiert zu werden
parseWiki(fitext,templates,true,warnings); //z.z. noch doppelt
var sect=buildSections(fitext);
analyzeSections(sect);
createFlexion(sect,title);
}
initTags();
parseHTML(text,true,warnings);
buildStructure(lines,parts);
if (pedit.length==0){
checkStructure(parts,warnings);
checkdone[1]=true;
}
checkChapters(parts,lines,warnings,checkdone);
} while (false)
}
// report warnings
if (doReport) {
reportWarnings(node,lines,warnings,checkdone);
}
return warnings.length;
}
//
function checkTextSort(text) {
var warnings = [];
var parts = [];
var checkdone = [false,false,false,false];
var i=0;
var txt = filterComments(text,warnings);
var lines = buildLines(txt);
for(i=0;i<lines.length;i++){
reorder[i]=i;
}
buildStructure(lines,parts);
checkChapters(parts,lines,warnings,checkdone);
var lines2 = buildLines(text);
for(i=0;i<lines2.length;i++){
lines[reorder[i]]=lines2[i];
}
text=lines.join("\n");
return text.substr(1);
}
function warning(lino,msg) {
this.lino = lino;
this.msg = msg;
}
// Add warning messages to the node.
function reportWarnings(node,lines,warn,checkdone) {
var p=node.parentNode;
var zeile = '<dd>Zeile ';
var ih = " Anzahl der Warnungen: " + warn.length + "<dl>";
var n = document.createElement("div");
n.setAttribute("style", "background-color:#FFE0E0");
for (var i=0;i<warn.length;i++) {
ih += "<dt> "+(i+1) + ": "+warn[i].msg+"</dt>";
var lino = warn[i].lino;
if (lino < -1) { ;
}else if (lino == -1) {
ih += zeile +"?: unbekannt</dd>";
}else{
ih += zeile +lino+": "+maskff(lines[lino])+"</dd>";
}
}
ih += "</dl>";
n.innerHTML = ih;
p.insertBefore(n,p.firstChild);
var h=document.createElement("h2");
h.setAttribute("id", "checkpage");
var txt="Checkpage: ";
if (checkdone[0]) {
txt+="Klammern";
}
if (checkdone[1]) {
txt+=", Kapitelstruktur";
}
if (checkdone[2]) {
txt+=", deutsche Abschnitte";
}
if (checkdone[3]) {
txt+="Reime";
}
txt+=" geprüft.";
h.appendChild(document.createTextNode(txt));
p.insertBefore(h,p.firstChild);
}
function maskff(str) {
return '<span style="font-family:monospace;font-size:9pt">'+mask(str)+"</span>";
}
function mask(str) {
if(str){
str = str.replace(/&/g ,"&");
str = str.replace(/</g ,"<");
return str.replace(/>/g ,">");
}
return str;
}
var tokens = [];
function tok(typ,val) {
this.typ=typ;
this.val=val;
}
function braceline(brace,line) {
this.brace = brace;
this.line = line;
}
// Check the nesting of braces
function analyzeBraces(text,warn)
{
var level = 0;
var k = [];
var lino = 0;
var i=0;
for (i=0; i<text.length;i++) {
var c = text.charAt(i);
if (c == '\n') {
lino++;
}
if (c == '[' || c == '{') {
k[level++] = new braceline(c,lino);
}
if (c == ']') {
level--;
if (level < 0 || k[level].brace != '[') {
warn.push(new warning(lino,"Klammerung - ]"));
level=Math.max(0,level);
}
}
if (c == '}') {
level--;
if (level < 0 || k[level].brace != '{') {
warn.push(new warning(lino,"Klammerung - }"));
level=Math.max(0,level);
}
}
}
for (i=0; i<level;i++) {
warn.push(new warning(k[i].line,"Klammerung - offene Klammer: " + k[i].brace));
}
}
function analyzeSections(lvl){
var i,j,si,sj,w=[];
for(i=1;i<lvl.section.length;i++){
si=lvl.section[i];
parseWiki(si.head,si.ht,true,w);
for(j=1;j<si.child.section.length;j++){
sj=si.child.section[j];
parseWiki(sj.head,sj.ht,true,w);
parseWiki(sj.text,sj.tt,true,w);
}
}
}
function buildSections(txt){
var s=buildSection(txt,"==");
var i=0;
for(i=0;i<s.section.length;i++){
s.section[i].child=buildSection(s.section[i].text,"===");
}
return s;
}
function level(h,t){
this.head=h; //header == ohne LF
this.text=t;
this.ht=[]; //head templates
this.tt=[]; //text templates
this.child=null; //stufe 3
}
// txt.split(/\n(==[^=\n]+[^=\n]==)\n/) funktioniert nicht,
// wenn zwei == Überschriften direkt aufeinander folgen.
function buildSection(txt,h)
{
var i=0,j,pos=0,
s2={section:[]},
hdr='\n'+h,
len=hdr.length,
head='';
while (i>=0) {
i = txt.indexOf(hdr,i);
if (i>=0) {
if (txt.length >= i+len && txt[i+len] != '=' && txt[i+len] != '\n'){
j = txt.indexOf("\n",i+len);
if (j>=0 && containsAt(txt,h,j-len+1) && txt[j-len] != '='){
s2.section.push(new level(head,txt.substring(pos,i+1)));
head = txt.substring(i+1,j);
i = j-1;
pos = j;
}
}
i++;
}
}
s2.section.push(new level(head,txt.substring(pos)));
return s2;
}
function part(type,begin) {
this.type = type;
this.begin = begin;
}
// build Structure
function buildStructure(lines,parts)
{
var i = 0;
while (i < lines.length) {
var line = trimEnd(lines[i]);
if (line.length > 0) {
if (line.charAt(0) == '=') {
if (endsWith(line,"=")) {
if (startsWith(line,"======") && endsWith(line,"======")) {
;
} else if (startsWith(line,"=====") && endsWith(line,"=====")) {
;
} else if (startsWith(line,"====") && endsWith(line,"====")) {
;
} else if (startsWith(line,"===") && endsWith(line,"===")) {
parts.push(new part('3',i));
} else if (startsWith(line,"==") && endsWith(line,"==")) {
parts.push(new part('2',i));
} else {
parts.push(new part('1',i));
}
}
} else {
if (contains(line,"{{Alte Schreibweise|")) {
parts.push(new part('S',i));
} else if (contains(line,"{{Schweizer und Liechtensteiner Schreibweise|")) {
parts.push(new part('S',i));
} else if (contains(line,"{{Ähnlichkeiten}}")) {
parts.push(new part('E',i));
}
}
}
// Prolog vor erster Überschrift
if (parts.length == 0) {
parts.push(new part('P',i));
}
i++;
}
// Ende marker
parts.push(new part('X',lines.length));
}
// check Structure
function checkStructure(parts,warn)
{
var ks = 1; // kapitelstruktur
var i=0;
for (i=0;i<parts.length;i++) {
var key = parts[i].type;
var lino = parts[i].begin;
if (key == 'X') { // Ende
return;
}
switch (ks) {
case 1: // Beginn
switch (key) {
case 'P': ks = 1;
break;
case '2': ks = 2;
break;
default:
warn.push(new warning(lino,"Kapitelstruktur - erwartet: (==)"));
}
break;
case 2: // nach ==
switch (key) {
case '3':
case 'S': ks = 3;
break;
default:
warn.push(new warning(lino,"Kapitelstruktur - erwartet: (===)"));
}
break;
case 3: // nach ===
switch (key) {
case '2': ks = 2;
break;
case '3': ks = 3;
break;
case '4': ks = 4;
break;
case 'E': ks = 5;
break;
case 'S':
break;
default:
warn.push(new warning(lino,"Kapitelstruktur - erwartet: (====) oder {{Ähnlichkeiten}}"));
}
break;
case 4: // nach ====
switch (key) {
case '2': ks = 2;
break;
case '3': ks = 3;
break;
case '4': ks = 4;
break;
case 'E': ks = 5;
break;
default:
warn.push(new warning(lino,"Kapitelstruktur - erwartet: (====) oder {{Ähnlichkeiten}}"));
}
break;
case 5: // nach Ähnlichkeiten
warn.push(new warning(lino,"Kapitelstruktur - nach {{Ähnlichkeiten}} erwartet: Nichts"));
break;
default:
warn.push(new warning(lino,"Kapitelstruktur - interner Fehler"));
}
}
}
// check Chapters
function checkChapters(parts,lines,warn,checkdone)
{
var i=0;
for (i=0;i<parts.length;i++) {
//partial edit
var transOnly = parts[i].type == 'P' && contains(lines[parts[i].begin+1],"Übersetzung");
// for now restricted to german entries
if (parts[i].type == '3' || transOnly) {
if (transOnly || contains(lines[parts[i].begin],"|Deutsch}}")) {
checkChapterOrder(lines,warn,parts[i].begin+1,parts[i+1].begin);
checkUeTab(lines,warn,parts[i].begin+1,parts[i+1].begin);
checkdone[2]=true;
}
}
}
}
function wpState() {
this.pos=0;
this.txt="";
this.head=0;
this.nesting = 0;
this.equal = 0;
}
function clearText(state,tokens,token) {
if(state.txt.length > 0) {
tokens.push(new tok ("TX",state.txt));
state.txt = "";
}
if(token.length>0) {
tokens.push(new tok (token,""));
}
}
function incPosHead(state,tokens,pos,token) {
clearText(state,tokens,token);
state.pos += pos;
state.head = pos;
}
function incPosNest(state,tokens,pos,token) {
clearText(state,tokens,token);
state.pos += pos;
state.nesting += pos;
}
function decPosNest(state,tokens,pos,token) {
clearText(state,tokens,token);
state.pos += pos;
state.nesting=Math.max(0,state.nesting-pos);
if (state.nesting==0) {
state.equal=0;
}
}
function incPos(state,tokens,pos,token) {
clearText(state,tokens,token);
state.pos += pos;
}
// check Ü-Tabelle
function checkUeTab(lines,warn,from,to)
{
var li = 0;
var lino;
var line = "";
var status = "";
for (lino = from; lino < to; lino++) {
line = lines[lino];
if ((status == "L" || status == "R") && !(startsWith(line,"*") || startsWith(line,":"))) {
if (line == "|Ü-rechts=") {
status = "R";
} else {
status = "";
checkTransOrder(lines,warn,li+1,lino);
}
}
if (startsWith(line,"{{Ü-Tabelle")) {
status = "T";
}
if (status == "T" && endsWith(line,"|Ü-links=")) {
li = lino;
status = "L";
}
}
}
// check Chapter Order
function checkChapterOrder(lines,warn,from,to)
{
var lastOrder = -1;
var chapterName = "";
var lino;
var line = "";
var order = 0;
var sorted = true;
for (lino = from; lino < to; lino++) {
line = lines[lino];
if (line.length > 0 && (line.charAt(0) == '{' || line.charAt(0) == '=' )) {
if (startsWith(line,"====") && contains(line,"Übersetzungen")) {
//Pseudoabschnitt Übersetzungen
order = chapterOrder("{{Übersetzungen}}");
} else {
order = chapterOrder(line);
}
if (order > 0) {
if (lastOrder < order) {
lastOrder = order;
} else {
sorted = false;
warn.push (new warning(lino,"Reihenfolge - bei "+chapterName+"/"+line));
}
chapterName = line;
}
}
}
if (!sorted && doSortCh) {
sortChapterLines(lines,from,to);
}
}
function sortChapterLines(lines,from,to)
{
var lino;
var line = "";
var order = 0;
var key = 100;
var sorta = [];
var tabstart = chapterOrder("{{Übersetzungen}}");
var tabrechts = chapterOrder("{{Ü-rechts}}");
for (lino = from; lino < to; lino++) {
line = lines[lino];
if (line.length > 0 && (line.charAt(0) == '{' || line.charAt(0) == '=' )) {
if (startsWith(line,"====") && contains(line,"Übersetzungen")) {
//Pseudoabschnitt Übersetzungen
order = tabstart;
} else {
order = chapterOrder(line);
}
if (order > 0) {
if (order >= tabstart && order <= tabrechts) { //Ü-Tab nicht sort.
key = 100 + tabstart;
}else{
key = 100 + order;
}
}
}
sorta.push(key + "%%" + (10000 + lino));
}
sorta.sort();
var sl;
var lii=from;
for (lino = 0; lino < sorta.length; lino++) {
sl=sorta[lino].split(/%%/);
reorder[parseInt(sl[1],10)-10000]=lii++;
}
}
// sort translations
function sortTransLines(lines,from,to,lc)
{
var lino;
var line = "";
var lcs =[]; // langcode
var item;
var sorta =[];
var lastp ="";
var pre="";
var prel="";
var abst=-1;
var i=0;
var p=0;
for (lino = from; lino < to; lino++) {
line = lines[lino];
if(startsWith(line,"**{{")||startsWith(line,":*{{")||startsWith(line,"*:{{")){
lcs = getLcs(line);
if(lc[lcs[0]]) {
item = lc[lcs[0]].name;
pre=lastp+"%2";
}else{
if(doSort){alert("Sortieren nicht möglich wegen Zeile: "+line);}
canSort=false;
return;
}
} else if(startsWith(line,"*{{")){
lcs = getLcs(line);
if(lc[lcs[0]]) {
item = lc[lcs[0]].name;
pre=item+"%1";
lastp =item;
}else{
if(doSort){alert("Sortieren nicht möglich wegen Zeile: "+line);}
canSort=false;
return;
}
} else if(startsWith(line,"**")||startsWith(line,":*")||startsWith(line,"*:")){
p=line.indexOf(":",2);
if (p>2){
item = line.substring(2,p);
}else{
item = line.substring(2);
}
pre=lastp+"%2";
} else if(startsWith(line,"*")){
p=line.indexOf(":",2);
if (p>1){
item = line.substring(1,p);
}else{
item = line.substring(1);
}
pre=item+"%1";
lastp =item;
}
prel=pre.toLowerCase();
prel=prel.replace(/ä/g,"a");
prel=prel.replace(/ö/g,"o");
prel=prel.replace(/ü/g,"u");
prel=prel.replace(/ß/g,"s");
if(line == "|Ü-rechts="){
abst=lino;
}else{
sorta[i++] = prel+pre+"%%"+lino;
}
}
canSort=true;
if(doSort) {
sorta.sort();
var sl;
var lii=from;
for (lino = 0; lino < sorta.length; lino++) {
sl=sorta[lino].split(/%%/);
if(lino == Math.floor((to-from)/2)){
if(abst>=0){
reorder[abst]=lii++;
}
}
reorder[parseInt(sl[1],10)]=lii++;
}
}
}
function getLcs(line)
{
var r=["", ""];
var i=0;
var j=0;
var k=0;
var li="";
i=line.indexOf("{{");
j=line.indexOf("}}");
if(i>0 && j>0){
li= line.substring(i+2,j);
k = li.indexOf('|');
if (k >= 0) {
r[1]=li.substring(k+1);
r[0]=li.substring(0,k);
}else{
r[0]=li;
}
}
return r;
}
// check translation order
function checkTransOrder(lines,warn,from,to)
{
var currorder = -1;
var currlc = "";
var lino;
var line = "";
var lcs = []; // lang code
var lc = createSk();
var item;
var ums="";
var p1;
var k2;
var found=false;
for (lino = from; lino < to; lino++) {
line = lines[lino];
if (line.length > 0 && startsWith(line,"*{{")) {
lcs = getLcs(line);
if(lcs[1].length>0 && lcs[1]!="CHA" && lcs[1]!="DMG" && lcs[1]!="YIVO" && lcs[1]!="ALA-LC" && lcs[1]!="KNAB") {
warn.push (new warning(lino,"Übersetzung - Umschrift nicht bekannt: "+lcs[1]));
}
item = lc[lcs[0]];
if (item) {
if (item.order > 0) {
if (currorder > item.order) {
warn.push (new warning(lino,"Reihenfolge Übersetzung - bei {{"+currlc+"}} "+lc[currlc].name+" und {{"+lcs[0]+"}} "+lc[lcs[0]].name));
found=true;
} else {
currorder = item.order;
currlc = lcs[0];
}
}
// prüfe sprachkürzel
if (lcs[0] == "zh-cn" || lcs[0] == "zh-tw") {
continue;
}
var re = /\{\{Üx*\|[A-Za-z\-]+\|/
var alc = re.exec(line)
if (alc) {
for (var i=0;i<alc.length;i++) {
var str = alc[i];
var lci = str.substring(str.indexOf('|')+1,str.length-1);
if (lci != lcs[0]) {
warn.push (new warning(lino,"Übersetzung - Sprachkürzel abweichend: {{"+ lcs[0]+"}}: {{Ü |"+lci+"|"));
}
}
}
} else {
warn.push (new warning(lino,"Übersetzung - Sprachkürzel unbekannt: "+ lcs[0]));
}
}
}
if (found) {
sortTransLines(lines,from,to,lc);
}
}
// Sprachkürzel Sortierinfo
function sk(order,name) {
this.order = order;
this.name = name;
}
function addSk(a,lc,name) {
a[lc]= new sk(a.counter++,name);
}
function createSk() {
var a = {counter:1000};
addSk(a,"abq","Abasinisch");
addSk(a,"ab", "Abchasisch");
addSk(a,"ady","Adygeisch");
addSk(a,"aa", "Afar");
addSk(a,"af", "Afrikaans");
addSk(a,"egy","Ägyptisch");
addSk(a,"arz","Ägyptisch-Arabisch");
addSk(a,"ain","Ainu");
addSk(a,"akk","Akkadisch");
addSk(a,"akz","Alabama");
addSk(a,"sq", "Albanisch");
addSk(a,"als","Alemannisch");
addSk(a,"ale","Aleutisch");
addSk(a,"alt","Altaisch");
addSk(a,"ang","Altenglisch");
addSk(a,"ofs","Altfriesisch");
addSk(a,"grc","Altgriechisch");
addSk(a,"sga","Altirisch");
addSk(a,"goh","Althochdeutsch");
addSk(a,"cu", "Altkirchenslawisch");
addSk(a,"non","Altnordisch");
addSk(a,"peo","Altpersisch");
addSk(a,"osx","Altsächsisch");
addSk(a,"am", "Amharisch");
addSk(a,"ar", "Arabisch");
addSk(a,"class-arb", "Arabisch");
addSk(a,"new-arb", "Arabisch");
addSk(a,"an", "Aragonesisch");
addSk(a,"arc","Aramäisch");
addSk(a,"arw","Arawak");
addSk(a,"hy", "Armenisch");
addSk(a,"rup","Aromunisch");
addSk(a,"az", "Aserbaidschanisch");
addSk(a,"as", "Assamesisch");
addSk(a,"ast","Asturisch");
addSk(a,"aua","Asumboa");
addSk(a,"tay","Atayal");
addSk(a,"ae", "Avestisch");
addSk(a,"av", "Awarisch");
addSk(a,"ay", "Aymara");
addSk(a,"bar","Bairisch");
addSk(a,"ban","Balinesisch");
addSk(a,"bm", "Bambara");
addSk(a,"ba", "Baschkirisch");
addSk(a,"eu", "Baskisch");
addSk(a,"bbc","Batak Toba");
addSk(a,"bci","Baule (Baoulé);");
addSk(a,"bal","Belutschi");
addSk(a,"bem","Bemba");
addSk(a,"bn", "Bengalisch");
addSk(a,"ber","Berbersprachen");
addSk(a,"bhw","Biak");
addSk(a,"bh", "Biharisch");
addSk(a,"my", "Birmanisch/Burmesisch");
addSk(a,"bi", "Bislama (Bichelamar);");
addSk(a,"bpy","Bishnupriya (Manipuri);");
addSk(a,"bty","Bobot");
addSk(a,"nb", "Bokmål");
addSk(a,"bs", "Bosnisch");
addSk(a,"br", "Bretonisch");
addSk(a,"bug","Buginesisch");
addSk(a,"bg", "Bulgarisch");
addSk(a,"bua","Burjatisch");
addSk(a,"rmr","Calo");
addSk(a,"ceb","Cebuano");
addSk(a,"kjh","Chakassisch");
addSk(a,"ch", "Chamorro");
addSk(a,"kca","Chantisch");
addSk(a,"chr","Cherokee");
addSk(a,"chy","Cheyenne");
addSk(a,"ny", "Chichewa");
addSk(a,"zh", "Chinesisch");
addSk(a,"zh-tw","Chinesisch (traditionell);");
addSk(a,"zh-cn","Chinesisch (vereinfacht);");
addSk(a,"yue","Chinesisch (Kantonesisch);");
addSk(a,"nan","Chinesisch (Min-Nan);");
addSk(a,"cho","Choctaw");
addSk(a,"com","Comanche");
addSk(a,"cr", "Cree / Cri / Kri");
addSk(a,"mus","Creek/ Muskogee");
addSk(a,"da", "Dänisch");
addSk(a,"prs","Dari (afghanisches Persisch);");
addSk(a,"dhv","Dehu");
addSk(a,"ddn","Dendi (Benin);");
addSk(a,"de", "Deutsch");
addSk(a,"dob","Dobu");
addSk(a,"nic","Dogon");
addSk(a,"dz", "Dzongkha/Bhutanisch");
addSk(a,"eml","Emilianisch");
addSk(a,"en", "Englisch");
addSk(a,"myv","Ersja");
addSk(a,"eo", "Esperanto");
addSk(a,"et", "Estnisch");
addSk(a,"ee", "Ewe");
addSk(a,"fng","Fanagalo");
addSk(a,"fo", "Färöisch");
addSk(a,"fj", "Fidschianisch");
addSk(a,"hif","Fidschi Hindi");
addSk(a,"fi", "Finnisch");
addSk(a,"vls","Flämisch");
addSk(a,"fon","Fongbe");
addSk(a,"frp","Franko-Provenzalisch");
addSk(a,"fr", "Französisch");
addSk(a,"fur","Friaulisch");
addSk(a,"ff", "Ful, Fulfulde");
addSk(a,"gag","Gagausisch");
addSk(a,"gl", "Galicisch");
addSk(a,"gay","Gayo");
addSk(a,"ka", "Georgisch/Grusinisch");
addSk(a,"gez","Ge’ez");
addSk(a,"hac","Gorani");
addSk(a,"got","Gotisch");
addSk(a,"el", "Griechisch (Neu-);");
addSk(a,"kl", "Grönländisch/Kalaallisut");
addSk(a,"gn", "Guarani");
addSk(a,"gu", "Gudscharati");
addSk(a,"ht", "Haitianisch");
addSk(a,"hak","Hakka");
addSk(a,"ha", "Hausa");
addSk(a,"haw","Hawaiisch");
addSk(a,"he", "Hebräisch (Ivrit);");
addSk(a,"hit","Hethitisch");
addSk(a,"hi", "Hindi");
addSk(a,"ho", "Hiri Motu");
addSk(a,"xhu","Hurritisch");
addSk(a,"iba","Iban");
addSk(a,"io", "Ido");
addSk(a,"ig", "Igbo");
addSk(a,"ilo","Ilokano");
addSk(a,"smn","Inari-Saami");
addSk(a,"id", "Indonesisch");
addSk(a,"inh","Inguschisch");
addSk(a,"ia", "Interlingua");
addSk(a,"ie", "Interlingue/Occidental");
addSk(a,"iu", "Inuktitut");
addSk(a,"ik", "Inupiak");
addSk(a,"ga", "Irisch");
addSk(a,"xh", "isiXhosa");
addSk(a,"zu", "isiZulu");
addSk(a,"is", "Isländisch");
addSk(a,"it", "Italienisch");
addSk(a,"sah","Jakutisch");
addSk(a,"ja", "Japanisch");
addSk(a,"jv", "Javanisch");
addSk(a,"yi", "Jiddisch");
addSk(a,"kbd","Kabardinisch");
addSk(a,"kab","Kabylisch");
addSk(a,"xal","Kalmückisch");
addSk(a,"km", "Kambodschanisch/Khmer-Sprache");
addSk(a,"kn", "Kannada");
addSk(a,"yue","Kantonesisch");
addSk(a,"pam","Kapampangan");
addSk(a,"kaa","Karakalpakisch");
addSk(a,"kdr","Karaimisch (Trakai-);");
addSk(a,"krc","Karatschai-Balkarisch");
addSk(a,"krl","Karelisch");
addSk(a,"kyh","Karok");
addSk(a,"kk", "Kasachisch");
addSk(a,"ks", "Kaschmiri");
addSk(a,"csb","Kaschubisch");
addSk(a,"ca", "Katalanisch");
addSk(a,"kaw","Kawi");
addSk(a,"kg", "Kikongo");
addSk(a,"ki", "Kikuyu");
addSk(a,"rw", "Kinyarwanda");
addSk(a,"ky", "Kirgisisch");
addSk(a,"rn", "Kirundi (Rundisch);");
// addSk(a,"sw", "Kiswahili");
addSk(a,"tlh","Klingonisch");
addSk(a,"ksh","Kölsch");
addSk(a,"koi","Komi-Permjakisch");
addSk(a,"kv", "Komi");
addSk(a,"swb","Komorisch");
addSk(a,"kok","Konkani");
addSk(a,"cop","Koptisch");
addSk(a,"ko", "Koreanisch");
addSk(a,"kw", "Kornisch");
addSk(a,"co", "Korsisch");
addSk(a,"kos","Kosrae");
addSk(a,"crh","Krimtatarisch");
addSk(a,"hr", "Kroatisch");
addSk(a,"kj", "Kuanyama");
addSk(a,"kum","Kumükisch");
addSk(a,"ku", "Kurdisch");
addSk(a,"ckb","Kurdisch (Sorani);");
addSk(a,"kmr","Kurmandschi");
addSk(a,"lld","Ladinisch");
addSk(a,"lad","Ladino/Sephardisch");
addSk(a,"lo", "Laotisch");
addSk(a,"lzz","Lasisch");
addSk(a,"la", "Latein");
addSk(a,"lep","Lepcha");
addSk(a,"lv", "Lettisch");
addSk(a,"lij","Ligurisch");
addSk(a,"li", "Limburgisch");
addSk(a,"ln", "Lingala");
addSk(a,"lt", "Litauisch");
addSk(a,"liv","Livisch");
addSk(a,"jbo","Lojban");
addSk(a,"lmo","Lombardisch");
addSk(a,"lg", "Luganda");
addSk(a,"xlu","Luwisch");
addSk(a,"lb", "Luxemburgisch");
addSk(a,"xld","Lydisch");
addSk(a,"mas","Maasai");
addSk(a,"mg", "Madagassisch/Malagasy");
addSk(a,"mad","Maduresisch");
addSk(a,"mak","Makassar");
addSk(a,"ms", "Malaiisch/Malaysisch");
addSk(a,"ml", "Malayalam");
addSk(a,"dv", "Maledivisch/Dhivehi");
addSk(a,"mt", "Maltesisch");
addSk(a,"mnc","Mandschurisch");
addSk(a,"mns","Mansisch");
addSk(a,"gv", "Manx");
addSk(a,"mi", "Maori");
addSk(a,"arn","Mapudungun");
addSk(a,"mr", "Marathi (Marathisch);");
addSk(a,"chm","Mari");
addSk(a,"ary","Marokkanisch");
addSk(a,"mh", "Marshallesisch");
addSk(a,"mk", "Mazedonisch");
addSk(a,"min","Minangkabau");
addSk(a,"enm","Mittelenglisch");
addSk(a,"gmh","Mittelhochdeutsch");
addSk(a,"mga","Mittelirisch");
addSk(a,"gml","Mittelniederdeutsch");
addSk(a,"dum","Mittelniederländisch");
addSk(a,"lus","Mizo");
addSk(a,"moh","Mohawk");
addSk(a,"mdf","Mokscha(nisch);");
addSk(a,"mo", "Moldauisch/Moldawisch");
addSk(a,"mn", "Mongolisch");
addSk(a,"nah","Nahuatl/ Aztekisch");
addSk(a,"naq","Nama");
addSk(a,"na", "Nauruisch");
addSk(a,"nv", "Navajo");
addSk(a,"nde","Ndebele (Nord-Ndebele);");
addSk(a,"ng", "Ndonga");
addSk(a,"nap","Neapolitanisch");
addSk(a,"ne", "Nepalesisch (Nepali);");
addSk(a,"new","Newari");
addSk(a,"nez","Nez Perce");
addSk(a,"ngo","Ngoni");
addSk(a,"nds","Niederdeutsch");
addSk(a,"nl", "Niederländisch/Holländisch");
addSk(a,"dsb","Niedersorbisch");
addSk(a,"nog","Nogaisch");
addSk(a,"azj","Nordaserbaidschanisch");
addSk(a,"frr","Nordfriesisch");
addSk(a,"se", "Nordsamisch");
addSk(a,"nso","Nord-Sotho");
addSk(a,"no", "Norwegisch");
addSk(a,"nn", "Norwegisch (Nynorsk, Neunorwegisch);");
addSk(a,"nov","Novial");
addSk(a,"hsb","Obersorbisch");
addSk(a,"oj", "Ojibwe");
addSk(a,"oc", "Okzitanisch");
addSk(a,"ood","O'odham");
addSk(a,"or", "Oriya");
addSk(a,"om", "Oromo");
addSk(a,"os", "Ossetisch");
addSk(a,"hz", "Otjiherero");
addSk(a,"pi", "Pali");
addSk(a,"pa", "Pandschabisch/Pundjabisch");
addSk(a,"pap","Papiamentu");
addSk(a,"ps", "Paschtu (Paschtunisch);");
addSk(a,"pdc","Pennsylvania Dutch");
addSk(a,"fa", "Persisch");
addSk(a,"pms","Piemontesisch");
addSk(a,"pih","Pitkern");
addSk(a,"pis","Pijin/Neu-Salomonisch");
addSk(a,"pdt","Plautdietsch");
addSk(a,"pox","Polabisch");
addSk(a,"pl", "Polnisch");
addSk(a,"pt", "Portugiesisch");
addSk(a,"prg","Prußisch");
addSk(a,"qu", "Quechua");
addSk(a,"raj","Rajasthani");
addSk(a,"rap","Rapanui");
addSk(a,"rm", "Rätoromanisch");
addSk(a,"rom","Romani");
addSk(a,"ro", "Rumänisch");
addSk(a,"ru", "Russisch");
addSk(a,"smi","Samische Sprachen");
addSk(a,"sm", "Samoanisch");
addSk(a,"sg", "Sango");
addSk(a,"sa", "Sanskrit");
addSk(a,"sc", "Sardisch");
addSk(a,"stq","Saterfriesisch");
addSk(a,"sgs","Schemaitisch");
addSk(a,"szl","Schlesisch (polnisch);");
addSk(a,"gd", "Schottisch-Gälisch");
addSk(a,"sv", "Schwedisch");
addSk(a,"sco","Scots");
addSk(a,"sr", "Serbisch");
addSk(a,"sh", "Serbokroatisch");
addSk(a,"crs","Seselwa");
addSk(a,"st", "Sesotho");
addSk(a,"tn", "Setswana");
addSk(a,"sn", "Shona");
addSk(a,"shh","Shoshone");
addSk(a,"simple","Simple English");
addSk(a,"sjn","Sindarin");
addSk(a,"sd", "Sindhi");
addSk(a,"si", "Singhalesisch");
addSk(a,"ss", "Siswati");
addSk(a,"scn","Sizilianisch");
addSk(a,"sk", "Slowakisch");
addSk(a,"sl", "Slowenisch");
addSk(a,"so", "Somali");
addSk(a,"ckb","Sorani");
addSk(a,"wen","Sorbische Sprachen");
addSk(a,"es", "Spanisch");
addSk(a,"srn","Sranan Tongo");
addSk(a,"sw", "Suaheli");
addSk(a,"azb","Südaserbaidschanisch");
addSk(a,"nr", "Süd-Ndebele");
// addSk(a,"st", "Süd-Sotho");
addSk(a,"sux","Sumerisch");
addSk(a,"su", "Sundanesisch");
addSk(a,"sva","Swanisch");
addSk(a,"syr","Syrisch");
addSk(a,"tg", "Tadschikisch");
addSk(a,"tl", "Tagalog");
addSk(a,"ty", "Tahitianisch");
addSk(a,"ta", "Tamil (Tamilisch);");
addSk(a,"trv","Taroko");
addSk(a,"tt", "Tatarisch");
addSk(a,"te", "Telugu");
addSk(a,"tet","Tetum");
addSk(a,"th", "Thailändisch");
addSk(a,"bo", "Tibetisch");
addSk(a,"ti", "Tigrinya");
addSk(a,"tox","Tobianisch");
addSk(a,"tpi","Tok Pisin");
addSk(a,"tokipona", "Toki Pona");
addSk(a,"to", "Tongaisch");
addSk(a,"cs", "Tschechisch");
addSk(a,"ce", "Tschetschenisch");
addSk(a,"ckt","Tschuktschisch");
addSk(a,"cv", "Tschuwaschisch");
addSk(a,"ve", "Tshivenda");
addSk(a,"tpw","Tupí (Língua Geral Paulista);");
addSk(a,"tpn","Tupinambá");
addSk(a,"tr", "Türkisch");
addSk(a,"tk", "Turkmenisch");
addSk(a,"tvl","Tuvaluisch");
addSk(a,"tyv","Tuwinisch");
addSk(a,"udm","Udmurtisch");
addSk(a,"ug", "Uigurisch");
addSk(a,"uk", "Ukrainisch");
addSk(a,"hu", "Ungarisch");
addSk(a,"xur","Urartäisch");
addSk(a,"ur", "Urdu");
addSk(a,"uz", "Usbekisch");
addSk(a,"xve","Venetisch");
addSk(a,"vec","Venezianisch");
addSk(a,"vi", "Vietnamesisch");
addSk(a,"vo", "Volapük");
addSk(a,"vro","Võro");
addSk(a,"cy", "Walisisch");
addSk(a,"wa", "Wallonisch");
addSk(a,"war","Waray-Waray");
addSk(a,"be", "Weißrussisch");
addSk(a,"vep","Wepsisch");
addSk(a,"apw","West-Apache");
addSk(a,"fy", "Westfriesisch");
addSk(a,"wym","Wilmesaurisch");
addSk(a,"wo", "Wolof");
addSk(a,"vot","Wotisch");
addSk(a,"ts", "Xitsonga");
addSk(a,"yo", "Yoruba");
addSk(a,"yua","Yukatekisch");
addSk(a,"zza","Zazaki");
addSk(a,"bcl","Zentral-Bikolano");
addSk(a,"za", "Zhuang");
return a;
}
// liefert einen int Wert zurück, mittels dessen man
// die richtige Reihenfolge der Abschnitte prüfen kann
function chapterOrder(key)
{
switch (key.substring(2,key.indexOf("}}"))) {
case "Lesungen": return 10;
case "Alternative Schreibweisen": return 11;
case "Alte Rechtschreibung": return 12;
case "Nebenformen": return 13;
case "Silbentrennung": return 14;
case "Worttrennung": return 14;
case "in arabischer Schrift": return 20;
case "in kyrillischer Schrift": return 21;
case "in lateinischer Schrift": return 22;
case "Strichreihenfolge": return 23;
case "Vokalisierung": return 24;
case "Umschrift": return 25;
case "Aussprache": return 26;
case "Bedeutungen": return 30;
case "Abkürzungen": return 31;
case "Symbole": return 32;
case "Herkunft": return 33;
case "Synonyme": return 34;
case "Sinnverwandte Wörter": return 35;
case "Gegenwörter": return 36;
case "Weibliche Wortformen": return 40;
case "Männliche Wortformen": return 41;
case "Verkleinerungsformen": return 42;
case "Vergrößerungsformen": return 43;
case "Oberbegriffe": return 44;
case "Unterbegriffe": return 45;
case "Kurzformen": return 50;
case "Koseformen": return 51;
case "Kurz- und Koseformen": return 52;
case "Namensvarianten": return 53;
case "Weibliche Namensvarianten": return 54;
case "Männliche Namensvarianten": return 55;
case "Bekannte Namensträger": return 56;
case "Beispiele": return 60;
case "Redewendungen": return 61;
case "Sprichwörter": return 62;
case "Charakteristische Wortkombinationen": return 63;
case "Abgeleitete Begriffe": return 64;
case "Wortbildungen": return 64;
case "Übersetzungen": return 70; // Pseudovorlage bei ====
case "Referenzen": return 90;
case "Quellen": return 91;
case "Quellen|": return 91;
default: return -1;
}
}
function preserveLinefeeds(txt,from,to)
{
var i=0;
var lf="";
for (i=from; i<to; i++) {
if (txt[i] == '\n') {
lf += '\n';
}else{
lf += ' ';
}
}
return lf;
}
// <!-- --> Kommentare sind nicht geschachtelt
function filterComments(txt,warn)
{
var sb="";
var pos=0;
var i;
var j;
var lino=0;
do {
i = txt.indexOf("<!--", pos);
if (i >= 0){
j = txt.indexOf("-->", i);
if (j > 0){
sb += txt.substring(pos,i);
sb += preserveLinefeeds(txt,i+4,j);
pos = j + 3;
} else {
for(j=0;j<i;j++){
if (txt.charAt(j)=='\n') lino++;
}
warn.push(new warning(lino,"Schließende Kommentarklammer nicht gefunden"));
i = -1; // schleife beenden
}
}
} while (i >= 0);
return sb+txt.substr(pos);
}
// Tags ausblenden (nicht geschachtelt)
function filterTag(text,tag,warn)
{
var sb="";
var pos=0;
var state=0;
var startp=0;
var i1=0;
var from=0;
var to=0;
var chr = '';
var attr = '';
var val = '';
var txt = '';
var textlow=text.toLowerCase();
while (i1 >= 0 && pos<text.length){
chr = text.charAt(pos);
switch (state) {
case 0:
i1 = textlow.indexOf("<"+tag, pos);
if (i1 >= 0){
state = 1;
from=i1;
pos = i1+tag.length+1;
} else {
pos =text.length;
} break;
case 1:
if (chr==' '){
state = 3;
pos++;
} else if (chr=='/'){
state = 2;
pos++;
} else if (chr=='>'){
state = 20;
pos++;
} else {
state = 0;
pos++;
} break;
case 2:
if (chr=='>'){
state = 0;
pos++;
to=pos;
sb += text.substr(startp, from - startp);
sb += preserveLinefeeds(text,from,to);
startp = to;
} else {
warn.push(new warning(-1,"Schließende Tagklammer > nicht gefunden"));
pos++;
} break;
case 3:
if (chr=='>'){
state = 20;
pos++;
} else if (chr==' '){
attr='';
pos++;
} else if (chr=='='){
state = 10;
val="";
pos++;
} else {
attr+=chr;
pos++;
} break;
case 10:
if (chr=='"'){
i1 = text.indexOf('"', pos+1);
if (i1 >= 0){
state = 3;
val=text.substring(pos+1,i1);
pos = i1+1;
} else {
state = 0;
warn.push(new warning(-1,'Schließendes Hochkomma " nicht gefunden'));
pos++;
} break;
} else if (chr=="'"){
i1 = text.indexOf("'", pos+1);
if (i1 >= 0){
state = 3;
val=text.substring(pos+1,i1);
pos = i1+1;
} else {
state = 0;
warn.push(new warning(-1,"Schließendes Hochkomma ' nicht gefunden"));
pos++;
} break;
} else if (chr==' '){
pos++;
} else {
state = 13;
val+=chr;
pos++;
} break;
case 13:
if (chr=='>'){
state = 20;
pos++;
} else if (chr==' '){
state = 3;
attr='';
val='';
pos++;
} else {
val+=chr;
pos++;
} break;
case 20:
i1 = textlow.indexOf("</"+tag, pos);
if (i1 >= 0){
txt+=text.substring(pos,i1);
state = 21;
pos = i1+tag.length+2;
} else {
warn.push(new warning(-1,"Schließendes Tag </"+tag+"> nicht gefunden"));
txt+=text.substring(pos,text.length);
pos =text.length;
} break;
case 21:
if (chr == ' '){
pos++;
} else if (chr == '>'){
state = 0;
txt='';
pos++;
to=pos;
sb += text.substr(startp, from - startp);
sb += preserveLinefeeds(text,from,to);
startp = to;
} else {
warn.push(new warning(-1,"Schließende Tagklammer > nicht gefunden"));
pos++;
} break;
}
}
sb += text.substr(startp,text.length-startp);
return sb;
}
// text to lines
function buildLines(txt)
{
// opera uses CRLF in textareas
return txt.split(/\r?\n/)
}
// misc helper functions
function getCursor (e) {
var c = 0;
if (document.selection) {
e.focus ();
var s = document.selection.createRange ();
s.moveStart ('character', -e.value.length);
c = s.text.length;
} else if (e.selectionStart || e.selectionStart == '0') {
c = e.selectionStart;
}
return (c);
}
function setCursor(e, pos){
if(e.setSelectionRange) {
e.focus();
e.setSelectionRange(pos,pos);
} else if (e.createTextRange) {
var r = ctrl.createTextRange();
r.collapse(true);
r.moveEnd('character', pos);
r.moveStart('character', pos);
r.select();
}
}
function startsWithUml(txt,str) {
var i = txt.length;
var uml=false;
if(i<str.length){
return false;
}
for(i=0;i<str.length;i++){
if(txt[i] == str[i]){
} else {
if( (txt[i] == 'Ä' && str[i] == 'A')
|| (txt[i] == 'Ö' && str[i] == 'O')
|| (txt[i] == 'Ü' && str[i] == 'U')
|| (txt[i] == 'ä' && str[i] == 'a')
|| (txt[i] == 'ö' && str[i] == 'o')
|| (txt[i] == 'ü' && str[i] == 'u')){
uml=true;
} else {
return false;
}
}
}
return uml;
}
function getGenusEnd(s) {
var e="e";
if (contains(s,"===")){
if (contains(s,"{n}") || contains(s,"{nf}") || contains(s,"{nm}")) {
e+="s";
} else if (contains(s,"{m}") || contains(s,"{mf}")) {
e+="r";
}
}
return e;
}
function getLinks(s) {
var a=[];
var re=/\[\[([^\]]*)\]\]/g;
var ar=re.exec(s);
while (ar!=null) {
a.push(ar[1]);
ar=re.exec(s);
}
return a;
}
function toAnsi(s) {
return s.replace(/ß/g,"%DF").replace(/ü/g,"%FC").replace(/ö/g,"%F6").replace(/ä/g,"%E4").replace(/Ü/g,"%DC").replace(/Ö/g,"%D6").replace(/Ä/g,"%C4");
}
function isEmpty(obj){
for (var k in obj) {
if (obj.hasOwnProperty(k)) return false;
}
return true;
};
function extractStr2(txt,left,r1,r2,strip) {
var s=extractStr(txt,left,r1,strip);
if(s.length==0){
s=extractStr(txt,left,r2,strip);
}
return s;
}
// extract substring
function extractStr(txt,left,right,strip)
{
var i = left.length == 0 ? 0 : txt.indexOf(left);
if (i>=0) {
var j = right.length == 0 ? txt.length : txt.indexOf(right,i+1);
if (j>=0) {
if (typeof strip === "undefined") {
return txt.substring(i,j+right.length);
} else {
switch (strip) {
case 'L': return txt.substring(i+left.length,j+right.length);
case 'R': return txt.substring(i,j);
case 'B': return txt.substring(i+left.length,j);
}
}
}
}
return '';
}
function toUpperFirst(s) {
return s.substr(0,1).toUpperCase()+s.substr(1);
}
function toLowerFirst(s) {
return s.substr(0,1).toLowerCase()+s.substr(1);
}
// insert string
function insertStr(txt,pos,str)
{
if (pos<0) {
return txt.substr(0,txt.length+pos)+str+txt.substr(txt.length+pos);
}
return txt.substr(0,pos)+str+txt.substr(pos);
}
// trim whitespace
function trimEnd(txt)
{
var i = txt.length-1;
while (i >= 0 && txt.charAt(i) == ' ') {
i--;
}
return txt.substring(0,i+1);
}
function startsWith(txt,str)
{
return (txt.length >= str.length && txt.lastIndexOf(str,0) == 0)
}
function endsWith(txt,str)
{
var idx = txt.length - str.length;
return (txt.length >= str.length && txt.indexOf(str,idx) == idx)
}
function containsAt(txt,str,pos)
{
return (txt.length+pos >= str.length && (txt.substr(pos,str.length)).lastIndexOf(str,0) == 0)
}
function contains(txt,str)
{
return txt.indexOf(str) >= 0;
}
// end namespace: checkpage
}( window.checkpage = window.checkpage || {}, jQuery ));
jQuery(document).ready(checkpage.analyzePage);
// </nowiki>