Modul:Lehensabfrage Briefspiel: Unterschied zwischen den Versionen

Aus KoschWiki
Zur Navigation springen Zur Suche springen
SyncBot (D | B)
K (Automatisch synchronisiert.)
VolkoV (D | B)
K (Automatisch synchronisiert.)
Zeile 32: Zeile 32:
  if a=='' then a='unbekannt' end
  if a=='' then a='unbekannt' end
  return a
  return a
end;
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)
function printhandlungsortesub(frame,ort,catname,visited,rekursion,enhance)
ort=string.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
Zeile 41: Zeile 48:
  local result=''
  local result=''
  local i=holelehenattribut(frame,ort,'Icon ist')
  local i=holelehenattribut(frame,ort,'Icon ist')
  local ortbps=mw.title.new(ort).text
  local ortbps=basepagename(ort)
  local hoi='[[Handlungsort indirekt::'..ort..'|&nbsp;]]'
  local hoi='[[Handlungsort indirekt::'..ort..'|&nbsp;]]'
  if rekursion==7 then hoi='' end
  if rekursion==7 then hoi='' end

Version vom 5. März 2020, 21:53 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..'|&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>=-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