<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://fire.station.wiki.shizainc.com/w/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3AMeals_Lookup</id>
	<title>Модуль:Meals Lookup - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://fire.station.wiki.shizainc.com/w/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3AMeals_Lookup"/>
	<link rel="alternate" type="text/html" href="https://fire.station.wiki.shizainc.com/w/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Meals_Lookup&amp;action=history"/>
	<updated>2026-05-07T22:32:48Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://fire.station.wiki.shizainc.com/w/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Meals_Lookup&amp;diff=3578&amp;oldid=prev</id>
		<title>Reach7: Новая страница: «local prototypes = mw.loadData(&quot;Module:Meals Lookup/data&quot;) local chem = mw.loadData(&quot;Module:Chemistry Lookup/data&quot;)  local p = {} p.meals = prototypes.meals p.chemicals = chem.react  --#region universal  function getrecipesfromtype(frame, type) -- should not be invoked     return p.meals[type] end  function getrecipe(frame, type, id) -- should not be invoked     return getrecipesfromtype(frame, type)[id:gsub(&#039; &#039;, &#039;&#039;)] end  function getrecipetypes(frame, id)...»</title>
		<link rel="alternate" type="text/html" href="https://fire.station.wiki.shizainc.com/w/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Meals_Lookup&amp;diff=3578&amp;oldid=prev"/>
		<updated>2024-03-11T14:46:29Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «local prototypes = mw.loadData(&amp;quot;Module:Meals Lookup/data&amp;quot;) local chem = mw.loadData(&amp;quot;Module:Chemistry Lookup/data&amp;quot;)  local p = {} p.meals = prototypes.meals p.chemicals = chem.react  --#region universal  function getrecipesfromtype(frame, type) -- should not be invoked     return p.meals[type] end  function getrecipe(frame, type, id) -- should not be invoked     return getrecipesfromtype(frame, type)[id:gsub(&amp;#039; &amp;#039;, &amp;#039;&amp;#039;)] end  function getrecipetypes(frame, id)...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local prototypes = mw.loadData(&amp;quot;Module:Meals Lookup/data&amp;quot;)&lt;br /&gt;
