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

Нет описания правки
Нет описания правки
Строка 214: Строка 214:
end
end


local function getRepeatSpriteLink(entry, baseUrl)
local function getFirstSpriteAndState(entry)
local spritePath = getSpritePath(entry)
local states = getSpriteStates(entry)
local states = getSpriteStates(entry)
if not states or #states == 0 then
 
local spritePath = getSpritePath(entry)
if not spritePath then
if spritePath then
return nil, nil
return "[" .. baseUrl .. spritePath .. " " .. spritePath .. "]"
end
end
 
if states and #states > 0 and states[1].state then
return spritePath, states[1].state
end
 
if entry and entry.state then
return spritePath, tostring(entry.state)
end
 
return spritePath, nil
end
 
local function buildLinkedSpriteValue(entry, baseUrl)
local spritePath, stateName = getFirstSpriteAndState(entry)
 
if not spritePath then
return nil
return nil
end
end


local links = {}
local pathLink = "[" .. baseUrl .. spritePath .. " " .. spritePath .. "]"
for _, item in ipairs(states) do
 
if item.sprite and item.state then
if stateName and stateName ~= "" then
local url = baseUrl .. item.sprite .. "/" .. item.state .. ".png"
local stateLink = "[" .. baseUrl .. spritePath .. "/" .. stateName .. ".png " .. stateName .. "]"
table.insert(links, "[" .. url .. " " .. item.state .. "]")
return pathLink .. " (" .. stateLink .. ")"
end
end
end


return table.concat(links, ", ")
return pathLink
end
end


Строка 253: Строка 268:
for _, obj in ipairs(group) do
for _, obj in ipairs(group) do
local id = obj.id
local id = obj.id
local entry = obj.entry
local prefix = getPrefix(id, project)
local prefix = getPrefix(id, project)
local spriteLinks = getRepeatSpriteLink(entry, baseUrl)


if spriteLinks then
table.insert(idLinks, "[[:Файл:" .. prefix .. id .. ".png]]")
table.insert(idLinks, spriteLinks)
else
table.insert(idLinks, "[[:Файл:" .. prefix .. id .. ".png]]")
end
end
end


Строка 267: Строка 276:
local firstEntry = group[1].entry
local firstEntry = group[1].entry
local prefix = getPrefix(firstId, project)
local prefix = getPrefix(firstId, project)
local spriteValue = buildSpriteValue(firstEntry) or ""
local spriteValue = buildLinkedSpriteValue(firstEntry, baseUrl) or ""


table.insert(result, mw.getCurrentFrame():preprocess(
table.insert(result, mw.getCurrentFrame():preprocess(
"{{Entity Sprite/Repeat|спрайты=" .. table.concat(idLinks, " ") ..
"{{Entity Sprite/Repeat|спрайты=" .. table.concat(idLinks, " ") ..
"|спрайт=" .. spriteValue ..
"|перенаправление=" .. prefix .. firstId ..
"|перенаправление=" .. prefix .. firstId ..
"|id=" .. firstId ..
"|id=" .. firstId ..
"|спрайт=" .. spriteValue ..
"}}"
"}}"
))
))