Modul:Lehensabfrage Briefspiel: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
VolkoV (Diskussion | Beiträge) K (Schützte „Modul:Lehensabfrage Briefspiel“: Automatisch gesperrt. ([Verschieben=Nur Administratoren erlauben] (unbeschränkt) [Bearbeiten=Nur Administratoren erlauben] (unbeschränkt))) |
VolkoV (Diskussion | Beiträge) K (Automatisch synchronisiert.) |
||
| Zeile 98: | Zeile 98: | ||
local result='' | local result='' | ||
local k=tonumber(kapitel) | 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>=-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>=-10)and(k<1) then result="Prolog "..tostring(k+11) end | ||
Version vom 18. März 2021, 07:50 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)
ort=string.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