Modul:Reihenabfrage: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
(13 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
local p = {} | local p = {} | ||
− | function | + | 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 | end | ||
Zeile 16: | Zeile 30: | ||
function holeGeschichten(frame) | function holeGeschichten(frame) | ||
+ | local r={} | ||
+ | local i=0 | ||
local s='<q>[[Geschichten:+]] OR [[Lieder:+]] OR [[Heroldartikel:+]]</q>' | local s='<q>[[Geschichten:+]] OR [[Lieder:+]] OR [[Heroldartikel:+]]</q>' | ||
local a=frame:callParserFunction( | local a=frame:callParserFunction( | ||
Zeile 22: | Zeile 38: | ||
'?#=', | '?#=', | ||
'sep=€', | 'sep=€', | ||
− | 'limit= | + | 'limit=100', |
'searchlabel=', | 'searchlabel=', | ||
'format=list', | 'format=list', | ||
Zeile 28: | Zeile 44: | ||
'order=desc' | 'order=desc' | ||
) | ) | ||
− | |||
local t=mw.text.split(a,'€',true) | local t=mw.text.split(a,'€',true) | ||
for key,value in pairs(t) do | 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 | end | ||
return r | return r | ||
end | 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) | 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