Модуль:Entity Lookup: различия между версиями

Нет описания правки
suffix
Строка 3: Строка 3:


local function safeLoad(page)
local function safeLoad(page)
    local moduleName = JsonPaths.get(page)
local moduleName = JsonPaths.get(page)
    local ok, data = pcall(mw.loadData, moduleName)
local ok, data = pcall(mw.loadData, moduleName)
    if not ok then
return ok and (data or {}) or {}
        return {}
    end
    return data or {}
end
end


p.entities = safeLoad("entity prototypes.json")
p.entities = safeLoad("entity prototypes.json")
p.name_overrides = safeLoad("entity name overrides.json")
p.name_overrides = safeLoad("entity name overrides.json")
local IgnoredSuffixTokens = {}
local function buildName(entity)
local name = entity.name or ""
local label = mw.text.trim(entity.label or "")
local suffix = ""
local rawSuffix = entity.suffix
if rawSuffix and mw.text.trim(rawSuffix) ~= "" then
local parts = {}
for part in tostring(rawSuffix):gmatch("[^,;]+") do
part = mw.text.trim(part)
if part ~= "" and not IgnoredSuffixTokens[part] then
parts[#parts + 1] = part
end
end
if #parts > 0 then
suffix = string.lower(table.concat(parts, ", "))
end
end
if label ~= "" and suffix ~= "" and label:lower() == suffix:lower() then
suffix = ""
end
if label == "" and suffix == "" then
return name
elseif label == "" then
return name .. " (" .. suffix .. ")"
elseif suffix == "" then
return name .. " (" .. label .. ")"
else
return name .. " (" .. label .. ") (" .. suffix .. ")"
end
end




Строка 21: Строка 54:


local override = p.name_overrides[id]
local override = p.name_overrides[id]
if override then
if override then return override end
return override
end


local entity = p.entities[id]
local entity = p.entities[id]
if entity then
return entity and buildName(entity) or "Не найдено"
local name = entity.name or ""
if entity.label and entity.label ~= "" then
name = name .. " (" .. entity.label .. ")"
end
return name
end
 
return "Не найдено"
end
end


Строка 50: Строка 73:


for id, entity in pairs(p.entities) do
for id, entity in pairs(p.entities) do
if entity.name == name then
if entity.name == name or buildName(entity) == name then
return id
return id
end
end
Строка 57: Строка 80:
return "Не найдено"
return "Не найдено"
end
end


-- p.getname{args={"FreedomImplant"}}
-- p.getname{args={"FreedomImplant"}}
function p.getdesc(frame, entid) -- {{#invoke:Entity Lookup|getdesc|ProtoID}}
function p.getdesc(frame, entid) -- {{#invoke:Entity Lookup|getdesc|ProtoID}}
    local out = ""
local out = ""
    local id = ""
local id = ""
    if frame.args[1] ~= nil then id = frame.args[1]  
if frame.args[1] ~= nil then id = frame.args[1]  
    else id = entid end
else id = entid end
    local entity = p.entities[id]
local entity = p.entities[id]
    if entity ~= nil then
if entity ~= nil then
        out = entity.desc
out = entity.desc
    else
else
        out = "Не найдено"
out = "Не найдено"
    end
end
return out
return out
end
end