Modul:Lehensabfrage: Unterschied zwischen den Versionen

Aus GaretienWiki
Zur Navigation springen Zur Suche springen
VolkoV (D | B)
Keine Bearbeitungszusammenfassung
VolkoV (D | B)
Keine Bearbeitungszusammenfassung
Zeile 20: Zeile 20:
end
end


function holelehen(familie,manuell)
function holelehen(jahr,familie,manuell)
if familie=='' then return '' end
if familie=='' then return '' end
Zeile 43: Zeile 43:
if allelehen[lvalue[1]]==nil then allelehen[lvalue[1]]={} end
if allelehen[lvalue[1]]==nil then allelehen[lvalue[1]]={} end
local von=lvalue[3]/10000
local von=lvalue[3]/10000
local bis=lvalue[4]/10000
local bis=math.min(jahr,lvalue[4]/10000)
for i=von,bis,1 do
for i=von,bis,1 do
allelehen[lvalue[1]][i]=1
allelehen[lvalue[1]][i]=1
Zeile 70: Zeile 70:
manuell=robusttrim(frame.args[5])
manuell=robusttrim(frame.args[5])
local familie=frame.args[1]
local familie=frame.args[1]
local result=holelehen(familie,manuell)
local result=holelehen(1047,familie,manuell)
if true then
if true then
  return result
  return result

Version vom 15. April 2024, 17:27 Uhr

Dokumentation und Testfälle unter Modul:Lehensabfrage/Doku.
local p = {}

require("Modul:Hilfsfunktionen")

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)
				for i=von,bis,1 do
					allelehen[lvalue[1]][i]=1
				end
				--result=result..'\n*[['..lvalue[1]..']] ('..lvalue[2]..': '..lvalue[3]..' bis '..lvalue[4]..')'
			end
		end
	end
	
	for akey,avalue in pairs(allelehen) do
		local count=0;
		for _ in pairs(avalue) do count=count+1 end
		result=result..'\n*[['..akey..']] ('..count..' Jahre)'
	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