模块:沙盒

来自希灵百科
跳转至: 导航搜索

由于用户页无法建立Lua模块,因此为了不把维基百科希灵百科搞得乱七八糟,就把用户的测试模块组织到一起。




local sandbox = { }

local palette = {
	{ 0xe9, 0xe7, 0x81 },
	{ 0xe2, 0x1d, 0x3a },
	{ 0xbb, 0x44, 0xb8 },
	{ 0x76, 0xf3, 0xf0 }
}

local function make_rainbow(str)
	local n = mw.ustring.len(str)
	local m = #palette - 1
	local ret = ''
	local dbg = ''
	for i = 1,n do
		local p = i - 0.5
		local r = 1
		while p * m > n * r do
			r = r + 1
		end
		local l = r - 1
		local pl = n * l / m
		local pr = n * r / m
		local wl = (pr - p) / (pr - pl)
		local wr = (p - pl) / (pr - pl)
		local cr = math.floor(palette[l + 1][1] * wl + palette[r + 1][1] * wr + 0.5)
		local cg = math.floor(palette[l + 1][2] * wl + palette[r + 1][2] * wr + 0.5)
		local cb = math.floor(palette[l + 1][3] * wl + palette[r + 1][3] * wr + 0.5)
		local color = string.format('#%02x%02x%02x', cr, cg, cb)
		ret = ret .. "<span style='color:" .. color .. ";'>'''" .. mw.ustring.sub(str, i, i) .. "'''</span>"
	end
	return ret
end

sandbox['rainbow'] = function (frame)
	return make_rainbow(frame.args[1])
end

sandbox['debug'] = function(str)
	return make_rainbow(str)
end

return sandbox