跳转到内容

模組:NumBlk2

本页使用了标题或全文手工转换
维基百科,自由的百科全书

local p = {}

function mkItem(name, val, nameCl)
	return "<span class=\"" .. nameCl .. "\">"
		.. name ..
	"</span><span class=\"s\">=</span><span class=\"v\">"
		.. "<nowiki>".. mw.text.encode(val) .. "</nowiki>" ..
	"</span><span class=\"e\">;</span>"
end

function dbgWrap(tag, fmt, id, lbl, ust, sub, exp, frame)
	return "<div class=\"numblk2-dbg\">"
		.. frame:preprocess(
			mkItem("FMT", fmt, "i") .. "<br>"
			.. mkItem("ID", id, "i") .. "<br>"
			.. mkItem("LBL", lbl, "i") .. "<br>"
			.. mkItem("UST", ust, "n") .. "<br>"
			.. mkItem("SUB", sub, "n") .. "<br>"
			.. mkItem("EXP", exp, "n")
		) .. "<div class=\"tag\">" .. tag .. "</div>" ..
	"</div>"
end

function p.fmtN(frame)
	local frame2 = frame:getParent()
	local code = frame.args[1]
	local code2 = mw.text.unstripNoWiki(code)
	local code3 = mw.ustring.gsub(
		code2, "%%(.)", function (ch)
			if (ch == "i") or (ch == "l") then
				return frame.args[ch]
			elseif ch == "L" then
				return "<";
			elseif ch == "G" then
				return ">";
			end
			return ch
		end
	)
	local rsl = frame2:preprocess(code3)
	if (frame.args.dbg or ""):find("%S") then
		return dbgWrap(frame.args.dbg, code, frame.args.i, frame.args.l, code2, code3, rsl, frame2)
	end
	return rsl
end

return p