模块:Tab:修订间差异

来自Limbo Wiki
无编辑摘要
(2.8压稿,请不要在2.8前使用,违者关我啥事,反正我说压稿就是压稿)
第1行: 第1行:
-- TBD
-- Sandbox --
local p = {};
local p = {};


function p.a(frame) -- name|text|name|text|...
function p.a(frame) -- name|text|name|text|...
if ((type(frame.args[0]) == "nil") or (type(frame.args[1]) == "nil")) then
if ((type(frame.args[1]) == "nil") or (type(frame.args[2]) == "nil")) then
mw.log(type(frame.args[0]))
mw.log(frame.args[1])
return '1';
return '1';
end
end
第21行: 第21行:
a = mw.html.create('div'):attr('class','tabs');
a = mw.html.create('div'):attr('class','tabs');
b = mw.html.create('div'):attr('class','texts');
b = mw.html.create('div'):attr('class','texts');
a:tag("span"):attr("class","lw-treebut"):attr("id","tab-0"):attr("role","button"):wikitext(frame.args[0]);
a:tag("span"):attr("class","lw-treebut"):attr("id","tab-1"):attr("role","button"):wikitext(frame.args[1]);
b:tag("div"):attr("class","lw-treediv tab-0"):wikitext(frame.args[1]);
b:tag("div"):attr("class","lw-treediv tab-0"):wikitext(frame.args[2]);
i = 1;
i = 2;
while not(type(frame.args[i*2]) == "nil" or type(frame.args[i*2+1]) == "nil") do
while not(type(frame.args[i*2-1]) == "nil" or type(frame.args[i*2]) == "nil") do
a:tag("span"):attr("class","lw-treebut"):attr("id","tab-" .. tostring(i)):attr("role","button"):wikitext(frame.args[i*2]);
a:tag("span"):attr("class","lw-treebut"):attr("id","tab-" .. tostring(i)):attr("role","button"):wikitext(frame.args[i*2-1]);
b:tag("div"):attr("class","lw-treediv tab-" .. tostring(i)):css("display","none"):wikitext(frame.args[2*i+1]);
b:tag("div"):attr("class","lw-treediv tab-" .. tostring(i)):css("display","none"):wikitext(frame.args[2*i]);
i = i+1;
end
end
t:wikitext(tostring(a),tostring(b));
t:wikitext(tostring(a),tostring(b));
t = tostring(t);
t = tostring(t);
mw.log(t)
return t;
return t;
end
end

2022年11月4日 (五) 14:45的版本

使用方法:{{#invoke:Tab|a|name1|text1|name2|text2|……}}

e.g.

{{#invoke:Tab|a
|标题|一段文字
|标题二|另一段文字
|标题三|第三段文字}}
标题标题二标题三
一段文字

-- Sandbox --
local p = {};

function p.a(frame) -- name|text|name|text|...
	
	if ((type(frame.args[1]) == "nil") or (type(frame.args[2]) == "nil")) then
		mw.log(frame.args[1])
		return '1';
	end
	
	-- Frame Start --
	t = "file";
	if not(type(frame.args["mode"]) == "nil") then
		t = frame.args["mode"];
	end
	t = mw.html.create('div')
		:attr('class','mw-parser-output tab')
		:attr('data-mode',t);
	-- Frame End --
	
	a = mw.html.create('div'):attr('class','tabs');
	b = mw.html.create('div'):attr('class','texts');
	a:tag("span"):attr("class","lw-treebut"):attr("id","tab-1"):attr("role","button"):wikitext(frame.args[1]);
	b:tag("div"):attr("class","lw-treediv tab-0"):wikitext(frame.args[2]);
	
	i = 2;
	while not(type(frame.args[i*2-1]) == "nil" or type(frame.args[i*2]) == "nil") do
		a:tag("span"):attr("class","lw-treebut"):attr("id","tab-" .. tostring(i)):attr("role","button"):wikitext(frame.args[i*2-1]);
		b:tag("div"):attr("class","lw-treediv tab-" .. tostring(i)):css("display","none"):wikitext(frame.args[2*i]);
		i = i+1;
	end
	
	t:wikitext(tostring(a),tostring(b));
	t = tostring(t);
	return t;
end

function p.test(frame)
	mw.log(p.a(frame));
end

return p;
-- =p.a{args={"a","b","c","d","e"}}