Modul:Reihenabfrage: Unterschied zwischen den Versionen

Aus GaretienWiki
Zur Navigation springen Zur Suche springen
VolkoV (D | B)
VolkoV (D | B)
 
(22 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
 
local p = {}
 
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 holeReihen(frame,artikel)
 +
local a=frame:callParserFunction(
 +
'#ask',
 +
'[[-Has subobject::'..artikel..']]',
 +
'?Reihe ist#=',
 +
'sep=€',
 +
'mainlabel=-'
 +
)
 +
return mw.text.split(a,'€',true)
 +
end
 +
 +
function holeAttribut(frame,artikel,attribut)
 +
local a=frame:callParserFunction(
 +
'#ask',
 +
'[['..artikel..']]',
 +
'?'..attribut..'#=',
 +
'mainlabel=-'
 +
)
 +
return a
 +
end
  
 
function holeGeschichten(frame)
 
function holeGeschichten(frame)
local s='<q>[[Geschichten:+]] OR [[Lieder:+]] OR [[Heroldartikel:+]]</q>'
+
local r={}
local a=frame:callParserFunction(
+
local i=0
  '#ask',s,
+
local s='<q>[[Geschichten:+]] OR [[Lieder:+]] OR [[Heroldartikel:+]]</q>'
  'mainlabel=-',
+
local a=frame:callParserFunction(
  '?Wappen ist#=',
+
'#ask',s,
  '?Kurzbeschreibung#=',
+
'mainlabel=-',
  'limit=10',
+
'?#=',
  'searchlabel=',
+
'sep=',
  'format=list',
+
'limit=100',
  'sort=Erstellt',
+
'searchlabel=',
  'order=desc'
+
'format=list',
)
+
'sort=Erstellt',
local r=''
+
'order=desc'
local t=mw.text.split(a,',',true)
+
)
for key,value in pairs(t) do
+
local t=mw.text.split(a,'',true)
r=r..value.."<br>"
+
for key,value in pairs(t) do
end
+
local reihen=holeReihen(frame,value)
return r
+
--local beschreibung=holeAttribut(frame,value,"Kurzbeschreibung")
 +
--local wappen=holeAttribut(frame,value,"Wappen ist")
 +
for key2,value2 in pairs(reihen) do
 +
if robusttrim(value2)~="" then
 +
r[i]={}
 +
r[i]["Artikel"]=value
 +
r[i]["Reihe"]=value2
 +
--r[i]["Beschreibung"]=beschreibung
 +
--r[i]["Wappen"]=wappen
 +
i=i+1
 +
end
 +
end
 +
end
 +
return r
 +
end
 +
 
 +
function formatiereGeschichten(geschichten)
 +
local r=""
 +
local reihen={}
 +
for i,geschichte in ipairs(geschichten) do
 +
if reihen[geschichte["Reihe"]]==nil then
 +
reihen[geschichte["Reihe"]]={}
 +
reihen[geschichte["Reihe"]]["Zähler"]=0
 +
end
 +
reihen[geschichte["Reihe"]][geschichte["Artikel"]]=geschichte
 +
reihen[geschichte["Reihe"]]["Zähler"]=reihen[geschichte["Reihe"]]["Zähler"]+1
 +
end
 +
for key,value in pairs(reihen) do
 +
r=r.."<b>[["..key.." — Briefspielreihe|"..key.."]]</b> ("..value["Zähler"]..")<br>"
 +
end
 +
return r
 
end
 
end
 +
  
 
function p.Abfrage(frame)
 
function p.Abfrage(frame)
return holeGeschichten(frame)
+
return formatiereGeschichten(holeGeschichten(frame))
 
end
 
end
  
 
return p
 
return p

Aktuelle Version vom 17. Mai 2021, 14:44 Uhr

Die Dokumentation für dieses Modul kann unter Modul:Reihenabfrage/Doku erstellt werden

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 holeReihen(frame,artikel)
	local a=frame:callParserFunction(
		'#ask',
		'[[-Has subobject::'..artikel..']]',
		'?Reihe ist#=',
		'sep=€',
		'mainlabel=-'
	)
	return mw.text.split(a,'€',true)
end

function holeAttribut(frame,artikel,attribut)
	local a=frame:callParserFunction(
		'#ask',
		'[['..artikel..']]',
		'?'..attribut..'#=',
		'mainlabel=-'
	)
	return a
end

function holeGeschichten(frame)
	local r={}
	local i=0
	local s='<q>[[Geschichten:+]] OR [[Lieder:+]] OR [[Heroldartikel:+]]</q>'
	local a=frame:callParserFunction(
 		'#ask',s,
		'mainlabel=-',
		'?#=',
		'sep=€',
		'limit=100',
		'searchlabel=',
		'format=list',
		'sort=Erstellt',
		'order=desc'
	)
	local t=mw.text.split(a,'€',true)
	for key,value in pairs(t) do
		local reihen=holeReihen(frame,value)
		--local beschreibung=holeAttribut(frame,value,"Kurzbeschreibung")
		--local wappen=holeAttribut(frame,value,"Wappen ist")
		for key2,value2 in pairs(reihen) do
			if robusttrim(value2)~="" then
				r[i]={}
				r[i]["Artikel"]=value
				r[i]["Reihe"]=value2
				--r[i]["Beschreibung"]=beschreibung
				--r[i]["Wappen"]=wappen
				i=i+1
			end
		end
	end
	return r
end

function formatiereGeschichten(geschichten)
	local r=""
	local reihen={}
	for i,geschichte in ipairs(geschichten) do
		if reihen[geschichte["Reihe"]]==nil then
			reihen[geschichte["Reihe"]]={}
			reihen[geschichte["Reihe"]]["Zähler"]=0
		end
		reihen[geschichte["Reihe"]][geschichte["Artikel"]]=geschichte
		reihen[geschichte["Reihe"]]["Zähler"]=reihen[geschichte["Reihe"]]["Zähler"]+1
	end
	for key,value in pairs(reihen) do
		r=r.."<b>[["..key.." — Briefspielreihe|"..key.."]]</b> ("..value["Zähler"]..")<br>"
	end
	return r
end


function p.Abfrage(frame)
	return formatiereGeschichten(holeGeschichten(frame))
end

return p