<?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%3AIngredient_link_list</id>
	<title>Module:Ingredient link list - 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%3AIngredient_link_list"/>
	<link rel="alternate" type="text/html" href="https://wiki.you107657.duckdns.org/index.php?title=Module:Ingredient_link_list&amp;action=history"/>
	<updated>2026-09-27T00:11:14Z</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:Ingredient_link_list&amp;diff=13162&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:Ingredient_link_list&amp;diff=13162&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;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&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;4&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;!-- diff cache key tensura:diff:1.41:old-5345:rev-13162 --&gt;
&lt;/table&gt;</summary>
		<author><name>imported&gt;Merge</name></author>
	</entry>
	<entry>
		<id>https://wiki.you107657.duckdns.org/index.php?title=Module:Ingredient_link_list&amp;diff=5345&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:Ingredient_link_list&amp;diff=5345&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;
local f = mw.getCurrentFrame()&lt;br /&gt;
&lt;br /&gt;
-- 1) Load the alias table&lt;br /&gt;
local aliases = require(&amp;quot;Module:Inventory slot/Aliases&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
-- Helper function to separate item name from quantity&lt;br /&gt;
local function separateItemCount(str)&lt;br /&gt;
    if not str or type(str) ~= &amp;quot;string&amp;quot; then&lt;br /&gt;
        return nil, nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local mainName, stack = str:match(&amp;#039;^(.-),(%d+)$&amp;#039;)&lt;br /&gt;
    if mainName and stack then&lt;br /&gt;
        return mw.text.trim(mainName), mw.text.trim(stack)&lt;br /&gt;
    end&lt;br /&gt;
    return mw.text.trim(str), nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.genlink(args)&lt;br /&gt;
    -- If first parameter is missing altogether, show an error&lt;br /&gt;
    if args[1] == nil then&lt;br /&gt;
        return { errno = 1 }&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local sep = args.sep or &amp;#039;;&amp;#039;&lt;br /&gt;
    local firstarg = tonumber(args.firstarg) or 1&lt;br /&gt;
    if firstarg &amp;gt;= 2 and (not args.maxargs or tonumber(args.maxargs) == nil) then&lt;br /&gt;
        return { errno = 2 }&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local maxargs = tonumber(args.maxargs) or (#args - 1)&lt;br /&gt;
    local output_array = {}&lt;br /&gt;
&lt;br /&gt;
    mw.logObject(args) -- Debug: Log all arguments passed&lt;br /&gt;
&lt;br /&gt;
    for i = firstarg, maxargs do&lt;br /&gt;
        local paramVal = args[i]&lt;br /&gt;
        mw.log(&amp;quot;Processing argument index: &amp;quot;, i, &amp;quot; Value: &amp;quot;, paramVal) -- Debug&lt;br /&gt;
        if paramVal and type(paramVal) == &amp;quot;string&amp;quot; and mw.text.trim(paramVal) ~= &amp;#039;&amp;#039; then&lt;br /&gt;
            local trimmedParam = mw.text.trim(paramVal)&lt;br /&gt;
            local name_pieces = {}&lt;br /&gt;
&lt;br /&gt;
            -- Split each parameter by sep (semicolon by default)&lt;br /&gt;
            for current_name in mw.text.gsplit(trimmedParam, sep) do&lt;br /&gt;
                local piece = mw.text.trim(current_name)&lt;br /&gt;
                if piece ~= &amp;#039;&amp;#039; then&lt;br /&gt;
                    name_pieces[piece] = true&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
&lt;br /&gt;
            local converted_names = {}&lt;br /&gt;
            for rawName, exist in pairs(name_pieces) do&lt;br /&gt;
                if exist then&lt;br /&gt;
                    local prefix = &amp;#039;&amp;#039;&lt;br /&gt;
                    if rawName:find(&amp;#039;^Matching &amp;#039;) then&lt;br /&gt;
                        prefix = &amp;#039;Matching &amp;#039;&lt;br /&gt;
                        rawName = rawName:gsub(&amp;#039;^Matching &amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
                    elseif rawName:find(&amp;#039;^Any &amp;#039;) then&lt;br /&gt;
                        prefix = &amp;#039;Any &amp;#039;&lt;br /&gt;
                        rawName = rawName:gsub(&amp;#039;^Any &amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
                    end&lt;br /&gt;
&lt;br /&gt;
                    local itemName, itemCount = separateItemCount(rawName)&lt;br /&gt;
                    local aliasEntry = aliases[itemName]&lt;br /&gt;
                    local resolvedLink, displayName&lt;br /&gt;
&lt;br /&gt;
                    if aliasEntry and type(aliasEntry) == &amp;#039;table&amp;#039; then&lt;br /&gt;
                        resolvedLink = aliasEntry.link or itemName&lt;br /&gt;
                        displayName = aliasEntry.name or itemName&lt;br /&gt;
                    else&lt;br /&gt;
                        resolvedLink = itemName&lt;br /&gt;
                        displayName = itemName&lt;br /&gt;
                    end&lt;br /&gt;
&lt;br /&gt;
                    local linkMarkup = prefix .. &amp;#039;[[&amp;#039; .. resolvedLink .. &amp;#039;|&amp;#039; .. displayName .. &amp;#039;]]&amp;#039;&lt;br /&gt;
                    if itemCount then&lt;br /&gt;
                        linkMarkup = linkMarkup .. &amp;#039; x&amp;#039; .. itemCount&lt;br /&gt;
                    end&lt;br /&gt;
&lt;br /&gt;
                    if linkMarkup and linkMarkup ~= &amp;#039;&amp;#039; then&lt;br /&gt;
                        table.insert(converted_names, f:preprocess(linkMarkup))&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
&lt;br /&gt;
            table.insert(output_array, table.concat(converted_names, &amp;#039; or&amp;lt;br&amp;gt;&amp;#039;))&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return table.concat(output_array, &amp;#039; +&amp;lt;br&amp;gt;&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main()&lt;br /&gt;
    local args = require(&amp;#039;Module:ProcessArgs&amp;#039;).merge(true)&lt;br /&gt;
    local result = p.genlink(args)&lt;br /&gt;
    if type(result) == &amp;#039;string&amp;#039; then&lt;br /&gt;
        return result&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local error_prompts = {&lt;br /&gt;
        &amp;#039;The first anonymous parameter could not be empty!&amp;#039;,&lt;br /&gt;
        &amp;#039;When the argument &amp;quot;firstarg&amp;quot; is equals to or greater than 2, the argument &amp;quot;maxargs&amp;quot; must be set!&amp;#039;&lt;br /&gt;
    }&lt;br /&gt;
    return f:expandTemplate{ title = &amp;#039;Error&amp;#039;, args = { error_prompts[result.errno] } }&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>