Модуль:RecipeData

Версия от 14:03, 11 декабря 2021; JustPlayer (обсуждение | вклад)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)

local p = {}

local lib = require('Module:Feature')

function p.get(frame) local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end

local data = require('Module:RecipeData/data')

   local recipe   = args['recipe'] or args[1]
   local datatype = args['datatype'] or args[2]
   local num      = tonumber(args['num']) or 1
   
   local result = data[recipe]
   
   for k, v in ipairs(result) do
   	if tonumber(num) == k then
   		if datatype == 'name' then
   			return v['name']
   		elseif datatype == 'image' then
   			return v['image']
   		elseif datatype == 'count' then
   			return v['count']
   		elseif datatype == 'chance' then
   			if v['chance'] == nil then
   				v['chance'] = "?"
   			end
   			if v['chance'] == 100 then
   				v['chance'] = ">99"
   			end
   			return v['chance']
   		elseif datatype == 'catalyst' then
   			if v['chance'] == nil then
   				return "?"
   			end

return math.floor((100 - v['chance']) / 2.5) elseif datatype == 'types' then local count = p.ingredients(v['ingredients']) if count == 1 or count == 2 then type = 1 elseif count == 3 or count == 4 then type = 2 else type = 3 end

return type

   		end
   	end
   end
   

end

function p.getRecipeItems(frame) local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end

local get = require ('Module:RecipeData/getter') local recipe = args['recipe'] or args[1] local items = "ingredients" local num = tonumber(args['num']) or 1 local str = ""

local result = get[items](recipe) for k, v in ipairs(result) do if tonumber(num) == k then for k2, v2 in ipairs(v['ingredients']) do if tonumber(args['index']) == k2 then str= mw.ustring.format('%s/%s', v2[1], v2[2]) end end end

   end
   
   return tostring(str)

end

function p.ingredients(items) local count for k, v in ipairs(items) do count = k end

return count end

return p