Module:Logoform: Difference between revisions
From Neodyland Wiki
More actions
m Sarang moved page Module:Pargalpar to Module:SandboxP without leaving a redirect |
m Test |
||
| Line 1: | Line 1: | ||
local p = {} | |||
-- | -- | ||
function p.converse (frame) | |||
local arg = frame.args | |||
local par = '' | |||
if arg ~= nil then | |||
par = arg [1] -- global | |||
else -- local: | |||
par = frame or '' | |||
end | |||
if par == '' then | |||
return '' | |||
else | |||
if mw.ustring.sub(par, -2) == 'px' then | |||
par = mw.ustring.sub(par, 1, mw.ustring.len(par) -2) | |||
end | |||
local pos = mw.ustring.find(par, 'x'); | |||
if arg [2] == 'p' then | |||
return par; | |||
elseif arg [2] == 'w' then | |||
if pos == nil then | |||
return par; | |||
elseif pos > 1 then | |||
return mw.ustring.sub(par, 1, pos -1); | |||
else | |||
return '' | |||
end | |||
else | |||
if pos == nil then | |||
return ''; | |||
else | |||
return mw.ustring.sub(par, pos +1) | |||
end | |||
end | |||
end | |||
end | |||
-- | |||
function p.gallery ( frame ) | |||
local args = mw.getCurrentFrame():getParent().args; | |||
local tagtab = {}; | |||
local instab = {}; | |||
local fmat = args.f or args.format or ""; | |||
local mode = args.m or args.mode or ""; | |||
local insv = ""; | |||
local strg = ""; | |||
tagtab [1] = "\n"; | |||
for _, v in ipairs(args) do | |||
strg = strg .. "\006" .. v -- replace pipe by ACK | |||
end | |||
strg = mw.ustring.gsub( strg, "[\n]" , "\006" ); -- replace CRLF by ACK | |||
local arg2 = args[2] or ".svg" | |||
if fmat == "" then -- when format NOT specified | |||
if args[2] ~= "" then | |||
if mw.ustring.sub (args[1], 1, 1 ) == "\n" then | |||
local inx = mw.ustring.find( arg2 .. "\n", "\n" ); | |||
arg2 = mw.ustring.sub ( arg2, 1, inx - 1 ); | |||
inx = string.lower(string.gsub(arg2,"^.*%.([^%.]*)$","%1")); | |||
local map = {svg=1, png=1, jpg=1, jpeg=1, gif=1, tif=1, tiff=1, xcf=1, pdf=1 } | |||
if not map[inx] then | |||
fmat = "2" -- default format="2" | |||
end | |||
end | |||
end | |||
end | |||
for _, v in ipairs(mw.text.split(strg , "\006") ) do | |||
if fmat == "2" then | |||
if insv == "" then | |||
insv = v; | |||
else | |||
if v == "" then | |||
v = "{{F|{{PAGENAME:" .. insv .. "}}}}"; | |||
end | |||
table.insert(instab, insv .. "|<center>" .. v .. "</center>" ); | |||
insv = "" | |||
end | |||
else | |||
table.insert(instab, v ) | |||
end | |||
end | |||
for i, v in ipairs( instab ) do | |||
if v == "" then | |||
tagtab [1] = tagtab [1] .. "\n" | |||
else | |||
tagtab [1] = tagtab [1] .. "\n" .. v | |||
end end | |||
-- | |||
if mode == 'n' then mode = 'nolines' | |||
elseif mode == 'p' then mode = 'packed' | |||
elseif mode == 'o' then mode = 'packed-overlay' | |||
elseif mode == 'h' then mode = 'packed-hover' | |||
elseif mode == 's' then mode = 'slideshow' | |||
elseif mode == 't' then mode = 'traditional' | |||
end | |||
local wid = args.w or args.widths or ''; | |||
local hih = args.h or args.heights or ''; | |||
local dis = args.d or args.dis or args.dislay or ''; | |||
if wid .. hih == '' and dis ~= '' then | |||
wid = converse (dis, 'w') | |||
hih = converse (dis, 'h') | |||
end | |||
tagtab [2] = mode; | |||
tagtab [3] = args.c or args.caption or ''; | |||
tagtab [4] = args.p or args.perrow or ''; | |||
tagtab [5] = wid; | |||
tagtab [6] = hih; | |||
tagtab [7] = args.s or args.style or ''; | |||
tagtab [8] = args.a or args.attr or args.class or ''; | |||
tagtab [9] = args.t or args.text or ''; | |||
tagtab [10] = fmat; | |||
if fmat == '' then | |||
tagtab [10] = '1'; | |||
if mode == '' then | |||
tagtab [2] = 'nolines'; | |||
end | |||
end | |||
return mw.getCurrentFrame():expandTemplate{ title = "G/layout", args = tagtab }; | |||
end | |||
return p; | return p; | ||
Revision as of 14:49, 7 February 2020
This documentation is transcluded from Module:Logoform/doc.
local p = {}
--
function p.converse (frame)
local arg = frame.args
local par = ''
if arg ~= nil then
par = arg [1] -- global
else -- local:
par = frame or ''
end
if par == '' then
return ''
else
if mw.ustring.sub(par, -2) == 'px' then
par = mw.ustring.sub(par, 1, mw.ustring.len(par) -2)
end
local pos = mw.ustring.find(par, 'x');
if arg [2] == 'p' then
return par;
elseif arg [2] == 'w' then
if pos == nil then
return par;
elseif pos > 1 then
return mw.ustring.sub(par, 1, pos -1);
else
return ''
end
else
if pos == nil then
return '';
else
return mw.ustring.sub(par, pos +1)
end
end
end
end
--
function p.gallery ( frame )
local args = mw.getCurrentFrame():getParent().args;
local tagtab = {};
local instab = {};
local fmat = args.f or args.format or "";
local mode = args.m or args.mode or "";
local insv = "";
local strg = "";
tagtab [1] = "\n";
for _, v in ipairs(args) do
strg = strg .. "\006" .. v -- replace pipe by ACK
end
strg = mw.ustring.gsub( strg, "[\n]" , "\006" ); -- replace CRLF by ACK
local arg2 = args[2] or ".svg"
if fmat == "" then -- when format NOT specified
if args[2] ~= "" then
if mw.ustring.sub (args[1], 1, 1 ) == "\n" then
local inx = mw.ustring.find( arg2 .. "\n", "\n" );
arg2 = mw.ustring.sub ( arg2, 1, inx - 1 );
inx = string.lower(string.gsub(arg2,"^.*%.([^%.]*)$","%1"));
local map = {svg=1, png=1, jpg=1, jpeg=1, gif=1, tif=1, tiff=1, xcf=1, pdf=1 }
if not map[inx] then
fmat = "2" -- default format="2"
end
end
end
end
for _, v in ipairs(mw.text.split(strg , "\006") ) do
if fmat == "2" then
if insv == "" then
insv = v;
else
if v == "" then
v = "{{F|{{PAGENAME:" .. insv .. "}}}}";
end
table.insert(instab, insv .. "|<center>" .. v .. "</center>" );
insv = ""
end
else
table.insert(instab, v )
end
end
for i, v in ipairs( instab ) do
if v == "" then
tagtab [1] = tagtab [1] .. "\n"
else
tagtab [1] = tagtab [1] .. "\n" .. v
end end
--
if mode == 'n' then mode = 'nolines'
elseif mode == 'p' then mode = 'packed'
elseif mode == 'o' then mode = 'packed-overlay'
elseif mode == 'h' then mode = 'packed-hover'
elseif mode == 's' then mode = 'slideshow'
elseif mode == 't' then mode = 'traditional'
end
local wid = args.w or args.widths or '';
local hih = args.h or args.heights or '';
local dis = args.d or args.dis or args.dislay or '';
if wid .. hih == '' and dis ~= '' then
wid = converse (dis, 'w')
hih = converse (dis, 'h')
end
tagtab [2] = mode;
tagtab [3] = args.c or args.caption or '';
tagtab [4] = args.p or args.perrow or '';
tagtab [5] = wid;
tagtab [6] = hih;
tagtab [7] = args.s or args.style or '';
tagtab [8] = args.a or args.attr or args.class or '';
tagtab [9] = args.t or args.text or '';
tagtab [10] = fmat;
if fmat == '' then
tagtab [10] = '1';
if mode == '' then
tagtab [2] = 'nolines';
end
end
return mw.getCurrentFrame():expandTemplate{ title = "G/layout", args = tagtab };
end
return p;