Modul:Test2
Zur Navigation springen
Zur Suche springen
Die Dokumentation für dieses Modul kann unter Modul:Test2/Doku erstellt werden
local p = {} function robusttrim(s) if s==nil then return '' end local p=mw.ustring.gsub(s,'%[%[SMW::on%]%]','') p=mw.ustring.gsub(p,'%[%[SMW::off%]%]','') return mw.text.trim(p) end function kinder(frame,person,nurwerte) if person=='' then return {} end local s='[[Vater ist::'..person..']] OR [[Mutter ist::'..person..']]' local o='sort=Vater ist,Mutter ist,Tsatag Index' local d='' if nurwerte then s='[['..person..']]' o='sort=Tsatag Index' d='default='..person..'|||?|?|Datei:Wappen blanko.svg|Datei:Wappen blanko.svg|Datei:Wappen blanko.svg|Datei:Wappen blanko.svg'; end local a=frame:callParserFunction( '#ask',s, 'mainlabel=-','?#','?Vater ist#','?Mutter ist#','?Tsatag Text#=','?Borontag Text#=', '?Wappen ist#=','?Familienwappen ist#=','?Lehenswappen ist#=','?Mitgliedswappen ist#=', 'format=template','template=ModulTest',o,d ) local t=mw.text.split(a,'\n',true) local result={} for key,value in pairs(t) do if robusttrim(value)~='' then local sp=mw.text.split(value,'|',true) result[key]={} result[key]['Person' ]=robusttrim(sp[1]) local e1=robusttrim(sp[2]) local e2=robusttrim(sp[3]) if e1==person then result[key]['Elter' ]=e2 else result[key]['Elter' ]=e1 end if nurwerte then result[key]['Elter']='' end result[key]['Tsatag' ]=robusttrim(sp[4]) result[key]['Borontag']=robusttrim(sp[5]) result[key]['Wappen' ]=robusttrim(sp[6]) result[key]['FWappen' ]=robusttrim(sp[7]) result[key]['LWappen' ]=robusttrim(sp[8]) result[key]['MWappen' ]=robusttrim(sp[9]) end end return result end function personString(person,tsa,bor,wap,fwap,lwap,mwap) local sp=mw.text.split(person,':',true) local ps=person if #sp>1 then ps=sp[2] end local wappen='[['..wap..'|x20px|link='..person..']]' if wap=='Datei:Wappen blanko.svg' then wappen='' end local fwappen='[['..fwap..'|x20px|link='..person..']]' if fwap=='Datei:Wappen blanko.svg' then fwappen='' end if fwap==wap then fwappen='' end local lwappen='[['..lwap..'|x20px|link='..person..']]' if lwap=='Datei:Wappen blanko.svg' then lwappen='' end if (lwap==wap)or(lwap==fwap) then lwappen='' end local mwappen='[['..mwap..'|x20px|link='..person..']]' if mwap=='Datei:Wappen blanko.svg' then mwappen='' end if (mwap==wap)or(mwap==fwap)or(mwap==lwap) then mwappen='' end local pre='' local post='' local tsat='[[Datei:Symbol Tsa-Kirche.svg|x15px|link=]] '..tsa local boront='' if bor~='' then boront=' - [[Datei:Symbol Boron-Kirche.svg|x15px|link=]] '..bor else pre="'''" post="'''" end return pre..wappen..fwappen..lwappen..mwappen..' [['..person..'|'..ps..']] ('..tsat..boront..')'..post end function kinderRekursiv(frame,person,elt,tsa,bor,wap,fwap,lwap,mwap,tiefe,maxtiefe,filter) if (tiefe>maxtiefe) or (person=='') then return '' end local rekursion=true if (filter~='') and (filter~=fwap) then rekursion=false end local result='' local pre='' for i=1,tiefe do pre=pre..'*' end local p=mw.ustring.gsub(person,'%[%[SMW::on%]%]','') p=mw.ustring.gsub(p,'%[%[SMW::off%]%]','') local pers=personString(p,tsa,bor,wap,fwap,lwap,mwap) mw.log(pre..p) local kin=kinder(frame,p,false) if rekursion==false then kin={} end local nexttiefe=tiefe+1 local printed=false local elter='' local klauf='' local klzu='' for key,value in pairs(kin) do if value['Elter']~=elter then elter=value['Elter'] local eltv=kinder(frame,elter,true) if(#eltv>0) then result=result..'\n'..pre..klauf..pers..klzu.." mit "..personString(elter,eltv[1]['Tsatag'],eltv[1]['Borontag'], eltv[1]['Wappen'],eltv[1]['FWappen'],eltv[1]['LWappen'],eltv[1]['MWappen'],filter) printed=true end klauf="''" klzu="''" end result=result..kinderRekursiv(frame, value['Person'],value['Elter'], value['Tsatag'],value['Borontag'], value['Wappen'],value['FWappen'],value['LWappen'],value['MWappen'], nexttiefe,maxtiefe,filter ) end if not printed then result=result..'\n'..pre..pers end return result end function p.smwtest(frame) if (frame.args[1]==nil)or(frame.args[2]==nil)or(frame.args[3]==nil) then return "no parameter found" end local subject=frame.args[1] local startdepth=tonumber(frame.args[2]) local maxdepth=tonumber(frame.args[3]) local filter=robusttrim(frame.args[4]) local meta=kinder(frame,subject,true) mw.logObject(meta) local value=meta[1]; local result=kinderRekursiv(frame, value['Person'],value['Elter'], value['Tsatag'],value['Borontag'], value['Wappen'],value['FWappen'],value['LWappen'],value['MWappen'], startdepth,maxdepth,filter ) return result end function p.deb() frame=mw.getCurrentFrame() frame2=frame:newChild{ args={'Barduron Golambes von Mersingen','1','10'} } local result=p.smwtest(frame2) return result end return p