---@diagnostic disable: unused-local, unused-function
local M = {}

local replace_rules = require("Trans.conf.default").replace_rules
local conf          = require("Trans.conf.default").conf
local user_conf     = require("Trans").conf
local type_check    = require("Trans.util.debug").type_check
local is_loaded = false

local function need_extend(name)
    type_check {
        name = { name, 'string' }
    }
    for _, rule in ipairs(replace_rules) do
        if name:match(rule) then
            return false
        end
    end
    return true
end

-- 加载用户自定义的配置
---@param t1 table
---@param t2 table
local function extend(t1, t2)
    type_check {
        t1 = { t1, 'table' },
        t2 = { t2, 'table' },
    }
    for k, v in pairs(t2) do
        if type(v) == 'table' and need_extend(k) then
            extend(t1[k], v)
        else
            t1[k] = v
        end
    end
end

M.get_conf = function()
    if not is_loaded then
        M.load_conf()
    end
    return conf
end

M.load_conf = function()
    -- loaded_conf = default_conf:extend(user_conf)
    extend(conf, user_conf)
    is_loaded = true
end

return M