Modul:Lehensabfrage: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
K (Schützte „Modul:Lehensabfrage“: Automatisch gesperrt. ([Verschieben=Nur Administratoren erlauben] (unbeschränkt) [Bearbeiten=Nur Administratoren erlauben] (unbeschränkt)) [kaskadierend]) |
Keine Bearbeitungszusammenfassung |
||
| Zeile 23: | Zeile 23: | ||
function holelehen(frame,familie) | function holelehen(frame,familie,manuell) | ||
if familie=='' then return '' end | if familie=='' then return '' end | ||
| Zeile 39: | Zeile 39: | ||
--Finde alle aktiven Lehen dieser Familienmitglieder | --Finde alle aktiven Lehen dieser Familienmitglieder | ||
local result={} | local result={} | ||
local doppelte={} | |||
local t=mw.text.split(a,',',true) | local t=mw.text.split(a,',',true) | ||
local eingemischt=false | |||
for key,value in pairs(t) do | for key,value in pairs(t) do | ||
if robusttrim(value)~='' then | if (robusttrim(value)~='')or(eingemischt~=true) then | ||
local l=holelehensub(frame,value) | local l=holelehensub(frame,value)..','..manuell | ||
eingemischt=true | |||
--Finde die Art des Lehens dieses Familienmitglieds | --Finde die Art des Lehens dieses Familienmitglieds | ||
| Zeile 51: | Zeile 54: | ||
local k=holelehenattribut(frame,value2,'Kurzname') | local k=holelehenattribut(frame,value2,'Kurzname') | ||
local i=holelehenattribut(frame,value2,'Icon ist') | local i=holelehenattribut(frame,value2,'Icon ist') | ||
if(result[d]==nil) then result[d]={} end | if doppelte[value2]==nil then | ||
if(result[d]==nil) then result[d]={} end | |||
table.insert(result[d],{["Artikel"]=value2,["Kurzname"]=k,["Icon"]=i}); | |||
doppelte[value2]=true; | |||
end | |||
end | end | ||
end | end | ||
| Zeile 71: | Zeile 77: | ||
end; | end; | ||
function kategorisiereUndHegemon(frame,lehen,title,catname,rekursion) | function kategorisiereUndHegemon(frame,lehen,title,catname,rekursion,kategorie) | ||
if kategorie==false then return '' end | |||
if lehen=='' then return '' end | if lehen=='' then return '' end | ||
if rekursion==0 then return '' end | if rekursion==0 then return '' end | ||
| Zeile 81: | Zeile 88: | ||
if heg~=''then | if heg~=''then | ||
t=mw.title.new(heg).text | t=mw.title.new(heg).text | ||
hegsub=kategorisiereUndHegemon(frame,heg,t,catname,rekursion-1) | hegsub=kategorisiereUndHegemon(frame,heg,t,catname,rekursion-1,kategorie) | ||
end | end | ||
| Zeile 87: | Zeile 94: | ||
end | end | ||
function printlehensub(frame,lehentable,catname,art,artpl) | function printlehensub(frame,lehentable,catname,art,artpl,kategorie) | ||
result='' | result='' | ||
if(lehentable[art]~=nil) then | if(lehentable[art]~=nil) then | ||
| Zeile 93: | Zeile 100: | ||
for key,value in pairs(lehentable[art]) do | for key,value in pairs(lehentable[art]) do | ||
t=mw.title.new(value["Artikel"]).text | t=mw.title.new(value["Artikel"]).text | ||
result=result..'[['..value["Artikel"]..'|'..value["Kurzname"]..']]'..kategorisiereUndHegemon(frame,value["Artikel"],t,catname,7)..', ' | result=result..'[['..value["Artikel"]..'|'..value["Kurzname"]..']]'..kategorisiereUndHegemon(frame,value["Artikel"],t,catname,7,kategorie)..', ' | ||
end | end | ||
end | end | ||
| Zeile 100: | Zeile 107: | ||
end | end | ||
function printlehen(frame,lehentable,catname,weiterelehen,weitereaemter) | function printlehen(frame,lehentable,catname,weiterelehen,weitereaemter,kategorie) | ||
result='' | result='' | ||
result=result..printlehensub(frame,lehentable,catname,'Reich','Reiche') | result=result..printlehensub(frame,lehentable,catname,'Reich','Reiche',kategorie) | ||
result=result..printlehensub(frame,lehentable,catname,'Provinz','Provinzen') | result=result..printlehensub(frame,lehentable,catname,'Provinz','Provinzen',kategorie) | ||
result=result..printlehensub(frame,lehentable,catname,'Grafschaft','Grafschaften') | result=result..printlehensub(frame,lehentable,catname,'Grafschaft','Grafschaften',kategorie) | ||
result=result..printlehensub(frame,lehentable,catname,'Baronie','Baronien') | result=result..printlehensub(frame,lehentable,catname,'Baronie','Baronien',kategorie) | ||
result=result..printlehensub(frame,lehentable,catname,'Junkertum','Junkertümer') | result=result..printlehensub(frame,lehentable,catname,'Junkertum','Junkertümer',kategorie) | ||
result=result..printlehensub(frame,lehentable,catname,'Herrschaft','Herrschaften') | result=result..printlehensub(frame,lehentable,catname,'Herrschaft','Herrschaften',kategorie) | ||
result=result..frame:callParserFunction('#invoke','Text','Zeile','Weitere Lehen',weiterelehen) | result=result..frame:callParserFunction('#invoke','Text','Zeile','Weitere Lehen',weiterelehen) | ||
result=result..frame:callParserFunction('#invoke','Text','Zeile','Weitere Ämter',weitereaemter) | result=result..frame:callParserFunction('#invoke','Text','Zeile','Weitere Ämter',weitereaemter) | ||
| Zeile 143: | Zeile 150: | ||
weiterelehen=robusttrim(frame.args[3]) | weiterelehen=robusttrim(frame.args[3]) | ||
weitereaemter=robusttrim(frame.args[4]) | weitereaemter=robusttrim(frame.args[4]) | ||
manuell=robusttrim(frame.args[5]) | |||
local familie=frame.args[1] | local familie=frame.args[1] | ||
local result=holelehen(frame,familie) | local result=holelehen(frame,familie,manuell) | ||
frame:callParserFunction('#vardefine','LehensabfrageIcons',printlehenicon(frame,result)) | frame:callParserFunction('#vardefine','LehensabfrageIcons',printlehenicon(frame,result)) | ||
return printlehen(frame,result,catname,weiterelehen,weitereaemter) | frame:callParserFunction('#vardefine','Lehensabfrage',printlehen(frame,result,catname,weiterelehen,weitereaemter,false)) | ||
return printlehen(frame,result,catname,weiterelehen,weitereaemter,true) | |||
end | end | ||
return p | return p | ||
Version vom 26. Juli 2018, 04:24 Uhr
Dokumentation und Testfälle unter Modul:Lehensabfrage/Doku.
local p = {}
function robusttrim(s)
if s==nil then return '' end
local p=string.gsub(s,'%[%[SMW::on%]%]','')
p=string.gsub(p,'%[%[SMW::off%]%]','')
return mw.text.trim(p)
end
function holelehensub(frame,person)
if person=='' then return '' end
local s='[[-has subobject::'..person..']] [[Herrscher von BisIndex::99990000]]'
local a=frame:callParserFunction(
'#ask',s,
'mainlabel=-',
'?Herrscher von Lehen#=',
'limit=500',
'searchlabel=',
'format=list'
)
return a
end
function holelehen(frame,familie,manuell)
if familie=='' then return '' end
--Finde alle lebenden Familienmitglieder
local s='<q>[[Familienmitglied von::'..familie..']] OR [[Familienmitglied von.Untergruppierung von::'..familie..']]</q> [[Lebend::Ja]]'
local a=frame:callParserFunction(
'#ask',s,
'mainlabel=-',
'?#=',
'limit=500',
'searchlabel=',
'format=list'
)
--Finde alle aktiven Lehen dieser Familienmitglieder
local result={}
local doppelte={}
local t=mw.text.split(a,',',true)
local eingemischt=false
for key,value in pairs(t) do
if (robusttrim(value)~='')or(eingemischt~=true) then
local l=holelehensub(frame,value)..','..manuell
eingemischt=true
--Finde die Art des Lehens dieses Familienmitglieds
local t2=mw.text.split(l,',',true)
for key2,value2 in pairs(t2) do
if robusttrim(value2)~='' then
local d=holelehenattribut(frame,value2,'Lehenstyp')
local k=holelehenattribut(frame,value2,'Kurzname')
local i=holelehenattribut(frame,value2,'Icon ist')
if doppelte[value2]==nil then
if(result[d]==nil) then result[d]={} end
table.insert(result[d],{["Artikel"]=value2,["Kurzname"]=k,["Icon"]=i});
doppelte[value2]=true;
end
end
end
end
end
return result
end
function holelehenattribut(frame,lehen,attribut)
if lehen=='' then return 'unbekannt' end
local a=frame:callParserFunction(
'#show',lehen,
'?'..attribut..'#'
)
if a=='' then a='unbekannt' end
return a
end;
function kategorisiereUndHegemon(frame,lehen,title,catname,rekursion,kategorie)
if kategorie==false then return '' end
if lehen=='' then return '' end
if rekursion==0 then return '' end
local heg=frame:callParserFunction(
'#show',lehen,
'?Vasallenlehen von#'
)
hegsub=''
if heg~=''then
t=mw.title.new(heg).text
hegsub=kategorisiereUndHegemon(frame,heg,t,catname,rekursion-1,kategorie)
end
return '[[Kategorie:'..title..'|'..catname..']]'..hegsub
end
function printlehensub(frame,lehentable,catname,art,artpl,kategorie)
result=''
if(lehentable[art]~=nil) then
result=''
for key,value in pairs(lehentable[art]) do
t=mw.title.new(value["Artikel"]).text
result=result..'[['..value["Artikel"]..'|'..value["Kurzname"]..']]'..kategorisiereUndHegemon(frame,value["Artikel"],t,catname,7,kategorie)..', '
end
end
result=mw.ustring.sub(result,1,mw.ustring.len(result)-2)
return frame:callParserFunction('#invoke','Text','Zeile',artpl,result)
end
function printlehen(frame,lehentable,catname,weiterelehen,weitereaemter,kategorie)
result=''
result=result..printlehensub(frame,lehentable,catname,'Reich','Reiche',kategorie)
result=result..printlehensub(frame,lehentable,catname,'Provinz','Provinzen',kategorie)
result=result..printlehensub(frame,lehentable,catname,'Grafschaft','Grafschaften',kategorie)
result=result..printlehensub(frame,lehentable,catname,'Baronie','Baronien',kategorie)
result=result..printlehensub(frame,lehentable,catname,'Junkertum','Junkertümer',kategorie)
result=result..printlehensub(frame,lehentable,catname,'Herrschaft','Herrschaften',kategorie)
result=result..frame:callParserFunction('#invoke','Text','Zeile','Weitere Lehen',weiterelehen)
result=result..frame:callParserFunction('#invoke','Text','Zeile','Weitere Ämter',weitereaemter)
return frame:callParserFunction('#invoke','Text','Zeilengruppe','Lehen',result)
end
function printleheniconsub(frame,lehentable,art)
result=''
if(lehentable[art]~=nil) then
result=''
for key,value in pairs(lehentable[art]) do
result=result..'[['..value['Icon']..'|20px|link='..value['Artikel']..']] '
end
end
return result
end
function printlehenicon(frame,lehentable)
result=''
result=result..printleheniconsub(frame,lehentable,'Reich')
result=result..printleheniconsub(frame,lehentable,'Provinz')
result=result..printleheniconsub(frame,lehentable,'Grafschaft')
result=result..printleheniconsub(frame,lehentable,'Baronie')
result=result..printleheniconsub(frame,lehentable,'Junkertum')
result=result..printleheniconsub(frame,lehentable,'Herrschaft')
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(frame,familie,manuell)
frame:callParserFunction('#vardefine','LehensabfrageIcons',printlehenicon(frame,result))
frame:callParserFunction('#vardefine','Lehensabfrage',printlehen(frame,result,catname,weiterelehen,weitereaemter,false))
return printlehen(frame,result,catname,weiterelehen,weitereaemter,true)
end
return p