Modul:Lehensabfrage
Zur Navigation springen
Zur Suche springen
Dokumentation und Testfälle unter Modul:Lehensabfrage/Doku.
local p = {}
require("Modul:Hilfsfunktionen")
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 holelehen(jahr,familie,manuell)
if familie=='' then return '' end
--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 result=''
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=math.min(jahr,lvalue[4]/10000)
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
--result=result..'\n*[['..lvalue[1]..']] ('..lvalue[2]..': '..lvalue[3]..' bis '..lvalue[4]..')'
end
end
end
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 then
result=result..'\n*'..dump(details,"")
--result=result..'\n*'..details[1][2]..'[['..akey..'|'..details[1][1]..']] ('..countr..' Jahre Regentschaft, '..countt..' Jahre Titel)'
end
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