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

Материал из Space Stories Wiki
Нет описания правки
Нет описания правки
Строка 18: Строка 18:
end
end
      
      
      
     local function convertJobSyntax(job)
        return mw.ustring.gsub(job, "%[%[([^|]+)|([^]]+)%]%]", "[[$1|$2]]")
    end   
 
     local function compareByCost(a, b)
     local function compareByCost(a, b)
         return tonumber(p.store[a].cost) < tonumber(p.store[b].cost)
         return tonumber(p.store[a].cost) < tonumber(p.store[b].cost)
Строка 26: Строка 29:
      
      
     for _, k in ipairs(keys) do
     for _, k in ipairs(keys) do
        local convertedJob = convertJobSyntax(p.store[k].job)
         out = out .. frame:expandTemplate{ title = "Uplink", args = { prototype = k }}
         out = out .. frame:expandTemplate{ title = "Uplink", args = { prototype = k }}
     end
     end

Версия от 10:43, 20 января 2024

Для документации этого модуля может быть создана страница Модуль:Uplink Lookup/doc

local prototypes = mw.loadData("Module:Uplink Lookup/data")

local p = {}
p.store = prototypes.store

function p.readscalar(frame)
	return mw.text.nowiki(p.store[frame.args[1]][frame.args[2]])
end

function p.buildlists(frame)
	local out = ""
	local group = frame.args[1]
    local keys = {}
	for k in pairs(p.store) do
		if p.store[k].group == group or group == nil then
			table.insert(keys, k)
		end
	end
    
    local function convertJobSyntax(job)
        return mw.ustring.gsub(job, "%[%[([^|]+)|([^]]+)%]%]", "[[$1|$2]]")
    end    

    local function compareByCost(a, b)
        return tonumber(p.store[a].cost) < tonumber(p.store[b].cost)
    end

    table.sort(keys, compareByCost)
    
    for _, k in ipairs(keys) do
        local convertedJob = convertJobSyntax(p.store[k].job)
        out = out .. frame:expandTemplate{ title = "Uplink", args = { prototype = k }}
    end
    
	return out
end

return p