跳转到内容

模組:NavboxV2/EvenoddContext

被永久保护的模块
维基百科,自由的百科全书

这是本页的一个历史版本,由Cwek留言 | 贡献2024年8月15日 (四) 02:07 (test)编辑。这可能和当前版本存在着巨大的差异。

(差异) ←上一修订 | 最后版本 (差异) | 下一修订→ (差异)
-- evenodd swap Context start
local EvenoddContext = {
	['_type'] = "eosContext",
	['evenodd'] = "",
	['a'] = {},
	['b'] = {},
	["currentKey"] = "",
	["nextKey"] = ""
}
EvenoddContext.__index = EvenoddContext
function EvenoddContext:new(context,getArgFunc)
	local prefix = context.prefix
	local evenodd = getArgFunc(prefix,"evenodd",nil)
	local a,b = "odd", "even"
	
	if evenodd == "odd" or evenodd == "even" then -- 奇偶锁定
		a ,b = evenodd , evenodd
	elseif evenodd == "off" then -- off为odd
		a , b = "odd" , "odd" 
	elseif evenodd == "swap" then -- 对调
		a , b = b , a
	end
	local aArr ,bArr = 
		{a, 'navbox-' .. a, getArgFunc(prefix, a .. "style")},
		{b, 'navbox-' .. b, getArgFunc(prefix, b .. "style")}
	local newObj = {}
	setmetatable(t, EvenoddContext)
	newObj.evenodd = evenodd
	newObj.a = aArr
	newObj.b = bArr
	newObj.currentKey = "a"
	newObj.nextKey = "b"
	return newObj
end

function EvenoddContext:current(isNext)
	local returnArr = self[self.currentKey]
	if isNext == true then self.currentKey, self.nextKey = self.nextKey, self.currentKey end
	return unpack(returnArr)
end

function EvenoddContext:currentOddEven()
	return self:current()
end

function EvenoddContext:next()
	return self:current(true)
end

function EvenoddContext:evenoddArgValue()
	return self.evenodd
end

---------------------

return EvenoddContext