Для документации этого модуля может быть создана страница Модуль:Main/doc
local p = {}
local getArgs = require('Dev:Arguments').getArgs
p.disamb = {
["Ворота"] = true,
["Твердотопливный двигатель"] = true,
["Электродвигатель"] = true,
["Аккумулятор"] = true,
["Бетон"] = true,
["Огнемёт"] = true,
["Силовая броня"] = true,
["Прибор ночного видения"] = true,
["Портативная солнечная панель"] = true,
["Портативный термоядерный реактор"] = true,
["Персональная лазерная защита"] = true,
["Электроразрядная защита"] = true,
["Модуль скорости"] = true,
["Модуль эффективности"] = true,
["Модуль продуктивности"] = true,
["Ракетная шахта"] = true,
["Персональная дронстанция"] = true,
["Персональная дронстанция MK2"] = true,
["Атомная бомба"] = true,
["Аккумуляторный модуль"] = true,
["Аккумуляторный модуль MK2"] = true,
["Оборудование для игнорирования конвейеров"] = true,
["Химический исследовательский пакет"] = true,
["Взрывчатка для скал"] = true,
["Электроразрядная защита"] = true,
["Портативный генератор энергетического щита"] = true,
["Быстрый манипулятор"] = true,
["Вагон-цистерна"] = true,
["Портативный термоядерный реактор"] = true,
["Тяжёлая броня"] = true,
["Отсыпка территории"] = true,
["Логистический исследовательский пакет"] = true,
["Конструкция малой плотности"] = true,
["Смазочная жидкость"] = true,
["Военный исследовательский пакет"] = true,
["Модульная броня"] = true,
["Прибор ночного видения"] = true,
["Персональная лазерная защита"] = true,
["Персональная дронстанция"] = true,
["Персональная дронстанция MK2"] = true,
["Силовая броня"] = true,
["Силовая броня МК2"] = true,
["Производственный исследовательский пакет"] = true,
["Модуль продуктивности"] = true,
["Радар"] = true,
["Блок управления ракеты"] = true,
["Ракетное топливо"] = true,
["Ракетная шахта"] = true,
["Портативная солнечная панель"] = true,
["Космический исследовательский пакет"] = true,
["Модуль скорости"] = true,
["Пакетный манипулятор"] = true,
["Стальной инструмент"] = true,
["Вспомогательный исследовательский пакет"] = true
}
function p.trim(s)
return (s:gsub("^%s*(.-)%s*$", "%1"))
end
function p.trimpar(s)
return (s:gsub("^(.-)%s%((.-)%)", "%1"))
end
function p.divide(s1, s2)
local r = {}
local i = 0
for x in string.gmatch(s1, "[^;]+") do
i=i+1
r[i]=p.trim(x)
if p.disamb[r[i]] then r[i]=r[i]..s2 end
end
return r
end
function p.techIB(frame)
local result = ""
local req = p.divide(frame.args[1], " (технология)")
for i,x in ipairs(req) do
result=result.."<span class=\"tech\" style=\"background-color:"..frame.args[2]..";\">[[Файл:"..x..".png|64px|link="..x.."]]"
y=string.match(x, "%s%d+")
if (y~=nil) then
result=result.."<div>\[\["..x.."|"..p.trim(y).."\]\]<\/div>"
end
result=result.."<\/span>"
end
return result
end
function p.techAL(frame)
local result = ""
local tl = p.divide(frame.args[1], " (предмет)")
for i,x in ipairs(tl) do
result=result..frame:expandTemplate({title = 'Template:Иконка предмета', args = {x}})
end
return result
end
function p.techEF(frame)
local result="\n"
local efs = p.divide(frame.args[1],"")
for i,x in ipairs(efs) do
result=result.."*"..x.."\n"
end
return result
end
function itIcon(par1, par2)
local result = ""
local x = par1
local i = par2
if p.disamb[x] then x=x.." (предмет)" end
result = result.."<span class=\"iticon\">[[Файл:"..x..".png|link="..x.."]]"
if i then result = result.."<div>[["..x.."|"..i.."]]</div>" end
result = result.."</span>"
return result
end
function p.techRES(frame)
local result=""
local sp = {[1]="Время", [2]="Исследовательский пакет 1", [3]="Исследовательский пакет 2", [4]="Исследовательский пакет 3", [5]="Инопланетный исследовательский пакет"}
local res=p.divide(frame.args[1],"")
for i in pairs(res) do
if res[i] and tonumber(res[i])~=0 then result=result..itIcon(sp[i], res[i])
end
end
return result
end
function p.techTable(frame)
local result = ""
local title = ""
local args = getArgs(frame)
for x in string.gmatch(args[1], "[^;]+") do
x=p.trim(x)
if p.disamb[x] then x=x.." (технология)" end
result=result.."<span class=\"tech gray\">\[\[Файл:"..x..".png|64px|link="..x.."\]\]"
y=string.match(x, "%s%d+")
if (y~=nil) then
result=result.."<div>\[\["..x.."|"..p.trim(y).."\]\]<\/div>"
end
result=result.."<\/span>"
end
return result
end
function p.itemRecipe(frame)
local item, quantity, result = "", "", ""
for x in string.gmatch(frame.args[1], "[^\+]+") do
y=x:find(",")
if y==nil then
quantity="1"
item=p.trim(x)
else quantity=x:sub(y+1)
item=x:sub(1, (y-1))
end
if p.disamb[item] then y=item.." (предмет)" else y=item end
result=result.."| style=\"line-height: 40px;\" |"..frame:expandTemplate({title = 'Template:Иконка предмета', args = {y, "2px 5px 2px 0"}}).."||"..quantity.." x "..item.."\n|-\n"
end
return result
end
function p.linkString(frame)
local result = ""
local br = frame.args[2]
for x in string.gmatch(frame.args[1], "[^\,]+") do
result = result.."[["..p.trim(x).."]], "
if br~=nil then
result = result.."<br/>"
end
end
if br~=nil then
result = result:sub(1,-5)
end
result = result:sub(1,-4)
return result
end
return p