Modul:Homokozó/Pepo41/UnpackVálasztottArgumentumokat

Innen: Hungaropédia
A lap korábbi változatát látod, amilyen imported>Pepo41 2013. június 8., 00:08-kor történt szerkesztése után volt. (jav)
(eltér) ← Régebbi változat | Aktuális változat (eltér) | Újabb változat→ (eltér)
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