Modul:Lehensabfrage
Zur Navigation springen
Zur Suche springen
Dokumentation und Testfälle unter Modul:Lehensabfrage/Doku.
local p = {} require("Modul:Hilfsfunktionen") require("Modul:Text") function holelehendetails(lehen) if lehen=='' then return {} end local s='[['..lehen..']]' local details=mw.smw.ask(s ..'|mainlabel=-' ..'|?Kurzname#=' ..'|?Lehenstyp#=' ..'|limit=1' ..'|searchlabel=' ) if details==nil then return {} end return details end function holelehensub(mitglied) if mitglied=='' then return {} end local s='[[-has subobject::'..mitglied..']]' local lehen=mw.smw.ask(s ..'|mainlabel=-' ..'|?Herrscher von Lehen#=' ..'|?Herrscher von Art#=' ..'|?Herrscher von VonIndex#=' ..'|?Herrscher von BisIndex#=' ..'|limit=500' ..'|searchlabel=' ..'|sort=Herrscher von VonIndex' ) if lehen==nil then return {} end return lehen end function sortierelehen(a,b) return a['kurzname']<b['kurzname'] end function holelehen(jahr,familie,manuell) if familie=='' then return '' end local lehensarten={} lehensarten['Reich']='Reiche' lehensarten['Provinz']='Provinzen' lehensarten['Grafschaft']='Grafschaften' lehensarten['Baronie']='Baronien' lehensarten['Junkertum']='Junkertümer' lehensarten['Herrschaft']='Herrschaften' local lehenssort={} lehenssort['Reich']=1 lehenssort['Provinz']=2 lehenssort['Grafschaft']=3 lehenssort['Baronie']=4 lehenssort['Junkertum']=5 lehenssort['Herrschaft']=6 --Finde alle Familienmitglieder local s='<q>[[Familienmitglied von::'..familie..']] OR [[Familienmitglied von.Untergruppierung von::'..familie..']]</q>' local mitglieder=mw.smw.ask(s ..'|mainlabel=-' ..'|?#-=' ..'|limit=500' ..'|searchlabel=' ) if mitglieder==nil then mitglieder={} end --Finde alle Lehen dieser Familienmitglieder --TODO: manuell einmischen local allelehen={} for mkey,mvalue in pairs(mitglieder) do local lehen=holelehensub(mvalue[1]) for lkey,lvalue in pairs(lehen) do if lvalue[1]~=nil then if allelehen[lvalue[1]]==nil then allelehen[lvalue[1]]={} end local von=lvalue[3]/10000 local bis=lvalue[4]/10000 if allelehen[lvalue[1]]['aktuell']==nil then allelehen[lvalue[1]]['aktuell']=false end if bis>jahr then bis=jahr allelehen[lvalue[1]]['aktuell']=true end local v=3 if lvalue[2]=='Titel' then v=2 end if lvalue[2]=='Regent' then v=1 end for i=von,bis,1 do allelehen[lvalue[1]][i]=v end end end end local lehenverdichtet={} for akey,avalue in pairs(allelehen) do local countr=0; local countt=0; for jkey,jvalue in pairs(avalue) do if (jvalue==1)or(jvalue==3) then countr=countr+1 end if (jvalue==2)or(jvalue==3) then countt=countt+1 end end local details=holelehendetails(akey) if (details[1]~=nil) and (details[1][2]~=nil) and (lehensarten[details[1][2]]~=nil) then local art=details[1][2] local key=lehensarten[akey] if lehenverdichtet[art]==nil then lehenverdichtet[art]={} end lehenverdichtet[art][key]={} lehenverdichtet[art][key]['sort']=lehenssort[akey] lehenverdichtet[art][key]['kurzname']=details[1][1] lehenverdichtet[art][key]['aktuell']=avalue['aktuell'] lehenverdichtet[art][key]['regent']=countr lehenverdichtet[art][key]['titel']=countt end end local result='' for vkey,vvalue in pairs(lehenverdichtet) do local werte={} table.sort(vvalue,sortierelehen) for lkey,lvalue in pairs(vvalue) do local aktuell='\'\'\'' if not lvalue['aktuell'] then aktuell='' end table.insert(werte,aktuell..'[['..lkey..'|'..lvalue['kurzname']..']]'..aktuell) end result=result..subZeile(vkey,table.concat(werte,', ')) end return result end function p.Abfrage(frame) if (frame.args[1]==nil) then return 'no parameter found' end catname=robusttrim(frame.args[2]) weiterelehen=robusttrim(frame.args[3]) weitereaemter=robusttrim(frame.args[4]) manuell=robusttrim(frame.args[5]) local familie=frame.args[1] local result=holelehen(1047,familie,manuell) if true then return result end end return p