אונטערשייד צווישן ווערסיעס פון "יחידה:תבנית חוזרת"
קפיצה לניווט
קפיצה לחיפוש
ק (1 רעוויזיע אימפארטירט פון wikipedia:he:יחידה:תבנית_חוזרת: אימפארטירט פון די העברעאישע וויקיפעדיע. זע דארט ביישטייערער ליסטע) |
(תבנית>מוסטער) |
||
שורה 2: | שורה 2: | ||
function p.parse( frame ) | function p.parse( frame ) | ||
local template = frame.args[' | local template = frame.args['מוסטער'] | ||
local i = 0 | local i = 0 | ||
local req_params = {} | local req_params = {} | ||
שורה 48: | שורה 48: | ||
function p.invoker( frame ) | function p.invoker( frame ) | ||
local res = {} | local res = {} | ||
local template = frame.args[' | local template = frame.args['מוסטער'] | ||
local templateParams = {} | local templateParams = {} | ||
for k, v in pairs(frame.args) do | for k, v in pairs(frame.args) do | ||
if k~=' | if k~='מוסטער' then | ||
templateParams[k] = v | templateParams[k] = v | ||
end | end |
יעצטיגע רעוויזיע זינט 04:54, 16 אפריל 2023
מען קען שאפן דאקומענטאציע פאר דעם מאדול ביי יחידה:תבנית חוזרת/דאק
local p = {}
function p.parse( frame )
local template = frame.args['מוסטער']
local i = 0
local req_params = {}
-- extract parameters from templat
while i~=nil do
i = mw.ustring.find( template, '\{\{\{', i )
if i ~= nil then
start_ind = i+3
i = mw.ustring.find( template, '\}\}\}', i )
param_name = mw.ustring.sub( template, start_ind, i+2 )
req_params[param_name] = 1
end
end
-- expand argumetns using the template
i=1
local found = true
local segments = {}
local pFrame = frame:getParent()
while found do
local curr_template = template
found = true
for k,v in pairs(req_params) do
cur_k = mw.ustring.gsub( k, 'X}}}', tostring(i), 1 )
if pFrame.args[cur_k] then
local val = pFrame.args[cur_k]
local param_name = '\{\{\{'..k
local start_ind = mw.ustring.find( curr_template, param_name )
curr_template = mw.ustring.sub( curr_template, 0, start_ind-1) .. val .. mw.ustring.sub( curr_template, start_ind+mw.ustring.len( param_name ))
elseif k=='?X}}}' then
curr_template = mw.ustring.gsub( curr_template, '{{{%?X}}}', tostring(i) )
else
found = false
break
end
end
if found then
segments[i] = curr_template
end
i=i+1
end
return table.concat( segments, '\n' )
end
function p.invoker( frame )
local res = {}
local template = frame.args['מוסטער']
local templateParams = {}
for k, v in pairs(frame.args) do
if k~='מוסטער' then
templateParams[k] = v
end
end
local callerParams = frame:getParent().args
local i=0
local maxI = 10
while i<maxI do
mw.logObject('Extracting params ' .. i)
local currentArgs = {}
for k, v in pairs(templateParams) do
if i==0 then
if callerParams[v] then
currentArgs[k] = callerParams[v]
end
else
if callerParams[v..i] then
currentArgs[k] = callerParams[v..i]
end
end
end
mw.logObject('current args')
mw.logObject(currentArgs)
if #currentArgs == 0 and i>1 then
i = maxI
else
table.insert(res, frame:expandTemplate{ title = template, args = currentArgs })
if i==0 then
i=2
else
i=i+1
end
end
end
return table.concat(res, '\n')
end
p['חזרה'] = p.parse
p['קריאה'] = p.invoker
return p