Modul:Lehensabfrage Briefspiel: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
VolkoV (Diskussion | Beiträge) K (Automatisch synchronisiert.) |
VolkoV (Diskussion | Beiträge) K (Automatisch synchronisiert.) |
||
Zeile 3: | Zeile 3: | ||
function robusttrim(s) | function robusttrim(s) | ||
if s==nil then return '' end | if s==nil then return '' end | ||
local p= | local p=mw.ustring.gsub(s,'%[%[SMW::on%]%]','') | ||
p= | p=mw.ustring.gsub(p,'%[%[SMW::off%]%]','') | ||
return mw.text.trim(p) | return mw.text.trim(p) | ||
end | end | ||
Zeile 41: | Zeile 41: | ||
function printhandlungsortesub(frame,ort,catname,visited,rekursion,enhance) | function printhandlungsortesub(frame,ort,catname,visited,rekursion,enhance) | ||
ort= | ort=mw.ustring.gsub(ort,"(%b<>)","") --strip html tags | ||
if rekursion==0 then return '' end | if rekursion==0 then return '' end | ||
if visited[ort]~=nil then return '' end | if visited[ort]~=nil then return '' end |
Version vom 17. Mai 2021, 15:08 Uhr
Dokumentation und Testfälle unter Modul:Lehensabfrage Briefspiel/Doku.
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 holehandlungsorte(frame,geschichte) if geschichte=='' then return '' end --Finde alle Handlungsorte local a=frame:callParserFunction( '#ask','[['..geschichte..']]', 'mainlabel=-', '?Handlungsort ist#=', 'limit=500', 'searchlabel=', 'format=list' ) return mw.text.split(a,',',true); 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 basepagename(page) local parts=mw.text.split(page,':',true) if #parts==1 then return parts[1] end return parts[2] end function printhandlungsortesub(frame,ort,catname,visited,rekursion,enhance) ort=mw.ustring.gsub(ort,"(%b<>)","") --strip html tags if rekursion==0 then return '' end if visited[ort]~=nil then return '' end visited[ort]=true ort=mw.text.split(ort,'#',true)[1] local result='' local i=holelehenattribut(frame,ort,'Icon ist') local ortbps=basepagename(ort) local hoi='[[Handlungsort indirekt::'..ort..'| ]]' if rekursion==7 then hoi='' end result=result..' [['..i..'|20px|link='..ort..']][[Kategorie:'..ortbps..'|'..catname..']]'..hoi if enhance then result='<div class="hell" style="display:inline-block;">'..result..'</div>' end local heg=frame:callParserFunction( '#show',ort, '?Vasallenlehen von#' ) if heg~='' then local heg1=mw.text.split(heg,',',true); for key,value in pairs(heg1) do if robusttrim(value)~='' then result=printhandlungsortesub(frame,value,catname,visited,rekursion-1,false)..result..' ' end end end return result end function printhandlungsorte(frame,orte,catname) local result='' local visited={} for key,value in pairs(orte) do if robusttrim(value)~='' then result=result..printhandlungsortesub(frame,value,catname,visited,7,true) end end return result end function p.Abfrage(frame) if (frame.args[1]==nil) then return "no parameter found" end local catname=robusttrim(frame.args[2]) local geschichte=frame.args[1] local result=holehandlungsorte(frame,geschichte) return printhandlungsorte(frame,result,catname) end function p.Kapiteltext(frame) if (frame.args[1]==nil) then return "no parameter found" end local kapitel=robusttrim(frame.args[1]) local result='' local k=tonumber(kapitel) if (k==nil) then return "" end if (k>=-100)and(k<-10) then result="Vorgeschichte "..tostring(k+101) end if (k>=-10)and(k<1) then result="Prolog "..tostring(k+11) end if (k>=1)and(k<97) then result="Kapitel "..tostring(k) end if (k==97) then result="Epilog" end if (k==98) then result="Anhang" end if (k>=99) then result="Folgehandlung "..tostring(k-98) end return result end function p.KapiteltextKurz(frame) if (frame.args[1]==nil) then return "no parameter found" end local kapitel=robusttrim(frame.args[1]) local result='' local k=tonumber(kapitel) if (k>=-100)and(k<-10) then result="V"..tostring(k+101) end if (k>=-10)and(k<1) then result="P"..tostring(k+11) end if (k>=1)and(k<97) then result="K"..tostring(k) end if (k==97) then result="E" end if (k==98) then result="A" end if (k>=99) then result="F"..tostring(k-98) end return result end return p