打开/关闭菜单
打开/关闭外观设置菜单
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。

Module:NavboxV2/NavboxContext:修订间差异

来自大天使虫洞百科
zh>Xiplus-abot
已更改“Module:NavboxV2/NavboxContext”的保护设置:​高風險模板:13349引用<!-- 機器人3 -->([编辑=仅允许模板编辑员](无限期)[移动=仅允许模板编辑员](无限期))
 
甲虫留言 | 贡献
导入1个版本
 
(没有差异)

2024年10月14日 (一) 07:18的最新版本

此模块的文档可以在Module:NavboxV2/NavboxContext/doc创建

-- 工具方法
function tableToString(_table)
    local outputs = {}
    if _table == nil then
        table.insert(outputs, '<nil>')
    elseif type(_table) == 'table' then
        for k, v in pairs(_table) do
            local output
            if type(v) == 'table' then
                output = tableToString(v)
            else
                output = tostring(v)
            end
            table.insert(outputs, tostring(k) .. "=" .. output)
        end
    end
    return '{' .. table.concat(outputs, ",") .. '}'
end

-- Context start
local _NavboxContext = {}
local NavboxContextNewObj = function(_prefix, _level, _type, _parent)
    return {
        ['prefix'] = _prefix,
        ['level'] = _level,
        ['type'] = _type,
        ['_Context'] = {}
    }
end

local NavboxContextMetaFunction = {
    __index = function(_obj, key)
        local _key = tostring(key)
        if _key == 'prefix' or _key == 'level' or _key == 'type' then
            return rawget(_obj, _key)
        else
            return rawget(_obj, '_Context')[_key]
        end
    end,
    __newindex = function(_obj, key, val)
        local _key = tostring(key)
        if _key == 'prefix' or _key == 'level' or _key == 'type' then
            rawset(_obj, _key, val)
        else
            rawget(_obj, '_Context')[_key] = val
        end
    end,
    __tostring = function(_obj)
        local output = {}
        table.insert(output, 'prefix=' .. _obj['prefix'])
        table.insert(output, 'level=' .. _obj['level'])
        table.insert(output, 'type=' .. _obj['type'])
        for k, v in pairs(_obj._Context) do
            local t_v = v
            if t_v == nil then
                t_v = ''
            elseif type(t_v) == 'table' then
                t_v = tableToString(t_v)
            end
            table.insert(output, k .. '=' .. t_v)
        end
        return 'context:{\n' .. table.concat(output, ",\n") .. '\n}'
    end
}

_NavboxContext.new = function(prefix, level, t_type)
    local _prefix = prefix or ""
    local _level = level or 1
    local _type = t_type or ''

    local newobj = NavboxContextNewObj(_prefix, _level, _type)
    setmetatable(newobj, NavboxContextMetaFunction)
    return newobj
end

return _NavboxContext
-- Context end