Модуль:Песочница/Pok: различия между версиями

Нет описания правки
Нет описания правки
Строка 1: Строка 1:
local p = {}
local p = {}


local DEFAULT_BASE_USER = "IanComradeBot/"
local p = {}
 
local BASE_USER = "IanComradeBot/"
local function trim(s)
local CURRENT_PROJECT
    if not s then return s end
    return (s:gsub("^%s*(.-)%s*$", "%1"))
end
 
local function resolve_base(frame)
    local args = frame and frame.args or {}
    local cand = args.path or args.base or args.base_user or args[1]
    if cand and tostring(cand) ~= "" then
        return trim(tostring(cand))
    end


local function find_ancestor_arg(name)
     local f = mw.getCurrentFrame()
     local f = mw.getCurrentFrame()
     if f then
     while f do
         local ok, res = pcall(function() return f:callParserFunction('#var', 'GetFieldPath') end)
         local v = f:getArgument(name)
         if ok and res and tostring(res) ~= "" then
         if v and v ~= "" then return v end
            return trim(tostring(res))
        f = f:getParent()
        end
     end
     end
     return nil
     return nil
end
end


local function ensure_trailing_slash(s)
local function resolve_project(pagePath)
     if not s then return s end
     if pagePath and pagePath ~= "" then return pagePath end
     if s:sub(-1) ~= "/" then return s .. "/" end
     if CURRENT_PROJECT and CURRENT_PROJECT ~= "" then return CURRENT_PROJECT end
     return s
    local candidate = find_ancestor_arg("Название") or find_ancestor_arg("project") or find_ancestor_arg("path")
    if candidate and candidate ~= "" then
        CURRENT_PROJECT = candidate
        return candidate
    end
     return nil
end
end


local function get_module_name(pagePath)
local function get_module_name(pagePath)
     local frame = mw.getCurrentFrame()
     local project = resolve_project(pagePath) or "default"
    local base = resolve_base(frame) or DEFAULT_BASE_USER
     return "Module:" .. BASE_USER .. project .. "/data"
    base = ensure_trailing_slash(base)
     return "Module:" .. base .. pagePath .. "/data"
end
end


p.get_module_name = get_module_name
p.get_module_name = get_module_name
p._debug_get_cached = function() return CURRENT_PROJECT end


local function load_cached_data(moduleName)
local function load_cached_data(moduleName)