Modul:Homokozó/Pepo41/FrameArgs3Modul
Homokozó/Pepo41/FrameArgs3Modul[mi ez?] • [dokumentáció: mutat, ] • [tesztek: létrehozás]
local p = {}
function val_to_str(v)
if type(v) == 'string' then
v = mw.ustring.gsub(v, '\n', '\\n')
if mw.ustring.match(mw.ustring.gsub(v, '[^\'"]', ''), '^"+$') then
return "'" .. v .. "'"
end
return '"' .. mw.ustring.gsub(v, '"', '\\"' ) .. '"'
else
return type(v) == 'table' and table_to_str(v) or tostring(v)
end
end
function table_key_to_str(k)
if type(k) == 'string' and mw.ustring.match(k, '^[_%a][_%a%d]*$') then
return k
else
return '[' .. val_to_str(k) .. ']'
end
end
function table_to_str(tbl)
local result, done = {}, {}
for k, v in ipairs(tbl) do
table.insert(result, val_to_str(v))
done[k] = true
end
for k, v in pairs(tbl) do
if not done[k] then
table.insert(result, table_key_to_str(k) .. '=' .. val_to_str(v))
end
end
return result
end
-- Concatenates keys and values, ideal for displaying a template argument table.
-- @param keySeparator glue between key and value (defaults to " = ")
-- @param separator glue between different key-value pairs (defaults to ", ")
-- @example concatWithKeys({a = 1, b = 2, c = 3}, ' => ', ', ') => "a => 1, b => 2, c => 3"
--
function p.concatWithKeys(table, keySeparator, separator)
keySeparator = keySeparator or ' = '
separator = separator or ', '
local concatted = ''
local i = 1
local first = true
local unnamedArguments = true
for k, v in pairs(table) do
if first then
first = false
else
concatted = concatted .. separator
end
if k == i and unnamedArguments then
i = i + 1
concatted = concatted .. tostring(v)
else
unnamedArguments = false
concatted = concatted .. tostring(k) .. keySeparator .. tostring(v)
end
end
return concatted
end
function p.adatlekerdezes(frame)
local pframe = frame:getParent()
local args = pframe.args -- the arguments passed TO the template, in the wikitext that instantiates the template
local configuratio = frame.args -- the arguments passed BY the template, in the wikitext of the template itself
return p.concatWithKeys(args, keySeparator, "**")
-- the arguments passed TO the template,
-- in the wikitext that instantiates the template:
-- ez a szerklap1**szerklap2**szerklap3 paramétereket adja vissza
-- a sablon hívása a szerklapomból {{Pepo41Kisérletei|szerklap1|szerklap2|szerklap3}}
--return p.concatWithKeys(configuratio, keySeparator, "**")
-- -- the arguments passed BY the template,
-- in the wikitext of the template itself
-- vagyis ez az #invoke: utasítás paramétereit adja vissza:
-- Mondottam ember**küzdj és bízva bízzál**
-- eltolás = balra**szín = kék**pagename = Pepo41
-- a Pepo41 szerzői lapomon a pagename
-- a {{Pepo41Kisérletei}}, tartalma:
-- <noinclude>Ideiglenes kísérleti sablon.</noinclude>
--<includeonly>{{#invoke:Homokozó/Pepo41/FrameArgs3Modul|adatlekerdezes|
--Mondottam ember|küzdj és bízva bízzál|eltolás=balra|szín=kék|
--pagename={{PAGENAME}}}}</includeonly><noinclude>{{documentation}}</noinclude>
end
return p
--local arguments = {}
--function arguments.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
--function arguments.adatlekerdezes(frame)
-- return "***" -- unpack(config)
-- end
--[[
end --]]
-- turns a frame object into a table
--[[
function arguments.unpackSelectedFrame(args,...) -- pl. frameargs, 1,3,4 azaz "Mondottam ember küzdj","és bízva bízzál", "kék
local selectarg = {} -- ide gyűjtjük a frameargsból kiválasztandó argumentumokat
selectarg=arguments.tablepack(...) -- első eleme az ilyen argumentumok száma
local segedtablnumbered = {} -- ezek lesznek a frameargs elemei egész indexekkel
local segedtablnamed = {} --ezek lesznek a pairs által visszaadott indexek, név, vagy szám
local i= 0
for name, v in pairs(args) do
i=i+1
segedtablnumbered[i] = v -- gyűlnek a frameargs elemei egész indexekkel
segedtablnamed[i] = name -- gyűlnek a frameargs elemei egész indexekkel
end
n=i
--for i=1,n do print (segedtablnumbered[i]); print (segedtablnamed[i]) end
local outtabl = {} -- ezt a táblát fogjuk unpackkal kiadni
for i=1, selectarg.n do
outtabl[i]= segedtablnumbered[selectarg[i]]
--[[ end -- kész a kimenő tábla
return unpack(outtabl),unpack(segedtablnamed)
end -- unpackSelectedFrame
test=arguments.unpackSelectedFrame(frame, ... )
arguments.run= test(frame,4,5,1)
return arguments
print(unpackSelectedFrame(frame,4,5,3,1,2 ))
local arguments = {} -- ide gyűjtjük a tetszőleges számú argumentumot
function arguments.unpackFrame(frame)
local i = 0
for k, v in pairs(frame.args) do
i = i + 1
arguments[i] = v
end
for i, v in pairs(frame.args) do
arguments[i] = v
end
return unpack(arguments) -- sorban az argumentumok
end
--]]
--return arguments