Modulo:Versi
Modulo Lua che implementa le funzionalità del template:Versi.
local p = {}
local function escape(pattern)
return pattern:gsub('([%(%)%.%%%+%-%*%?%[%^%$%]])', '%%%1')
end
local function insertTag(str, i, tag)
return str:sub(0, i) .. tag .. str:sub(i + 1, #str)
end
local function italicize(text)
local t = { '[...]', '[…]' } -- eccezioni
local bad_offsets = {}
for _, pattern in ipairs(t) do
pattern = '%s*' .. escape(pattern) .. '%s*'
local i, j = nil, 0
while true do
i, j = text:find(pattern, i == j and j + 1 or j)
if not i then break end
for n = i, j do
bad_offsets[n] = true
end
end
end
for i = #text, 1, -1 do
if not bad_offsets[i] then
if bad_offsets[i + 1] or i == #text then
text = insertTag(text, i, '</i>')
end
if bad_offsets[i - 1] or i == 1 then
text = insertTag(text, i - 1, '<i>')
end
end
end
return text
end
function p.main(frame)
local ret = ''
local args = {}
for k, v in pairs(frame:getParent().args) do
if type(k) == 'number' then
v = mw.text.trim(v)
if v ~= '' then
args[k] = v
end
end
end
for i, v in pairs(args) do
v = italicize(v)
if args[i - 1] then
v = ' | ' .. v
elseif i ~= 1 then
v = ' || ' .. v
end
ret = ret .. v
end
return ret
end
return p