local chem = mw.loadData(&amp;quot;Module:Chemistry Lookup/data&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
p.meals = prototypes.meals&lt;br /&gt;
p.chemicals = chem.react&lt;br /&gt;
&lt;br /&gt;
--#region universal&lt;br /&gt;
&lt;br /&gt;
function getrecipesfromtype(frame, type) -- should not be invoked&lt;br /&gt;
    return p.meals[type]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function getrecipe(frame, type, id) -- should not be invoked&lt;br /&gt;
    return getrecipesfromtype(frame, type)[id:gsub(&amp;#039; &amp;#039;, &amp;#039;&amp;#039;)]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function getrecipetypes(frame, id) -- should not be invoked&lt;br /&gt;
    local out = {}&lt;br /&gt;
    for type, recipes in pairs(p.meals) do&lt;br /&gt;
        for recipeId, recipe in pairs(recipes) do&lt;br /&gt;
            if (recipeId:gsub(&amp;#039; &amp;#039;, &amp;#039;&amp;#039;) == id:gsub(&amp;#039; &amp;#039;, &amp;#039;&amp;#039;)) or (recipe[&amp;quot;id&amp;quot;]:gsub(&amp;#039; &amp;#039;, &amp;#039;&amp;#039;) == id:gsub(&amp;#039; &amp;#039;, &amp;#039;&amp;#039;)) then&lt;br /&gt;
                table.insert(out, type)&lt;br /&gt;
                break&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function getimage(frame, fileid) -- should not be invoked&lt;br /&gt;
    local out = &amp;quot;&amp;quot;&lt;br /&gt;
    --[[&lt;br /&gt;
        WARNING!! THE NEXT THING IS &amp;quot;EXPENSIVE&amp;quot; AND DOES NOT WORKS AFTER 30 OR SMTHNG RUNS&lt;br /&gt;
        read https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Expensive_properties for more info&lt;br /&gt;
        local gifFileTitle = mw.title.new(fileid .. &amp;quot;.gif&amp;quot;, &amp;quot;File&amp;quot;)&lt;br /&gt;
        local pngFileTitle = mw.title.new(fileid .. &amp;quot;.png&amp;quot;, &amp;quot;File&amp;quot;)&lt;br /&gt;
        if gifFileTitle.file.exists then&lt;br /&gt;
            out = &amp;quot;File:&amp;quot; .. fileid .. &amp;quot;.gif&amp;quot;&lt;br /&gt;
        elseif pngFileTitle.file.exists then&lt;br /&gt;
            out = &amp;quot;File:&amp;quot; .. fileid .. &amp;quot;.png&amp;quot;&lt;br /&gt;
        else&lt;br /&gt;
            out = &amp;quot;&amp;quot;&lt;br /&gt;
        end&lt;br /&gt;
    --]]&lt;br /&gt;
&lt;br /&gt;
    -- less expensive variant, but returns only png (AND BIG RED TEXT IF PNG DOES NOT EXISTS)&lt;br /&gt;
    out = &amp;quot;File:&amp;quot; .. fileid .. &amp;quot;.png&amp;quot;&lt;br /&gt;
    return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function buildsolids(frame, array) -- should not be invoked&lt;br /&gt;
    local out = &amp;quot;&amp;quot;&lt;br /&gt;
    for solid, amount in pairs(array) do&lt;br /&gt;
        out = out ..&lt;br /&gt;
            frame:preprocess(&amp;quot;{{Recipe Component|item={{#invoke:Entity Lookup|getname|&amp;quot; ..&lt;br /&gt;
                solid .. &amp;quot;}}|image=&amp;quot; .. getimage(frame, solid) .. &amp;quot;|amount=&amp;quot; .. amount .. &amp;quot;}}&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
    return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function buildreagents(frame, array) -- should not be invoked&lt;br /&gt;
    local out = &amp;quot;&amp;quot;&lt;br /&gt;
    for item, amount in pairs(array) do&lt;br /&gt;
        out = out .. frame:preprocess(&amp;quot;{{Chem Recipe Component|reagent=&amp;quot; .. item .. &amp;quot;|amount=&amp;quot; .. amount .. &amp;quot;}}&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
    return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.imageslist(frame)&lt;br /&gt;
    local out = &amp;quot;&amp;#039;&amp;#039;&amp;#039;REQUIRED IMAGES:&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&amp;quot;&lt;br /&gt;
    for cat, recipes in pairs(p.meals) do&lt;br /&gt;
        for id, recipe in pairs(recipes) do&lt;br /&gt;
            if cat == &amp;quot;microwaveRecipes&amp;quot; then&lt;br /&gt;
                do&lt;br /&gt;
                    out = out .. recipe[&amp;quot;result&amp;quot;] .. &amp;quot;: [[:File:&amp;quot; .. recipe[&amp;quot;result&amp;quot;] .. &amp;quot;.png]]&amp;lt;br&amp;gt;&amp;quot;&lt;br /&gt;
                    if #recipe[&amp;quot;solids&amp;quot;] &amp;gt; 0 then&lt;br /&gt;
                        do&lt;br /&gt;
                            for solid in pairs(getmicrowaverecipesolids(recipe)) do&lt;br /&gt;
                                out = out .. solid .. &amp;quot;: [[:File:&amp;quot; .. solid .. &amp;quot;.png]]&amp;lt;br&amp;gt;&amp;quot;&lt;br /&gt;
                            end&lt;br /&gt;
                        end&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
            if cat == &amp;quot;sliceableRecipes&amp;quot; or cat == &amp;quot;heatableRecipes&amp;quot; or cat == &amp;quot;toolmadeRecipes&amp;quot; then&lt;br /&gt;
                do&lt;br /&gt;
                    out = out .. recipe[&amp;quot;result&amp;quot;] .. &amp;quot;: [[:File:&amp;quot; .. recipe[&amp;quot;result&amp;quot;] .. &amp;quot;.png]]&amp;lt;br&amp;gt;&amp;quot;&lt;br /&gt;
                    out = out .. recipe[&amp;quot;input&amp;quot;] .. &amp;quot;: [[:File:&amp;quot; .. recipe[&amp;quot;input&amp;quot;] .. &amp;quot;.png]]&amp;lt;br&amp;gt;&amp;quot;&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
            if cat == &amp;quot;grindableRecipes&amp;quot; then&lt;br /&gt;
                do&lt;br /&gt;
                    out = out .. recipe[&amp;quot;input&amp;quot;] .. &amp;quot;: [[:File:&amp;quot; .. recipe[&amp;quot;input&amp;quot;] .. &amp;quot;.png]]&amp;lt;br&amp;gt;&amp;quot;&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    out = out .. &amp;quot;&amp;lt;br&amp;gt;&amp;lt;hr&amp;gt;&amp;quot;&lt;br /&gt;
    return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.buildeverything(frame)&lt;br /&gt;
    local out = &amp;quot;&amp;quot;&lt;br /&gt;
    out = out .. p.buildmicrowaverecipes(frame)&lt;br /&gt;
    out = out .. p.buildslicerecipes(frame)&lt;br /&gt;
    out = out .. p.buildgrindrecipes(frame)&lt;br /&gt;
    out = out .. p.buildheatrecipes(frame)&lt;br /&gt;
    out = out .. p.buildtoolmaderecipes(frame)&lt;br /&gt;
    out = out .. p.buildixablerecipes(frame)&lt;br /&gt;
    return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--#endregion&lt;br /&gt;
&lt;br /&gt;
--#region microwaveRecipes&lt;br /&gt;
&lt;br /&gt;
function getmicrowaverecipesolids(frame, recipe) -- should not be invoked&lt;br /&gt;
    local out = {}&lt;br /&gt;
    for ingredient, amount in pairs(recipe[&amp;quot;solids&amp;quot;]) do&lt;br /&gt;
        out[ingredient] = amount&lt;br /&gt;
    end&lt;br /&gt;
    return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function getmicrowaverecipereagents(frame, recipe) -- should not be invoked&lt;br /&gt;
    local out = {}&lt;br /&gt;
    for ingredient, amount in pairs(recipe[&amp;quot;reagents&amp;quot;]) do&lt;br /&gt;
        out[ingredient] = amount&lt;br /&gt;
    end&lt;br /&gt;
    return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.buildmicrowaverecipebox(frame) -- {{#invoke:Meals Lookup|buildmicrowaverecipebox|MicrowaveRecipeID}}&lt;br /&gt;
    local out = &amp;quot;&amp;quot;&lt;br /&gt;
    local id = frame.args[1]:gsub(&amp;#039; &amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
    local recipe = getrecipe(frame, &amp;quot;microwaveRecipes&amp;quot;, id)&lt;br /&gt;
    local solids = buildsolids(frame, getmicrowaverecipesolids(frame, recipe))&lt;br /&gt;
    local reagents = buildreagents(frame, getmicrowaverecipereagents(frame, recipe))&lt;br /&gt;
    out = frame:preprocess(&amp;quot;{{Recipe Box&amp;quot; ..&lt;br /&gt;
        &amp;quot;|name={{#invoke:Entity Lookup|getname|&amp;quot; .. recipe[&amp;quot;result&amp;quot;] .. &amp;quot;}}&amp;quot; ..&lt;br /&gt;
        &amp;quot;|component-1=&amp;quot; .. solids .. &amp;quot;\n&amp;quot; .. reagents ..&lt;br /&gt;
        &amp;quot;|transformer={{Recipe Transformers|microwaveRecipes|&amp;quot; .. recipe[&amp;quot;time&amp;quot;] .. &amp;quot;}}&amp;quot; ..&lt;br /&gt;
        &amp;quot;|result=&amp;quot; ..&lt;br /&gt;
        frame:preprocess(&amp;quot;{{Result Component|item={{#invoke:Entity Lookup|getname|&amp;quot; ..&lt;br /&gt;
            recipe[&amp;quot;result&amp;quot;] .. &amp;quot;}}|image=&amp;quot; .. getimage(frame, recipe[&amp;quot;result&amp;quot;]) .. &amp;quot;}}&amp;quot;) ..&lt;br /&gt;
        &amp;quot;}}&amp;quot;)&lt;br /&gt;
    return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.buildmicrowaverecipes(frame)&lt;br /&gt;
    local out = &amp;quot;&amp;quot;&lt;br /&gt;
    for id in pairs(getrecipesfromtype(frame, &amp;quot;microwaveRecipes&amp;quot;)) do&lt;br /&gt;
        out = out .. frame:preprocess(&amp;quot;{{#invoke:Meals Lookup|buildmicrowaverecipebox|&amp;quot; .. id .. &amp;quot;}}&amp;quot;) .. &amp;quot;\n&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--#endregion microwaveRecipes&lt;br /&gt;
&lt;br /&gt;
--#region sliceableRecipes&lt;br /&gt;
&lt;br /&gt;
function p.buildslicerecipebox(frame) -- {{#invoke:Meals Lookup|buildslicerecipebox|SliceableRecipeID}}&lt;br /&gt;
    local out = &amp;quot;&amp;quot;&lt;br /&gt;
    local id = frame.args[1]:gsub(&amp;#039; &amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
    local recipe = getrecipe(frame, &amp;quot;sliceableRecipes&amp;quot;, id)&lt;br /&gt;
    out = frame:preprocess(&amp;quot;{{Recipe Box&amp;quot; ..&lt;br /&gt;
        &amp;quot;|name={{#invoke:Entity Lookup|getname|&amp;quot; .. recipe[&amp;quot;result&amp;quot;] .. &amp;quot;}}&amp;quot; ..&lt;br /&gt;
        &amp;quot;|component-1=&amp;quot; ..&lt;br /&gt;
        frame:preprocess(&amp;quot;{{Recipe Component|item={{#invoke:Entity Lookup|getname|&amp;quot; ..&lt;br /&gt;
            recipe[&amp;quot;input&amp;quot;] .. &amp;quot;}}|image=&amp;quot; .. getimage(frame, recipe[&amp;quot;input&amp;quot;]) .. &amp;quot;}}&amp;quot;) ..&lt;br /&gt;
        &amp;quot;|transformer={{Recipe Transformers|sliceableRecipes}}&amp;quot; ..&lt;br /&gt;
        &amp;quot;|result=&amp;quot; ..&lt;br /&gt;
        frame:preprocess(&amp;quot;{{Result Component|item={{#invoke:Entity Lookup|getname|&amp;quot; ..&lt;br /&gt;
            recipe[&amp;quot;result&amp;quot;] .. &amp;quot;}}|image=&amp;quot; .. getimage(frame, recipe[&amp;quot;result&amp;quot;]) .. &amp;quot;|amount=&amp;quot; .. recipe[&amp;quot;count&amp;quot;] .. &amp;quot;}}&amp;quot;) ..&lt;br /&gt;
        &amp;quot;}}&amp;quot;)&lt;br /&gt;
    return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.buildslicerecipes(frame)&lt;br /&gt;
    local out = &amp;quot;&amp;quot;&lt;br /&gt;
    for id in pairs(getrecipesfromtype(frame, &amp;quot;sliceableRecipes&amp;quot;)) do&lt;br /&gt;
        out = out .. frame:preprocess(&amp;quot;{{#invoke:Meals Lookup|buildslicerecipebox|&amp;quot; .. id .. &amp;quot;}}&amp;quot;) .. &amp;quot;\n&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--#endregion sliceableRecipes&lt;br /&gt;
&lt;br /&gt;
--#region grindableRecipes&lt;br /&gt;
&lt;br /&gt;
function p.buildgrindrecipebox(frame) -- {{#invoke:Meals Lookup|buildgrindrecipebox|GrindableRecipeID}}&lt;br /&gt;
    local out = &amp;quot;&amp;quot;&lt;br /&gt;
    local id = frame.args[1]:gsub(&amp;#039; &amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
    local recipe = getrecipe(frame, &amp;quot;grindableRecipes&amp;quot;, id)&lt;br /&gt;
    local reagents = buildreagents(frame, recipe[&amp;quot;result&amp;quot;])&lt;br /&gt;
    out = frame:preprocess(&amp;quot;{{Recipe Box&amp;quot; ..&lt;br /&gt;
        &amp;quot;|name={{#invoke:Entity Lookup|getname|&amp;quot; .. recipe[&amp;quot;id&amp;quot;] .. &amp;quot;}}&amp;quot; ..&lt;br /&gt;
        &amp;quot;|component-1=&amp;quot; ..&lt;br /&gt;
        frame:preprocess(&amp;quot;{{Result Component|item={{#invoke:Entity Lookup|getname|&amp;quot; ..&lt;br /&gt;
            recipe[&amp;quot;input&amp;quot;] .. &amp;quot;}}|image=&amp;quot; .. getimage(frame, recipe[&amp;quot;input&amp;quot;]) .. &amp;quot;}}&amp;quot;) ..&lt;br /&gt;
        &amp;quot;|transformer={{Recipe Transformers|grindableRecipes}}&amp;quot; ..&lt;br /&gt;
        &amp;quot;|result=&amp;quot; .. reagents ..&lt;br /&gt;
        &amp;quot;}}&amp;quot;)&lt;br /&gt;
    return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.buildgrindrecipes(frame)&lt;br /&gt;
    local out = &amp;quot;&amp;quot;&lt;br /&gt;
    for id in pairs(getrecipesfromtype(frame, &amp;quot;grindableRecipes&amp;quot;)) do&lt;br /&gt;
        out = out .. frame:preprocess(&amp;quot;{{#invoke:Meals Lookup|buildgrindrecipebox|&amp;quot; .. id .. &amp;quot;}}&amp;quot;) .. &amp;quot;\n&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--#endregion grindableRecipes&lt;br /&gt;
&lt;br /&gt;
--#region heatableRecipes&lt;br /&gt;
&lt;br /&gt;
function p.buildheatrecipebox(frame) -- {{#invoke:Meals Lookup|buildheatrecipebox|HeatableRecipeID}}&lt;br /&gt;
    local out = &amp;quot;&amp;quot;&lt;br /&gt;
    local id = frame.args[1]:gsub(&amp;#039; &amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
    local recipe = getrecipe(frame, &amp;quot;heatableRecipes&amp;quot;, id)&lt;br /&gt;
    out = frame:preprocess(&amp;quot;{{Recipe Box&amp;quot; ..&lt;br /&gt;
        &amp;quot;|name={{#invoke:Entity Lookup|getname|&amp;quot; .. recipe[&amp;quot;result&amp;quot;] .. &amp;quot;}}&amp;quot; ..&lt;br /&gt;
        &amp;quot;|component-1=&amp;quot; ..&lt;br /&gt;
        frame:preprocess(&amp;quot;{{Recipe Component|item={{#invoke:Entity Lookup|getname|&amp;quot; ..&lt;br /&gt;
            recipe[&amp;quot;input&amp;quot;] .. &amp;quot;}}|image=&amp;quot; .. getimage(frame, recipe[&amp;quot;input&amp;quot;]) .. &amp;quot;}}&amp;quot;) ..&lt;br /&gt;
        &amp;quot;|transformer={{Recipe Transformers|heatableRecipes|&amp;quot; .. recipe[&amp;quot;minTemp&amp;quot;] .. &amp;quot;}}&amp;quot; ..&lt;br /&gt;
        &amp;quot;|result=&amp;quot; ..&lt;br /&gt;
        frame:preprocess(&amp;quot;{{Result Component|item={{#invoke:Entity Lookup|getname|&amp;quot; ..&lt;br /&gt;
            recipe[&amp;quot;result&amp;quot;] .. &amp;quot;}}|image=&amp;quot; .. getimage(frame, recipe[&amp;quot;result&amp;quot;]) .. &amp;quot;}}&amp;quot;) ..&lt;br /&gt;
        &amp;quot;}}&amp;quot;)&lt;br /&gt;
    return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.buildheatrecipes(frame)&lt;br /&gt;
    local out = &amp;quot;&amp;quot;&lt;br /&gt;
    for id in pairs(getrecipesfromtype(frame, &amp;quot;heatableRecipes&amp;quot;)) do&lt;br /&gt;
        out = out .. frame:preprocess(&amp;quot;{{#invoke:Meals Lookup|buildheatrecipebox|&amp;quot; .. id .. &amp;quot;}}&amp;quot;) .. &amp;quot;\n&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--#endregion heatableRecipes&lt;br /&gt;
&lt;br /&gt;
--#region toolmadeRecipes&lt;br /&gt;
&lt;br /&gt;
function p.buildtoolmaderecipebox(frame) -- {{#invoke:Meals Lookup|buildtoolmaderecipebox|ToolmadeRecipeID}}&lt;br /&gt;
    local out = &amp;quot;&amp;quot;&lt;br /&gt;
    local id = frame.args[1]:gsub(&amp;#039; &amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
    local recipe = getrecipe(frame, &amp;quot;toolmadeRecipes&amp;quot;, id)&lt;br /&gt;
    local transformer = &amp;quot;toolmadeRecipes&amp;quot; .. recipe[&amp;quot;tool&amp;quot;]&lt;br /&gt;
    out = frame:preprocess(&amp;quot;{{Recipe Box&amp;quot; ..&lt;br /&gt;
        &amp;quot;|name={{#invoke:Entity Lookup|getname|&amp;quot; .. recipe[&amp;quot;result&amp;quot;] .. &amp;quot;}}&amp;quot; ..&lt;br /&gt;
        &amp;quot;|component-1=&amp;quot; ..&lt;br /&gt;
        frame:preprocess(&amp;quot;{{Recipe Component|item={{#invoke:Entity Lookup|getname|&amp;quot; ..&lt;br /&gt;
            recipe[&amp;quot;input&amp;quot;] .. &amp;quot;}}|image=&amp;quot; .. getimage(frame, recipe[&amp;quot;input&amp;quot;]) .. &amp;quot;}}&amp;quot;) ..&lt;br /&gt;
        &amp;quot;|transformer={{Recipe Transformers|&amp;quot; .. transformer .. &amp;quot;}}&amp;quot; ..&lt;br /&gt;
        &amp;quot;|result=&amp;quot; ..&lt;br /&gt;
        frame:preprocess(&amp;quot;{{Result Component|item={{#invoke:Entity Lookup|getname|&amp;quot; ..&lt;br /&gt;
            recipe[&amp;quot;result&amp;quot;] .. &amp;quot;}}|image=&amp;quot; .. getimage(frame, recipe[&amp;quot;result&amp;quot;]) .. &amp;quot;}}&amp;quot;) ..&lt;br /&gt;
        &amp;quot;}}&amp;quot;)&lt;br /&gt;
    return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.buildtoolmaderecipes(frame)&lt;br /&gt;
    local out = &amp;quot;&amp;quot;&lt;br /&gt;
    for id in pairs(getrecipesfromtype(frame, &amp;quot;toolmadeRecipes&amp;quot;)) do&lt;br /&gt;
        out = out .. frame:preprocess(&amp;quot;{{#invoke:Meals Lookup|buildtoolmaderecipebox|&amp;quot; .. id .. &amp;quot;}}&amp;quot;) .. &amp;quot;\n&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--#endregion toolmadeRecipes&lt;br /&gt;
&lt;br /&gt;
--#region mixableRecipes&lt;br /&gt;
&lt;br /&gt;
function getchemicalreagents(recipe) -- should not be invoked&lt;br /&gt;
    local out = {}&lt;br /&gt;
    for ingredient, data in pairs(recipe[&amp;quot;reactants&amp;quot;]) do&lt;br /&gt;
        out[ingredient] = data[&amp;quot;amount&amp;quot;]&lt;br /&gt;
    end&lt;br /&gt;
    return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.buildmixablerecipebox(frame) -- {{#invoke:Meals Lookup|buildmixablerecipebox|MixableRecipeID}}&lt;br /&gt;
    local out = &amp;quot;&amp;quot;&lt;br /&gt;
    local id = frame.args[1]:gsub(&amp;#039; &amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
    local recipe = p.chemicals[id]&lt;br /&gt;
    local input = buildreagents(frame, getchemicalreagents(recipe))&lt;br /&gt;
    local output = recipe[&amp;quot;effects&amp;quot;][1][&amp;quot;Entity&amp;quot;]&lt;br /&gt;
    local outamount = recipe[&amp;quot;effects&amp;quot;][1][&amp;quot;Number&amp;quot;]&lt;br /&gt;
    out = frame:preprocess(&amp;quot;{{Recipe Box&amp;quot; ..&lt;br /&gt;
        &amp;quot;|name={{#invoke:Entity Lookup|getname|&amp;quot; .. recipe[&amp;quot;effects&amp;quot;][1][&amp;quot;Entity&amp;quot;] .. &amp;quot;}}&amp;quot; ..&lt;br /&gt;
        &amp;quot;|component-1=&amp;quot; .. input ..&lt;br /&gt;
        &amp;quot;|transformer={{Recipe Transformers|mixableRecipes}}&amp;quot; ..&lt;br /&gt;
        &amp;quot;|result={{Result Component|item={{#invoke:Entity Lookup|getname|&amp;quot; ..&lt;br /&gt;
        output .. &amp;quot;}}|image=&amp;quot; .. getimage(frame, output) .. &amp;quot;|amount=&amp;quot; .. outamount .. &amp;quot;}}&amp;quot; ..&lt;br /&gt;
        &amp;quot;}}&amp;quot;)&lt;br /&gt;
    return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.buildixablerecipes(frame)&lt;br /&gt;
    local out = &amp;quot;&amp;quot;&lt;br /&gt;
    for id in pairs(getrecipesfromtype(frame, &amp;quot;mixableRecipes&amp;quot;)) do&lt;br /&gt;
        out = out .. frame:preprocess(&amp;quot;{{#invoke:Meals Lookup|buildmixablerecipebox|&amp;quot; .. id .. &amp;quot;}}&amp;quot;) .. &amp;quot;\n&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--#endregion mixableRecipes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- tests.&lt;br /&gt;
function p.tests(frame)&lt;br /&gt;
    local out = &amp;quot;&amp;quot;&lt;br /&gt;
    return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Reach7</name></author>
	</entry>
</feed>