local aliases = {
width = {'width', 'lebar'},
title = {'title', 'tajuk'},
shaer = {'author', 'pengkarya'},
bahar = {'meter', 'matra'},
nass = {1,'text', 'teks'},
shaterbyshater = {'barisdemibaris'},
}
local string = mw.ustring
local function argument_wrapper(arg)
local nilargs = {}
return setmetatable({},
{
__index = function ( tbl, k )
local v = rawget(tbl,k)
if v then
return v
elseif nilargs[k] then
return nil
end
local list = aliases[k];
for _,arglist in ipairs(arg) do
if type( list ) == 'table' then
for _, alias_key in ipairs( list ) do
if arglist[alias_key] then
v = arglist[alias_key]
break;
end
end
elseif list ~= nil then
v = arglist[list]
end
if v then
break;
end
end
if v == nil then
nilargs[k] = true
else
rawset( tbl, k, v )
end
return v
end,
});
end
local function abyat(frame)
local A = argument_wrapper({frame:getParent().args, frame.args})
local mashtoor = false
local header = ''
local sdrdiv = '<div class="abyat-sdr">'
if not string.find(A.nass,"\\\\") then
mashtoor=true
sdrdiv = '<div>'
end
local ret = '<div class="abyat-wrapper' .. (mashtoor and ' mashtoor' or '') ..
(A.shaterbyshater and ' abyat-shaterbyshater' or '') ..
'" style="width:' .. (A.width or 'fit-content') .. ';">'
if A.title then
header = header .. "<center>'''" .. A.title .. "'''</center>"
end
if A.shaer then
header = header .. "<center>" .. A.shaer .. "</center>"
end
if A.bahar then
header = header .. "<center>''[" .. A.bahar .. "]''</center>"
end
A.nass = mw.text.trim(A.nass)
if string.sub(A.nass,1,2) == '\\\\' then
ret = ret .. '<div class="abyat-single_bayt">'
A.nass = string.sub(A.nass,3)
else
ret = ret .. sdrdiv
end
A.nass=string.gsub(A.nass,"\n\\\\",'</div><div class="abyat-single_bayt">')
A.nass=string.gsub(A.nass,"\n([^|])",'</div>' .. sdrdiv ..'%1')
A.nass=string.gsub(A.nass,"\\\\",'</div><div class="abyat-ajz">')
return header .. ret .. A.nass .. "</div></div>"
end
return {abyat=abyat}