Modul:Lehensabfrage Briefspiel

Aus GaretienWiki
Zur Navigation springen Zur Suche springen
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
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..'|&nbsp;]]'
 if rekursion==7 then hoi='' end
 result=result..'&nbsp;[['..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..'&nbsp;'
 		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