Modul:Homokozó/Pepo41/UnpackVálasztottArgumentumokat
Innen: Hungaropédia
Ugrás a navigációhozUgrás a kereséshez
A modult a Modul:Homokozó/Pepo41/UnpackVálasztottArgumentumokat/doc lapon tudod dokumentálni
local p= {}
function p.tablepack(...)
return { n = select("#", ...), ... } -- létrehoz egy új táblát a varargs elemeivel
-- és előtte egy n mezővel , a tábla hossza így n+1
end
-- turns a frame object into a table
local segedtabl = {} -- ezek lesznek a frame.args elemei egész indexekkel
local indextabl = {} -- ezek lesznek az indexei
local selectedargs = {} -- ide gyűjtjük a frameargsból kiválasztandó argumentumokat:
--|Mondottam ember küzdj|és bízva bízzál|Az Úr hangja|eltolás = balra|szín=kék|125px}}
--1="Mondottam ember küzdj",2="és bízva bízzál",3="Az Úr hangja"
-- ,"kék","balra""szin","eltolás",4=125px
local n= 0
function Args(frame)
-- pl. frame.args:"Mondottam ember küzdj",2="és bízva bízzál"
--3="Oszt jónapot!",4="kék",5="balra" "szin","eltolás",3
local i=0
for k, v in pairs(frame.args) do
i=i+1
segedtabl[i] = v -- itt gyűlnek a frame.args elemei egész indexekkel
indextabl[i] = k -- itt gyűlnek a frame.args indexei
end --k, v in pairs(frame.args) do
n=i
return
end --Args(frame) vége
function unpackSelectedArgs (frame, ...)
local valasztottak = {}
valasztottak = p.tablepack(...)
local outtabl = {} -- ezt a táblát fogjuk unpackkal kiadni a végén
for i=1, valasztottak.n do -- ezek a kiválasztottak :"szín","eltolás",3
-- melyik i felel meg ezeknek az indextáblában? (4,5,3)
for j=1, n do
if valasztottak[i] == indextabl[j] then outtabl[i]=segedtabl[j] end
--1,2,3,"szin","eltolás"=="szín","eltolás",3
--print(i,j,selectedargs[i],indextabl[j])
end --j ciklus
--print(outtabl[i])
end -- i ciklus
--print (unpack(outtabl))
return unpack(outtabl)
end --unpackSelectedArgs vége
function p.foo (frame)
local out = unpackSelectedArgs (frame, 1,2,"szín", 3, "eltolás")
return out
end -- foo
return p