Module:Infobox

From Official Factorio Wiki
Revision as of 17:13, 1 October 2024 by Bilka (talk | contribs) (Created item parsing method)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Lua methods used by Template:Infobox.

Functions

technology_parsing

Takes one argument in the form of a string and one named argument, "color". The string is expected to have the following format:

Military 4 + Advanced oil processing + Advanced electronics 2, 2

This string is split so that each entry between a + is forwarded to Template:Icon/special so that it displays the technology and has the level as the caption.

Before forwarding the arguments to the icon template, " (research)" is appended to the technology if a page with that name exists. Furthermore, the technology level is deduced from the technology name if it is not manually specified.

The color defaults to "999".

item_parsing

Takes one argument in the form of a string. The string is expected to have the following format:

Iron plate, 2 + Iron ore, 45 + Electronic circuit, 5

This string is split so that each entry between a + is forwarded to Template:Icon/special so that it displays the item and has the number as the caption.



local p = {}

function p.item_parsing(frame)
  local args = frame.args
  if args[1] == "?" then
    return args[1] -- same as old template, likely not needed
  end

  local ret = ""
  local items = p._split(args[1], "+")
  for _, item in ipairs(items) do
    local icon_args = p._split(item, ",")
    icon_args[2] = icon_args[2] or ""
    ret = ret .. frame:expandTemplate{title = 'icon/special', args = icon_args}
  end
  return ret
end

-- @param inputstr string A string to be split
-- @param separator string The separator
-- @return string[] @The separated strings, without the separator
function p._split(inputstr, separator)
  local result = {}

  for str in string.gmatch(inputstr, "([^"..separator.."]+)") do
    table.insert(result, mw.text.trim(str))
  end

  return result
end

return p