<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.you107657.duckdns.org/index.php?action=history&amp;feed=atom&amp;title=Module%3ASmithingBench</id>
	<title>Module:SmithingBench - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.you107657.duckdns.org/index.php?action=history&amp;feed=atom&amp;title=Module%3ASmithingBench"/>
	<link rel="alternate" type="text/html" href="https://wiki.you107657.duckdns.org/index.php?title=Module:SmithingBench&amp;action=history"/>
	<updated>2026-09-27T00:09:55Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://wiki.you107657.duckdns.org/index.php?title=Module:SmithingBench&amp;diff=13222&amp;oldid=prev</id>
		<title>imported&gt;Merge: merge.py</title>
		<link rel="alternate" type="text/html" href="https://wiki.you107657.duckdns.org/index.php?title=Module:SmithingBench&amp;diff=13222&amp;oldid=prev"/>
		<updated>2026-09-25T10:55:52Z</updated>

		<summary type="html">&lt;p&gt;merge.py&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 10:55, 25 September 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>imported&gt;Merge</name></author>
	</entry>
	<entry>
		<id>https://wiki.you107657.duckdns.org/index.php?title=Module:SmithingBench&amp;diff=5405&amp;oldid=prev</id>
		<title>imported&gt;Merge: merge.py</title>
		<link rel="alternate" type="text/html" href="https://wiki.you107657.duckdns.org/index.php?title=Module:SmithingBench&amp;diff=5405&amp;oldid=prev"/>
		<updated>2026-09-25T10:55:52Z</updated>

		<summary type="html">&lt;p&gt;merge.py&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
local i18n = {&lt;br /&gt;
    moduleArgs = [[Module:ProcessArgs]],&lt;br /&gt;
    moduleRecipe = [[Module:Recipe table]],&lt;br /&gt;
    moduleSlot = [[Module:Inventory slot]],&lt;br /&gt;
    moduleUi = [[Module:UI]],&lt;br /&gt;
    type = &amp;#039;Smithing Bench&amp;#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.i18n = i18n&lt;br /&gt;
&lt;br /&gt;
local slot = require(i18n.moduleSlot)&lt;br /&gt;
local recipeTable = require(i18n.moduleRecipe).table&lt;br /&gt;
local aliases = mw.loadData(i18n.moduleSlot .. &amp;#039;/Aliases&amp;#039;)&lt;br /&gt;
local cArgVals = { &amp;#039;Input1&amp;#039;, &amp;#039;Input2&amp;#039;, &amp;#039;Input3&amp;#039;, &amp;#039;Input4&amp;#039;, &amp;#039;Input5&amp;#039;, &amp;#039;Output&amp;#039; }&lt;br /&gt;
p.cArgVals = cArgVals&lt;br /&gt;
&lt;br /&gt;
function p.table(f)&lt;br /&gt;
    local args = f&lt;br /&gt;
    if f == mw.getCurrentFrame() then&lt;br /&gt;
        args = require(i18n.moduleArgs).merge(true)&lt;br /&gt;
    else&lt;br /&gt;
        f = mw.getCurrentFrame()&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Assign input and output slots&lt;br /&gt;
    for i = 1, 5 do&lt;br /&gt;
        args[&amp;#039;Input&amp;#039; .. i] = args[i] or nil&lt;br /&gt;
    end&lt;br /&gt;
    args.Output = args[6]&lt;br /&gt;
    for i = 1, 6 do&lt;br /&gt;
        args[i] = nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Create recipe table and list of ingredients&lt;br /&gt;
    local out, ingredientSets, outputSets = recipeTable(args, {&lt;br /&gt;
        uiFunc = &amp;#039;smithingBenchUI&amp;#039;,&lt;br /&gt;
        type = i18n.type,&lt;br /&gt;
        ingredientArgs = cArgVals,&lt;br /&gt;
        outputArgs = { &amp;#039;Output&amp;#039; },&lt;br /&gt;
    })&lt;br /&gt;
&lt;br /&gt;
    local title = mw.title.getCurrentTitle()&lt;br /&gt;
    if args.ignoreusage or args.nocat == &amp;#039;1&amp;#039; or title.namespace ~= 0 or title.isSubpage then&lt;br /&gt;
        return out&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- SMW Integration&lt;br /&gt;
    local smw_json = {&lt;br /&gt;
        [&amp;quot;type&amp;quot;] = args.type,&lt;br /&gt;
        [&amp;quot;description&amp;quot;] = mw.text.unstrip(args.description or &amp;#039;&amp;#039;), -- Remove ref tags&lt;br /&gt;
        [&amp;quot;name&amp;quot;] = args.name,&lt;br /&gt;
        [&amp;quot;ingredients&amp;quot;] = args.ingredients,&lt;br /&gt;
        [&amp;quot;Input1&amp;quot;] = args.Input1,&lt;br /&gt;
        [&amp;quot;Input2&amp;quot;] = args.Input2,&lt;br /&gt;
        [&amp;quot;Input3&amp;quot;] = args.Input3,&lt;br /&gt;
        [&amp;quot;Input4&amp;quot;] = args.Input4,&lt;br /&gt;
        [&amp;quot;Input5&amp;quot;] = args.Input5,&lt;br /&gt;
        [&amp;quot;Output&amp;quot;] = args.Output,&lt;br /&gt;
        [&amp;quot;group&amp;quot;] = args.group&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    -- Flatten item sets&lt;br /&gt;
    local function makeNameList(itemSets)&lt;br /&gt;
        local retTable = {}&lt;br /&gt;
        local usedNames = {}&lt;br /&gt;
        for _, itemSet in pairs(itemSets) do&lt;br /&gt;
            for _, item in pairs(itemSet) do&lt;br /&gt;
                if not usedNames[item.name] then&lt;br /&gt;
                    table.insert(retTable, item.name)&lt;br /&gt;
                    usedNames[item.name] = true&lt;br /&gt;
&lt;br /&gt;
                    if aliases[item.name] then&lt;br /&gt;
                        for _, aliasEntry in ipairs(aliases[item.name]) do&lt;br /&gt;
                            if not usedNames[aliasEntry] then&lt;br /&gt;
                                table.insert(retTable, (aliasEntry.name or aliasEntry))&lt;br /&gt;
                                usedNames[aliasEntry] = true&lt;br /&gt;
                            end&lt;br /&gt;
                        end&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        return retTable&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local output_names = makeNameList(outputSets)&lt;br /&gt;
    local ingredient_names = makeNameList(ingredientSets)&lt;br /&gt;
&lt;br /&gt;
    local json = mw.text.jsonEncode(smw_json)&lt;br /&gt;
    local subname = &amp;#039;SMITHING_BENCH_&amp;#039; .. table.concat(output_names, &amp;#039;_&amp;#039;) .. &amp;#039;_&amp;#039; .. mw.hash.hashValue(&amp;quot;md4&amp;quot;, json)&lt;br /&gt;
    local smw_sub = {&lt;br /&gt;
        [&amp;#039;Smithing ingredient&amp;#039;] = ingredient_names,&lt;br /&gt;
        [&amp;#039;Smithing output&amp;#039;] = output_names,&lt;br /&gt;
        [&amp;#039;Smithing JSON&amp;#039;] = json,&lt;br /&gt;
        [&amp;#039;Smithing type&amp;#039;] = args.type&lt;br /&gt;
    }&lt;br /&gt;
    mw.smw.subobject(smw_sub, subname)&lt;br /&gt;
&lt;br /&gt;
    return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;Merge</name></author>
	</entry>
</feed>