Modul:Lehensabfrage Briefspiel: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
Zeile 28: | Zeile 28: | ||
local a=frame:callParserFunction( | local a=frame:callParserFunction( | ||
'#show',lehen, | '#show',lehen, | ||
'?'..attribut..'# | '?'..attribut..'#' | ||
) | ) | ||
if a=='' then a='unbekannt' end | if a=='' then a='unbekannt' end | ||
Zeile 47: | Zeile 47: | ||
local result='' | local result='' | ||
local i=holelehenattribut(frame,ort,'Icon ist') | local i=holelehenattribut(frame,ort,'Icon ist') | ||
if i~=nil then return i end | if i~=nil then return ort.."?"..i end | ||
local ortbps=basepagename(ort) | local ortbps=basepagename(ort) | ||
local hoi='[[Handlungsort indirekt::'..ort..'| ]]' | local hoi='[[Handlungsort indirekt::'..ort..'| ]]' |
Version vom 29. Februar 2020, 14:40 Uhr
Dokumentation und Testfälle unter Modul:Lehensabfrage Briefspiel/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 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) 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') if i~=nil then return ort.."?"..i end 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>=-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