Modul:Reihenabfrage

Aus GaretienWiki
Version vom 13. April 2019, 06:44 Uhr von VolkoV (D | B)
Zur Navigation springen Zur Suche springen

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

local p = {}

function print_r(arr, indentLevel)
    local str = ""
    local indentStr = "#"

    if(indentLevel == nil) then
        print(print_r(arr, 0))
        return
    end

    for i = 0, indentLevel do
        indentStr = indentStr.."\t"
    end

    for index,value in pairs(arr) do
        if type(value) == "table" then
            str = str..indentStr..index..": \n"..print_r(value, (indentLevel + 1))
        else 
            str = str..indentStr..index..": "..value.."\n"
        end
    end
    return str
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=10',
		'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
			r[i]={}
			r[i]["Artikel"]=value
			r[i]["Reihe"]=value2
			r[i]["Beschreibung"]=beschreibung
			r[i]["Wappen"]=wappen
			i=i+1
		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.."</b>".."("..value["Zähler"]..")<br>"
	end
	return r
end


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

return p