Module:Infobox: Difference between revisions
Jump to navigation
Jump to search
(Optimized string concatenation) |
(Added resource-drain, science-pack-drain and base-productivity. not marked as space age because only space age entities will have them anyway) |
||
(9 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
local util = require("Module:Util") | |||
local parsing = require("Module:Infobox/parsing") | |||
local p = {} | local p = {} | ||
function p. | function p.base_tab(frame) -- no prefix for args. Used for vanilla tab or if no tabs | ||
local args = frame.args | local args = frame:getParent().args | ||
if args[1] = | local ret = {} | ||
local sa = frame:expandTemplate{title = "Space age"} .. " " | |||
if not util._empty_arg(args["recipe"]) then | |||
ret[#ret+1] = p._vrow(frame, {"Recipe", args["recipe"], parsing._crafting(frame, args["recipe"])}) | |||
ret[#ret+1] = p._vrow(frame, {"Total raw", args["recipe"], parsing._crafting_raw(frame, util._arg_or(args["total-raw"], args["recipe"]))}) | |||
end | end | ||
if not util._empty_arg(args["cost"]) then | |||
local cost = parsing._item(frame, args["cost"]) .. ((not util._empty_arg(args["cost-multiplier"])) and "✖ <big>" .. args["cost-multiplier"] .. "</big>" or "") | |||
ret[#ret+1] = p._vrow(frame, {"Cost", args["cost"], cost}) | |||
end | |||
if not util._empty_arg(args["technology-trigger"]) then | |||
ret[#ret+1] = p._vrow(frame, {"Researched by", args["technology-trigger"], parsing._technology_trigger(frame, args["technology-trigger"])}) | |||
end | |||
ret[#ret+1] = p._extra (frame, args["extra1"]) | |||
if not util._empty_arg(args["map-color"]) then | |||
local color = frame:expandTemplate{title = 'Color', args = {args["map-color"]}} | |||
ret[#ret+1] = p._row(frame, {"Map color", args["map-color"], color}) | |||
end | |||
ret[#ret+1] = p._row_simple(frame, "Map icon", args["map-icon"]) | |||
ret[#ret+1] = p._row_simple(frame, "Added in", args["added-in"]) | |||
ret[#ret+1] = p._row_simple(frame, "Walking speed", args["walking-speed"]) | |||
ret[#ret+1] = p._row_simple(frame, "Storage size", args["storage-size"]) | |||
ret[#ret+1] = p._row_simple(frame, "Fluid storage volume", args["fluid-storage-volume"]) | |||
if not util._empty_arg(args["expected-resources"]) then | |||
local label = p._translate(frame, "Expected resources") | |||
ret[#ret+1] = string.format( | |||
[[<tr class="border-top"> | |||
<td> | |||
%s | |||
</td> | |||
<td style="width: 70%%;"> | |||
%s | |||
</td> | |||
</tr>]], label, args["expected-resources"]) | |||
end | |||
ret[#ret+1] = p._row_simple(frame, "Health", args["health"]) | |||
ret[#ret+1] = p._row_unit (frame, "Restores", args["restores"], "health") | |||
ret[#ret+1] = p._row_simple(frame, "Resistances", args["resistance"]) | |||
ret[#ret+1] = p._row_unit (frame, "Lifespan", args["lifespan"], "seconds") | |||
ret[#ret+1] = p._row_simple(frame, "Inventory size bonus", args["inventory-size-bonus"]) | |||
ret[#ret+1] = p._row_simple(frame, "Equipment grid size", args["grid-size"]) | |||
ret[#ret+1] = p._row_simple(frame, "Stack size", args["stack-size"]) | |||
ret[#ret+1] = p._row_simple(frame, "Rocket capacity", args["rocket-capacity"], sa) | |||
ret[#ret+1] = p._row_simple(frame, "Range", args["range"]) | |||
ret[#ret+1] = p._row_simple(frame, "Shooting speed", args["shooting-speed"]) | |||
ret[#ret+1] = p._row_simple(frame, "Damage", args["damage"]) | |||
ret[#ret+1] = p._row_simple(frame, "Damage bonus", args["damage-bonus"]) | |||
ret[#ret+1] = p._row_simple(frame, "Cluster size", args["cluster-size"]) | |||
ret[#ret+1] = p._row_simple(frame, "Area of effect size", args["area-of-effect-size"]) | |||
ret[#ret+1] = p._row_simple(frame, "Durability", args["durability"]) | |||
ret[#ret+1] = p._row_simple(frame, "Magazine size", args["magazine-size"]) | |||
ret[#ret+1] = p._row_item (frame, "Ammunition", args["ammunition"]) | |||
ret[#ret+1] = p._vrow_item (frame, "Used as ammunition by", args["used-as-ammo-by"]) | |||
ret[#ret+1] = p._row_simple(frame, "Efficiency", args["efficiency"]) | |||
ret[#ret+1] = p._row_simple(frame, "Dimensions", args["dimensions"]) | |||
ret[#ret+1] = p._row_type (frame, "Energy consumption", args["energy"]) | |||
ret[#ret+1] = p._row_type (frame, "Drain", args["drain"]) | |||
ret[#ret+1] = p._row_type (frame, "Robot recharge rate", args["robot-recharge-rate"]) | |||
ret[#ret+1] = p._row_type (frame, "Internal buffer recharge rate", args["internal-buffer-recharge-rate"]) | |||
ret[#ret+1] = p._vrow_item (frame, "Placed in", args["equipped-in"]) | |||
ret[#ret+1] = p._row_simple(frame, "Robot limit", args["robot-limit"]) | |||
ret[#ret+1] = p._row_simple(frame, "Repair speed", args["repair-speed"]) | |||
ret[#ret+1] = p._row_simple(frame, "Charging stations", args["charging-stations"]) | |||
ret[#ret+1] = p._row_simple(frame, "Rotation speed", args["rotation-speed"]) | |||
ret[#ret+1] = p._row_simple(frame, "Belt speed", args["belt-speed"]) | |||
ret[#ret+1] = p._row_simple(frame, "Collection area", args["asteroid-collection-area"]) | |||
ret[#ret+1] = p._row_simple(frame, "Collection arm speed", args["asteroid-collection-arm-speed"]) | |||
ret[#ret+1] = p._row_simple(frame, "Collection arm count", args["asteroid-collection-arm-count"]) | |||
ret[#ret+1] = p._row_simple(frame, "Movement bonus", args["movement-bonus"]) | |||
ret[#ret+1] = p._row_type (frame, "Energy capacity", args["energy-capacity"]) | |||
ret[#ret+1] = p._row_simple(frame, "Power input", args["power-input"]) | |||
ret[#ret+1] = p._row_simple(frame, "Power output", args["power-output"]) | |||
ret[#ret+1] = p._row_simple(frame, "Heat output", args["heat-output"]) | |||
ret[#ret+1] = p._row_simple(frame, "Maximum temperature", args["maximum-temperature"]) | |||
ret[#ret+1] = p._row_simple(frame, "Fluid consumption", args["fluid-consumption"]) | |||
ret[#ret+1] = p._row_simple(frame, "Shield hitpoints", args["shield"]) | |||
ret[#ret+1] = p._row_type (frame, "Energy per hitpoint", args["energy-per-hitpoint"]) | |||
ret[#ret+1] = p._row_simple(frame, "Maximum recharge speed",args["maximum-recharge-speed"]) | |||
ret[#ret+1] = p._row_simple(frame, "Crafting speed", args["crafting-speed"]) | |||
ret[#ret+1] = p._row_simple(frame, "Pumping speed", args["pumping-speed"]) | |||
ret[#ret+1] = p._row_simple(frame, "Mining time", args["mining-time"]) | |||
ret[#ret+1] = p._row_simple(frame, "Speed", args["speed"]) | |||
ret[#ret+1] = p._row_simple(frame, "Productivity", args["productivity"]) | |||
ret[#ret+1] = p._row_simple(frame, "Quality", args["quality"], sa) | |||
ret[#ret+1] = p._row_simple(frame, "Mining speed", args["mining-speed"]) | |||
ret[#ret+1] = p._row_unit (frame, "Mining area", args["mining-area"], "tiles") | |||
ret[#ret+1] = p._row_simple(frame, "Resource drain", args["resource-drain"]) | |||
ret[#ret+1] = p._row_simple(frame, "Science pack drain", args["science-pack-drain"]) | |||
ret[#ret+1] = p._row_simple(frame, "Base productivity", args["base-productivity"]) | |||
ret[#ret+1] = p._row_type (frame, "Fuel value", args["fuel-value"]) | |||
ret[#ret+1] = p._row_simple(frame, "Vehicle acceleration", args["vehicle-acceleration"]) | |||
ret[#ret+1] = p._row_simple(frame, "Vehicle top speed", args["vehicle-top-speed"]) | |||
ret[#ret+1] = p._row_unit (frame, "Supply area", args["supply-area"], "tiles") | |||
ret[#ret+1] = p._row_unit (frame, "Wire reach", args["wire-reach"], "tiles") | |||
ret[#ret+1] = p._row_unit (frame, "Construction area", args["construction-area"], "tiles") | |||
ret[#ret+1] = p._row_simple(frame, "Pollution", args["pollution"]) | |||
ret[#ret+1] = p._row_item (frame, "Buildable only on", args["buildable-on"], sa) | |||
ret[#ret+1] = p._row_item (frame, "Crafted only on", args["crafted-on"], sa) | |||
ret[#ret+1] = p._row_unit (frame, "Spoil time", args["spoil-time"], "minutes", sa) | |||
ret[#ret+1] = p._row_item (frame, "Spoil result", args["spoil-result"], sa) | |||
ret[#ret+1] = p._row_simple(frame, "Weight", args["vehicle-weight"]) | |||
ret[#ret+1] = p._row_unit (frame, "Module slots", args["modules"], "slots") | |||
if not util._empty_arg(args["prototype-type"]) then | |||
local prototype_type = frame:expandTemplate{title = 'Prototype page', args = {args["prototype-type"]}} | |||
ret[#ret+1] = p._row(frame, {"Prototype type", args["prototype-type"], prototype_type}) | |||
end | |||
ret[#ret+1] = p._row_simple(frame, "Internal name", args["internal-name"]) | |||
ret[#ret+1] = p._vrow_item (frame, "Accepted equipment", args["equipment"]) | |||
ret[#ret+1] = p._vrow_tech (frame, "Required technologies", args["required-technologies"]) | |||
ret[#ret+1] = p._vrow_tech (frame, "Allows", args["allows"]) | |||
ret[#ret+1] = p._vrow_item (frame, "Effects", args["effects"]) | |||
ret[#ret+1] = p._vrow_tech (frame, "Boosting technologies", args["boosting-technologies"]) | |||
ret[#ret+1] = p._vrow_item (frame, "Produced by", args["producers"]) | |||
ret[#ret+1] = p._vrow_item (frame, "Consumed by", args["consumers"]) | |||
ret[#ret+1] = p._vrow_item (frame, "Valid fuel", args["valid-fuel"]) | |||
ret[#ret+1] = p._vrow_item (frame, "Used as fuel by", args["used-as-fuel-by"]) | |||
ret[#ret+1] = p._vrow_item (frame, "Recyling results", args["recycling-results"], sa) | |||
ret[#ret+1] = p._extra (frame, args["extra2"]) | |||
return table.concat(ret) | |||
end | |||
function p.space_age_tab(frame) -- space-age prefix for some args. Used for space age mod tab | |||
local args = frame:getParent().args | |||
local ret = {} | local ret = {} | ||
local | local sa = frame:expandTemplate{title = "Space age"} .. " " | ||
local | local recipe = util._arg_or(args["space-age-recipe"], args["recipe"]) | ||
local | if not util._empty_arg(recipe) then | ||
ret[#ret+1] = p._vrow(frame, {"Recipe", recipe, parsing._crafting(frame, recipe)}) | |||
local vanilla_total_raw = util._arg_or(args["total-raw"], args["recipe"]) | |||
ret[#ret+1] = p._vrow(frame, {"Total raw", recipe, parsing._crafting_raw(frame, util._arg_or(args["space-age-total-raw"], util._arg_or(args["space-age-recipe"], vanilla_total_raw)))}) | |||
end | |||
local cost_arg = util._arg_or(args["space-age-cost"], args["cost"]) | |||
local tech_trigger_arg = util._arg_or(args["space-age-technology-trigger"], args["technology-trigger"]) | |||
if not util._empty_arg(cost_arg) and cost_arg ~= "none" then | |||
local cost_multiplier_arg = util._arg_or(args["space-age-cost-multiplier"], args["cost-multiplier"]) | |||
local cost = parsing._item(frame, cost_arg) .. ((not util._empty_arg(cost_multiplier_arg)) and "✖ <big>" .. cost_multiplier_arg .. "</big>" or "") | |||
ret[#ret+1] = p._vrow(frame, {"Cost", cost_arg, cost}) | |||
end | |||
if not util._empty_arg(tech_trigger_arg) and tech_trigger_arg ~= "none" then | |||
ret[#ret+1] = p._vrow(frame, {"Researched by", tech_trigger_arg, parsing._technology_trigger(frame, tech_trigger_arg)}) | |||
end | |||
ret[#ret+1] = p._extra (frame, args["extra1"]) | |||
if not util._empty_arg(args["map-color"]) then | |||
local color = frame:expandTemplate{title = 'Color', args = {args["map-color"]}} | |||
ret[#ret+1] = p._row(frame, {"Map color", args["map-color"], color}) | |||
end | |||
ret[#ret+1] = p._row_simple(frame, "Map icon", args["map-icon"]) | |||
ret[#ret+1] = p._row_simple(frame, "Added in", args["added-in"]) | |||
ret[#ret+1] = p._row_simple(frame, "Walking speed", args["walking-speed"]) | |||
ret[#ret+1] = p._row_simple(frame, "Storage size", util._arg_or(args["space-age-storage-size"], args["storage-size"])) | |||
ret[#ret+1] = p._row_simple(frame, "Fluid storage volume", args["fluid-storage-volume"]) | |||
if not util._empty_arg(args["expected-resources"]) then | |||
local label = p._translate(frame, "Expected resources") | |||
ret[#ret+1] = string.format( | |||
[[<tr class="border-top"> | |||
<td> | |||
%s | |||
</td> | |||
<td style="width: 70%%;"> | |||
%s | |||
</td> | |||
</tr>]], label, args["expected-resources"]) | |||
end | |||
ret[#ret+1] = p._row_simple(frame, "Health", args["health"]) | |||
ret[#ret+1] = p._row_unit (frame, "Restores", args["restores"], "health") | |||
ret[#ret+1] = p._row_simple(frame, "Resistances", args["resistance"]) | |||
ret[#ret+1] = p._row_unit (frame, "Lifespan", args["lifespan"], "seconds") | |||
ret[#ret+1] = p._row_simple(frame, "Inventory size bonus", args["inventory-size-bonus"]) | |||
ret[#ret+1] = p._row_simple(frame, "Equipment grid size", args["grid-size"]) | |||
ret[#ret+1] = p._row_simple(frame, "Stack size", util._arg_or(args["space-age-stack-size"], args["stack-size"])) | |||
ret[#ret+1] = p._row_simple(frame, "Rocket capacity", args["rocket-capacity"], sa) | |||
ret[#ret+1] = p._row_simple(frame, "Range", args["range"]) | |||
ret[#ret+1] = p._row_simple(frame, "Shooting speed", args["shooting-speed"]) | |||
ret[#ret+1] = p._row_simple(frame, "Damage", args["damage"]) | |||
ret[#ret+1] = p._row_simple(frame, "Damage bonus", args["damage-bonus"]) | |||
ret[#ret+1] = p._row_simple(frame, "Cluster size", args["cluster-size"]) | |||
ret[#ret+1] = p._row_simple(frame, "Area of effect size", args["area-of-effect-size"]) | |||
ret[#ret+1] = p._row_simple(frame, "Durability", args["durability"]) | |||
ret[#ret+1] = p._row_simple(frame, "Magazine size", args["magazine-size"]) | |||
ret[#ret+1] = p._row_item (frame, "Ammunition", args["ammunition"]) | |||
ret[#ret+1] = p._vrow_item (frame, "Used as ammunition by", args["used-as-ammo-by"]) | |||
ret[#ret+1] = p._row_simple(frame, "Efficiency", args["efficiency"]) | |||
ret[#ret+1] = p._row_simple(frame, "Dimensions", args["dimensions"]) | |||
ret[#ret+1] = p._row_type (frame, "Energy consumption", args["energy"]) | |||
ret[#ret+1] = p._row_type (frame, "Drain", args["drain"]) | |||
ret[#ret+1] = p._row_type (frame, "Robot recharge rate", args["robot-recharge-rate"]) | |||
ret[#ret+1] = p._row_type (frame, "Internal buffer recharge rate", args["internal-buffer-recharge-rate"]) | |||
ret[#ret+1] = p._vrow_item (frame, "Placed in", args["equipped-in"]) | |||
ret[#ret+1] = p._row_simple(frame, "Robot limit", args["robot-limit"]) | |||
ret[#ret+1] = p._row_simple(frame, "Repair speed", args["repair-speed"]) | |||
ret[#ret+1] = p._row_simple(frame, "Charging stations", args["charging-stations"]) | |||
ret[#ret+1] = p._row_simple(frame, "Rotation speed", args["rotation-speed"]) | |||
ret[#ret+1] = p._row_simple(frame, "Belt speed", args["belt-speed"]) | |||
ret[#ret+1] = p._row_simple(frame, "Collection area", args["asteroid-collection-area"]) | |||
ret[#ret+1] = p._row_simple(frame, "Collection arm speed", args["asteroid-collection-arm-speed"]) | |||
ret[#ret+1] = p._row_simple(frame, "Collection arm count", args["asteroid-collection-arm-count"]) | |||
ret[#ret+1] = p._row_simple(frame, "Movement bonus", args["movement-bonus"]) | |||
ret[#ret+1] = p._row_type (frame, "Energy capacity", args["energy-capacity"]) | |||
ret[#ret+1] = p._row_simple(frame, "Power input", args["power-input"]) | |||
ret[#ret+1] = p._row_simple(frame, "Power output", args["power-output"]) | |||
ret[#ret+1] = p._row_simple(frame, "Heat output", args["heat-output"]) | |||
ret[#ret+1] = p._row_simple(frame, "Maximum temperature", args["maximum-temperature"]) | |||
ret[#ret+1] = p._row_simple(frame, "Fluid consumption", args["fluid-consumption"]) | |||
ret[#ret+1] = p._row_simple(frame, "Shield hitpoints", args["shield"]) | |||
ret[#ret+1] = p._row_type (frame, "Energy per hitpoint", args["energy-per-hitpoint"]) | |||
ret[#ret+1] = p._row_simple(frame, "Maximum recharge speed",args["maximum-recharge-speed"]) | |||
ret[#ret+1] = p._row_simple(frame, "Crafting speed", args["crafting-speed"]) | |||
ret[#ret+1] = p._row_simple(frame, "Pumping speed", args["pumping-speed"]) | |||
ret[#ret+1] = p._row_simple(frame, "Mining time", args["mining-time"]) | |||
ret[#ret+1] = p._row_simple(frame, "Speed", args["speed"]) | |||
ret[#ret+1] = p._row_simple(frame, "Productivity", args["productivity"]) | |||
ret[#ret+1] = p._row_simple(frame, "Quality", args["quality"]) | |||
ret[#ret+1] = p._row_simple(frame, "Mining speed", args["mining-speed"]) | |||
ret[#ret+1] = p._row_unit (frame, "Mining area", args["mining-area"], "tiles") | |||
ret[#ret+1] = p._row_simple(frame, "Resource drain", args["resource-drain"]) | |||
ret[#ret+1] = p._row_simple(frame, "Science pack drain", args["science-pack-drain"]) | |||
ret[#ret+1] = p._row_simple(frame, "Base productivity", args["base-productivity"]) | |||
ret[#ret+1] = p._row_type (frame, "Fuel value", args["fuel-value"]) | |||
ret[#ret+1] = p._row_simple(frame, "Vehicle acceleration", args["vehicle-acceleration"]) | |||
ret[#ret+1] = p._row_simple(frame, "Vehicle top speed", args["vehicle-top-speed"]) | |||
ret[#ret+1] = p._row_unit (frame, "Supply area", args["supply-area"], "tiles") | |||
ret[#ret+1] = p._row_unit (frame, "Wire reach", args["wire-reach"], "tiles") | |||
ret[#ret+1] = p._row_unit (frame, "Construction area", args["construction-area"], "tiles") | |||
ret[#ret+1] = p._row_simple(frame, "Pollution", args["pollution"]) | |||
ret[#ret+1] = p._row_item (frame, "Buildable only on", args["buildable-on"], sa) | |||
ret[#ret+1] = p._row_item (frame, "Crafted only on", args["crafted-on"], sa) | |||
ret[#ret+1] = p._row_unit (frame, "Spoil time", args["spoil-time"], "minutes", sa) | |||
ret[#ret+1] = p._row_item (frame, "Spoil result", args["spoil-result"], sa) | |||
ret[#ret+1] = p._row_simple(frame, "Weight", args["vehicle-weight"]) | |||
ret[#ret+1] = p._row_unit (frame, "Module slots", args["modules"], "slots") | |||
if not util._empty_arg(args["prototype-type"]) then | |||
local prototype_type = frame:expandTemplate{title = 'Prototype page', args = {args["prototype-type"]}} | |||
ret[#ret+1] = p._row(frame, {"Prototype type", args["prototype-type"], prototype_type}) | |||
ret[#ret+1] = frame | |||
end | end | ||
ret[#ret+1] = p._row_simple(frame, "Internal name", args["internal-name"]) | |||
ret[#ret+1] = p._vrow_item (frame, "Accepted equipment", args["equipment"]) | |||
ret[#ret+1] = p._vrow_tech (frame, "Required technologies", util._arg_or(args["space-age-required-technologies"], args["required-technologies"])) | |||
ret[#ret+1] = p._vrow_tech (frame, "Allows", util._arg_or(args["space-age-allows"], args["allows"])) | |||
ret[#ret+1] = p._vrow_item (frame, "Effects", util._arg_or(args["space-age-effects"], args["effects"])) | |||
ret[#ret+1] = p._vrow_tech (frame, "Boosting technologies", args["boosting-technologies"]) | |||
ret[#ret+1] = p._vrow_item (frame, "Produced by", util._arg_or(args["space-age-producers"], args["producers"])) | |||
ret[#ret+1] = p._vrow_item (frame, "Consumed by", util._arg_or(args["space-age-consumers"], args["consumers"])) | |||
ret[#ret+1] = p._vrow_item (frame, "Valid fuel", args["valid-fuel"]) | |||
ret[#ret+1] = p._vrow_item (frame, "Used as fuel by", args["used-as-fuel-by"]) | |||
ret[#ret+1] = p._vrow_item (frame, "Recyling results", args["recycling-results"], sa) | |||
ret[#ret+1] = p._extra (frame, args["extra2"]) | |||
return table.concat(ret) | return table.concat(ret) | ||
end | end | ||
function p. | function p._translate(frame, str) | ||
return frame:expandTemplate{title = "Translation", args = {str}} | |||
if | end | ||
function p._row_simple(frame, label, arg, label_prefix) | |||
if util._empty_arg(arg) or arg == "none" then return end | |||
return p._row(frame, {label, arg}, label_prefix) | |||
end | |||
function p._row_unit(frame, label, arg, unit, label_prefix) | |||
if util._empty_arg(arg) then return end | |||
return p._row(frame, {label, arg, arg .. " " .. p._translate(frame, unit)}, label_prefix) | |||
end | |||
function p._row_type(frame, label, arg, label_prefix) | |||
if util._empty_arg(arg) then return end | |||
return p._row(frame, {label, arg, frame:expandTemplate{title = "Type", args = {arg}}}, label_prefix) | |||
end | |||
function p._row_item(frame, label, arg, label_prefix) | |||
if util._empty_arg(arg) then return end | |||
return p._row(frame, {label, arg, parsing._item(frame, arg)}, label_prefix) | |||
end | |||
function p._vrow_item(frame, label, arg, label_prefix) | |||
if util._empty_arg(arg) or arg == "none" then return end | |||
return p._vrow(frame, {label, arg, parsing._item(frame, arg)}, label_prefix) | |||
end | |||
function p._vrow_tech(frame, label, arg, label_prefix) | |||
if util._empty_arg(arg) or arg == "none" then return end | |||
return p._vrow(frame, {label, arg, parsing._technology(frame, {arg, color = "228B22"})}, label_prefix) | |||
end | |||
function p._row(frame, args, label_prefix) | |||
if util._empty_arg(args[2]) then | |||
return | |||
end | end | ||
local | local label = p._translate(frame, args[1]) | ||
if label_prefix then | |||
label = label_prefix .. label | |||
end | end | ||
return | |||
return string.format( | |||
[[<tr class="border-top"> | |||
<td> | |||
%s | |||
</td> | |||
<td> | |||
%s | |||
</td> | |||
</tr>]], | |||
label, | |||
args[3] or args[2]) | |||
end | end | ||
function p._vrow(frame, args, label_prefix) | |||
if util._empty_arg(args[2]) then | |||
return | |||
function p. | end | ||
local label = p._translate(frame, args[1]) | |||
if label_prefix then | |||
label = label_prefix .. label | |||
end | end | ||
return | return string.format( | ||
[[<tr class="border-top"> | |||
<td colspan=2> | |||
%s | |||
</td> | |||
</tr> | |||
<tr> | |||
<td class="infobox-vrow-value" colspan=2> | |||
%s | |||
</td> | |||
</tr>]], | |||
label, | |||
args[3] or args[2]) | |||
end | end | ||
function p._extra(frame, arg) | |||
if util._empty_arg(arg) then | |||
function p. | return | ||
if | |||
return | |||
end | end | ||
local label = p._translate(frame, arg) | |||
return string.format( | |||
[[<tr class="border-top"> | |||
<td colspan=2 class="infobox-extra"> | |||
%s | |||
</td> | |||
</tr>]], | |||
label) | |||
end | end | ||
return p | return p |
Latest revision as of 20:49, 1 November 2024
Lua methods used by Template:Infobox. Uses Lua methods from Module:Infobox/parsing and Module:Util.
Edit this documentation on Module:Infobox/doc.
Methods
base_tab
space_age_tab
local util = require("Module:Util")
local parsing = require("Module:Infobox/parsing")
local p = {}
function p.base_tab(frame) -- no prefix for args. Used for vanilla tab or if no tabs
local args = frame:getParent().args
local ret = {}
local sa = frame:expandTemplate{title = "Space age"} .. " "
if not util._empty_arg(args["recipe"]) then
ret[#ret+1] = p._vrow(frame, {"Recipe", args["recipe"], parsing._crafting(frame, args["recipe"])})
ret[#ret+1] = p._vrow(frame, {"Total raw", args["recipe"], parsing._crafting_raw(frame, util._arg_or(args["total-raw"], args["recipe"]))})
end
if not util._empty_arg(args["cost"]) then
local cost = parsing._item(frame, args["cost"]) .. ((not util._empty_arg(args["cost-multiplier"])) and "✖ <big>" .. args["cost-multiplier"] .. "</big>" or "")
ret[#ret+1] = p._vrow(frame, {"Cost", args["cost"], cost})
end
if not util._empty_arg(args["technology-trigger"]) then
ret[#ret+1] = p._vrow(frame, {"Researched by", args["technology-trigger"], parsing._technology_trigger(frame, args["technology-trigger"])})
end
ret[#ret+1] = p._extra (frame, args["extra1"])
if not util._empty_arg(args["map-color"]) then
local color = frame:expandTemplate{title = 'Color', args = {args["map-color"]}}
ret[#ret+1] = p._row(frame, {"Map color", args["map-color"], color})
end
ret[#ret+1] = p._row_simple(frame, "Map icon", args["map-icon"])
ret[#ret+1] = p._row_simple(frame, "Added in", args["added-in"])
ret[#ret+1] = p._row_simple(frame, "Walking speed", args["walking-speed"])
ret[#ret+1] = p._row_simple(frame, "Storage size", args["storage-size"])
ret[#ret+1] = p._row_simple(frame, "Fluid storage volume", args["fluid-storage-volume"])
if not util._empty_arg(args["expected-resources"]) then
local label = p._translate(frame, "Expected resources")
ret[#ret+1] = string.format(
[[<tr class="border-top">
<td>
%s
</td>
<td style="width: 70%%;">
%s
</td>
</tr>]], label, args["expected-resources"])
end
ret[#ret+1] = p._row_simple(frame, "Health", args["health"])
ret[#ret+1] = p._row_unit (frame, "Restores", args["restores"], "health")
ret[#ret+1] = p._row_simple(frame, "Resistances", args["resistance"])
ret[#ret+1] = p._row_unit (frame, "Lifespan", args["lifespan"], "seconds")
ret[#ret+1] = p._row_simple(frame, "Inventory size bonus", args["inventory-size-bonus"])
ret[#ret+1] = p._row_simple(frame, "Equipment grid size", args["grid-size"])
ret[#ret+1] = p._row_simple(frame, "Stack size", args["stack-size"])
ret[#ret+1] = p._row_simple(frame, "Rocket capacity", args["rocket-capacity"], sa)
ret[#ret+1] = p._row_simple(frame, "Range", args["range"])
ret[#ret+1] = p._row_simple(frame, "Shooting speed", args["shooting-speed"])
ret[#ret+1] = p._row_simple(frame, "Damage", args["damage"])
ret[#ret+1] = p._row_simple(frame, "Damage bonus", args["damage-bonus"])
ret[#ret+1] = p._row_simple(frame, "Cluster size", args["cluster-size"])
ret[#ret+1] = p._row_simple(frame, "Area of effect size", args["area-of-effect-size"])
ret[#ret+1] = p._row_simple(frame, "Durability", args["durability"])
ret[#ret+1] = p._row_simple(frame, "Magazine size", args["magazine-size"])
ret[#ret+1] = p._row_item (frame, "Ammunition", args["ammunition"])
ret[#ret+1] = p._vrow_item (frame, "Used as ammunition by", args["used-as-ammo-by"])
ret[#ret+1] = p._row_simple(frame, "Efficiency", args["efficiency"])
ret[#ret+1] = p._row_simple(frame, "Dimensions", args["dimensions"])
ret[#ret+1] = p._row_type (frame, "Energy consumption", args["energy"])
ret[#ret+1] = p._row_type (frame, "Drain", args["drain"])
ret[#ret+1] = p._row_type (frame, "Robot recharge rate", args["robot-recharge-rate"])
ret[#ret+1] = p._row_type (frame, "Internal buffer recharge rate", args["internal-buffer-recharge-rate"])
ret[#ret+1] = p._vrow_item (frame, "Placed in", args["equipped-in"])
ret[#ret+1] = p._row_simple(frame, "Robot limit", args["robot-limit"])
ret[#ret+1] = p._row_simple(frame, "Repair speed", args["repair-speed"])
ret[#ret+1] = p._row_simple(frame, "Charging stations", args["charging-stations"])
ret[#ret+1] = p._row_simple(frame, "Rotation speed", args["rotation-speed"])
ret[#ret+1] = p._row_simple(frame, "Belt speed", args["belt-speed"])
ret[#ret+1] = p._row_simple(frame, "Collection area", args["asteroid-collection-area"])
ret[#ret+1] = p._row_simple(frame, "Collection arm speed", args["asteroid-collection-arm-speed"])
ret[#ret+1] = p._row_simple(frame, "Collection arm count", args["asteroid-collection-arm-count"])
ret[#ret+1] = p._row_simple(frame, "Movement bonus", args["movement-bonus"])
ret[#ret+1] = p._row_type (frame, "Energy capacity", args["energy-capacity"])
ret[#ret+1] = p._row_simple(frame, "Power input", args["power-input"])
ret[#ret+1] = p._row_simple(frame, "Power output", args["power-output"])
ret[#ret+1] = p._row_simple(frame, "Heat output", args["heat-output"])
ret[#ret+1] = p._row_simple(frame, "Maximum temperature", args["maximum-temperature"])
ret[#ret+1] = p._row_simple(frame, "Fluid consumption", args["fluid-consumption"])
ret[#ret+1] = p._row_simple(frame, "Shield hitpoints", args["shield"])
ret[#ret+1] = p._row_type (frame, "Energy per hitpoint", args["energy-per-hitpoint"])
ret[#ret+1] = p._row_simple(frame, "Maximum recharge speed",args["maximum-recharge-speed"])
ret[#ret+1] = p._row_simple(frame, "Crafting speed", args["crafting-speed"])
ret[#ret+1] = p._row_simple(frame, "Pumping speed", args["pumping-speed"])
ret[#ret+1] = p._row_simple(frame, "Mining time", args["mining-time"])
ret[#ret+1] = p._row_simple(frame, "Speed", args["speed"])
ret[#ret+1] = p._row_simple(frame, "Productivity", args["productivity"])
ret[#ret+1] = p._row_simple(frame, "Quality", args["quality"], sa)
ret[#ret+1] = p._row_simple(frame, "Mining speed", args["mining-speed"])
ret[#ret+1] = p._row_unit (frame, "Mining area", args["mining-area"], "tiles")
ret[#ret+1] = p._row_simple(frame, "Resource drain", args["resource-drain"])
ret[#ret+1] = p._row_simple(frame, "Science pack drain", args["science-pack-drain"])
ret[#ret+1] = p._row_simple(frame, "Base productivity", args["base-productivity"])
ret[#ret+1] = p._row_type (frame, "Fuel value", args["fuel-value"])
ret[#ret+1] = p._row_simple(frame, "Vehicle acceleration", args["vehicle-acceleration"])
ret[#ret+1] = p._row_simple(frame, "Vehicle top speed", args["vehicle-top-speed"])
ret[#ret+1] = p._row_unit (frame, "Supply area", args["supply-area"], "tiles")
ret[#ret+1] = p._row_unit (frame, "Wire reach", args["wire-reach"], "tiles")
ret[#ret+1] = p._row_unit (frame, "Construction area", args["construction-area"], "tiles")
ret[#ret+1] = p._row_simple(frame, "Pollution", args["pollution"])
ret[#ret+1] = p._row_item (frame, "Buildable only on", args["buildable-on"], sa)
ret[#ret+1] = p._row_item (frame, "Crafted only on", args["crafted-on"], sa)
ret[#ret+1] = p._row_unit (frame, "Spoil time", args["spoil-time"], "minutes", sa)
ret[#ret+1] = p._row_item (frame, "Spoil result", args["spoil-result"], sa)
ret[#ret+1] = p._row_simple(frame, "Weight", args["vehicle-weight"])
ret[#ret+1] = p._row_unit (frame, "Module slots", args["modules"], "slots")
if not util._empty_arg(args["prototype-type"]) then
local prototype_type = frame:expandTemplate{title = 'Prototype page', args = {args["prototype-type"]}}
ret[#ret+1] = p._row(frame, {"Prototype type", args["prototype-type"], prototype_type})
end
ret[#ret+1] = p._row_simple(frame, "Internal name", args["internal-name"])
ret[#ret+1] = p._vrow_item (frame, "Accepted equipment", args["equipment"])
ret[#ret+1] = p._vrow_tech (frame, "Required technologies", args["required-technologies"])
ret[#ret+1] = p._vrow_tech (frame, "Allows", args["allows"])
ret[#ret+1] = p._vrow_item (frame, "Effects", args["effects"])
ret[#ret+1] = p._vrow_tech (frame, "Boosting technologies", args["boosting-technologies"])
ret[#ret+1] = p._vrow_item (frame, "Produced by", args["producers"])
ret[#ret+1] = p._vrow_item (frame, "Consumed by", args["consumers"])
ret[#ret+1] = p._vrow_item (frame, "Valid fuel", args["valid-fuel"])
ret[#ret+1] = p._vrow_item (frame, "Used as fuel by", args["used-as-fuel-by"])
ret[#ret+1] = p._vrow_item (frame, "Recyling results", args["recycling-results"], sa)
ret[#ret+1] = p._extra (frame, args["extra2"])
return table.concat(ret)
end
function p.space_age_tab(frame) -- space-age prefix for some args. Used for space age mod tab
local args = frame:getParent().args
local ret = {}
local sa = frame:expandTemplate{title = "Space age"} .. " "
local recipe = util._arg_or(args["space-age-recipe"], args["recipe"])
if not util._empty_arg(recipe) then
ret[#ret+1] = p._vrow(frame, {"Recipe", recipe, parsing._crafting(frame, recipe)})
local vanilla_total_raw = util._arg_or(args["total-raw"], args["recipe"])
ret[#ret+1] = p._vrow(frame, {"Total raw", recipe, parsing._crafting_raw(frame, util._arg_or(args["space-age-total-raw"], util._arg_or(args["space-age-recipe"], vanilla_total_raw)))})
end
local cost_arg = util._arg_or(args["space-age-cost"], args["cost"])
local tech_trigger_arg = util._arg_or(args["space-age-technology-trigger"], args["technology-trigger"])
if not util._empty_arg(cost_arg) and cost_arg ~= "none" then
local cost_multiplier_arg = util._arg_or(args["space-age-cost-multiplier"], args["cost-multiplier"])
local cost = parsing._item(frame, cost_arg) .. ((not util._empty_arg(cost_multiplier_arg)) and "✖ <big>" .. cost_multiplier_arg .. "</big>" or "")
ret[#ret+1] = p._vrow(frame, {"Cost", cost_arg, cost})
end
if not util._empty_arg(tech_trigger_arg) and tech_trigger_arg ~= "none" then
ret[#ret+1] = p._vrow(frame, {"Researched by", tech_trigger_arg, parsing._technology_trigger(frame, tech_trigger_arg)})
end
ret[#ret+1] = p._extra (frame, args["extra1"])
if not util._empty_arg(args["map-color"]) then
local color = frame:expandTemplate{title = 'Color', args = {args["map-color"]}}
ret[#ret+1] = p._row(frame, {"Map color", args["map-color"], color})
end
ret[#ret+1] = p._row_simple(frame, "Map icon", args["map-icon"])
ret[#ret+1] = p._row_simple(frame, "Added in", args["added-in"])
ret[#ret+1] = p._row_simple(frame, "Walking speed", args["walking-speed"])
ret[#ret+1] = p._row_simple(frame, "Storage size", util._arg_or(args["space-age-storage-size"], args["storage-size"]))
ret[#ret+1] = p._row_simple(frame, "Fluid storage volume", args["fluid-storage-volume"])
if not util._empty_arg(args["expected-resources"]) then
local label = p._translate(frame, "Expected resources")
ret[#ret+1] = string.format(
[[<tr class="border-top">
<td>
%s
</td>
<td style="width: 70%%;">
%s
</td>
</tr>]], label, args["expected-resources"])
end
ret[#ret+1] = p._row_simple(frame, "Health", args["health"])
ret[#ret+1] = p._row_unit (frame, "Restores", args["restores"], "health")
ret[#ret+1] = p._row_simple(frame, "Resistances", args["resistance"])
ret[#ret+1] = p._row_unit (frame, "Lifespan", args["lifespan"], "seconds")
ret[#ret+1] = p._row_simple(frame, "Inventory size bonus", args["inventory-size-bonus"])
ret[#ret+1] = p._row_simple(frame, "Equipment grid size", args["grid-size"])
ret[#ret+1] = p._row_simple(frame, "Stack size", util._arg_or(args["space-age-stack-size"], args["stack-size"]))
ret[#ret+1] = p._row_simple(frame, "Rocket capacity", args["rocket-capacity"], sa)
ret[#ret+1] = p._row_simple(frame, "Range", args["range"])
ret[#ret+1] = p._row_simple(frame, "Shooting speed", args["shooting-speed"])
ret[#ret+1] = p._row_simple(frame, "Damage", args["damage"])
ret[#ret+1] = p._row_simple(frame, "Damage bonus", args["damage-bonus"])
ret[#ret+1] = p._row_simple(frame, "Cluster size", args["cluster-size"])
ret[#ret+1] = p._row_simple(frame, "Area of effect size", args["area-of-effect-size"])
ret[#ret+1] = p._row_simple(frame, "Durability", args["durability"])
ret[#ret+1] = p._row_simple(frame, "Magazine size", args["magazine-size"])
ret[#ret+1] = p._row_item (frame, "Ammunition", args["ammunition"])
ret[#ret+1] = p._vrow_item (frame, "Used as ammunition by", args["used-as-ammo-by"])
ret[#ret+1] = p._row_simple(frame, "Efficiency", args["efficiency"])
ret[#ret+1] = p._row_simple(frame, "Dimensions", args["dimensions"])
ret[#ret+1] = p._row_type (frame, "Energy consumption", args["energy"])
ret[#ret+1] = p._row_type (frame, "Drain", args["drain"])
ret[#ret+1] = p._row_type (frame, "Robot recharge rate", args["robot-recharge-rate"])
ret[#ret+1] = p._row_type (frame, "Internal buffer recharge rate", args["internal-buffer-recharge-rate"])
ret[#ret+1] = p._vrow_item (frame, "Placed in", args["equipped-in"])
ret[#ret+1] = p._row_simple(frame, "Robot limit", args["robot-limit"])
ret[#ret+1] = p._row_simple(frame, "Repair speed", args["repair-speed"])
ret[#ret+1] = p._row_simple(frame, "Charging stations", args["charging-stations"])
ret[#ret+1] = p._row_simple(frame, "Rotation speed", args["rotation-speed"])
ret[#ret+1] = p._row_simple(frame, "Belt speed", args["belt-speed"])
ret[#ret+1] = p._row_simple(frame, "Collection area", args["asteroid-collection-area"])
ret[#ret+1] = p._row_simple(frame, "Collection arm speed", args["asteroid-collection-arm-speed"])
ret[#ret+1] = p._row_simple(frame, "Collection arm count", args["asteroid-collection-arm-count"])
ret[#ret+1] = p._row_simple(frame, "Movement bonus", args["movement-bonus"])
ret[#ret+1] = p._row_type (frame, "Energy capacity", args["energy-capacity"])
ret[#ret+1] = p._row_simple(frame, "Power input", args["power-input"])
ret[#ret+1] = p._row_simple(frame, "Power output", args["power-output"])
ret[#ret+1] = p._row_simple(frame, "Heat output", args["heat-output"])
ret[#ret+1] = p._row_simple(frame, "Maximum temperature", args["maximum-temperature"])
ret[#ret+1] = p._row_simple(frame, "Fluid consumption", args["fluid-consumption"])
ret[#ret+1] = p._row_simple(frame, "Shield hitpoints", args["shield"])
ret[#ret+1] = p._row_type (frame, "Energy per hitpoint", args["energy-per-hitpoint"])
ret[#ret+1] = p._row_simple(frame, "Maximum recharge speed",args["maximum-recharge-speed"])
ret[#ret+1] = p._row_simple(frame, "Crafting speed", args["crafting-speed"])
ret[#ret+1] = p._row_simple(frame, "Pumping speed", args["pumping-speed"])
ret[#ret+1] = p._row_simple(frame, "Mining time", args["mining-time"])
ret[#ret+1] = p._row_simple(frame, "Speed", args["speed"])
ret[#ret+1] = p._row_simple(frame, "Productivity", args["productivity"])
ret[#ret+1] = p._row_simple(frame, "Quality", args["quality"])
ret[#ret+1] = p._row_simple(frame, "Mining speed", args["mining-speed"])
ret[#ret+1] = p._row_unit (frame, "Mining area", args["mining-area"], "tiles")
ret[#ret+1] = p._row_simple(frame, "Resource drain", args["resource-drain"])
ret[#ret+1] = p._row_simple(frame, "Science pack drain", args["science-pack-drain"])
ret[#ret+1] = p._row_simple(frame, "Base productivity", args["base-productivity"])
ret[#ret+1] = p._row_type (frame, "Fuel value", args["fuel-value"])
ret[#ret+1] = p._row_simple(frame, "Vehicle acceleration", args["vehicle-acceleration"])
ret[#ret+1] = p._row_simple(frame, "Vehicle top speed", args["vehicle-top-speed"])
ret[#ret+1] = p._row_unit (frame, "Supply area", args["supply-area"], "tiles")
ret[#ret+1] = p._row_unit (frame, "Wire reach", args["wire-reach"], "tiles")
ret[#ret+1] = p._row_unit (frame, "Construction area", args["construction-area"], "tiles")
ret[#ret+1] = p._row_simple(frame, "Pollution", args["pollution"])
ret[#ret+1] = p._row_item (frame, "Buildable only on", args["buildable-on"], sa)
ret[#ret+1] = p._row_item (frame, "Crafted only on", args["crafted-on"], sa)
ret[#ret+1] = p._row_unit (frame, "Spoil time", args["spoil-time"], "minutes", sa)
ret[#ret+1] = p._row_item (frame, "Spoil result", args["spoil-result"], sa)
ret[#ret+1] = p._row_simple(frame, "Weight", args["vehicle-weight"])
ret[#ret+1] = p._row_unit (frame, "Module slots", args["modules"], "slots")
if not util._empty_arg(args["prototype-type"]) then
local prototype_type = frame:expandTemplate{title = 'Prototype page', args = {args["prototype-type"]}}
ret[#ret+1] = p._row(frame, {"Prototype type", args["prototype-type"], prototype_type})
end
ret[#ret+1] = p._row_simple(frame, "Internal name", args["internal-name"])
ret[#ret+1] = p._vrow_item (frame, "Accepted equipment", args["equipment"])
ret[#ret+1] = p._vrow_tech (frame, "Required technologies", util._arg_or(args["space-age-required-technologies"], args["required-technologies"]))
ret[#ret+1] = p._vrow_tech (frame, "Allows", util._arg_or(args["space-age-allows"], args["allows"]))
ret[#ret+1] = p._vrow_item (frame, "Effects", util._arg_or(args["space-age-effects"], args["effects"]))
ret[#ret+1] = p._vrow_tech (frame, "Boosting technologies", args["boosting-technologies"])
ret[#ret+1] = p._vrow_item (frame, "Produced by", util._arg_or(args["space-age-producers"], args["producers"]))
ret[#ret+1] = p._vrow_item (frame, "Consumed by", util._arg_or(args["space-age-consumers"], args["consumers"]))
ret[#ret+1] = p._vrow_item (frame, "Valid fuel", args["valid-fuel"])
ret[#ret+1] = p._vrow_item (frame, "Used as fuel by", args["used-as-fuel-by"])
ret[#ret+1] = p._vrow_item (frame, "Recyling results", args["recycling-results"], sa)
ret[#ret+1] = p._extra (frame, args["extra2"])
return table.concat(ret)
end
function p._translate(frame, str)
return frame:expandTemplate{title = "Translation", args = {str}}
end
function p._row_simple(frame, label, arg, label_prefix)
if util._empty_arg(arg) or arg == "none" then return end
return p._row(frame, {label, arg}, label_prefix)
end
function p._row_unit(frame, label, arg, unit, label_prefix)
if util._empty_arg(arg) then return end
return p._row(frame, {label, arg, arg .. " " .. p._translate(frame, unit)}, label_prefix)
end
function p._row_type(frame, label, arg, label_prefix)
if util._empty_arg(arg) then return end
return p._row(frame, {label, arg, frame:expandTemplate{title = "Type", args = {arg}}}, label_prefix)
end
function p._row_item(frame, label, arg, label_prefix)
if util._empty_arg(arg) then return end
return p._row(frame, {label, arg, parsing._item(frame, arg)}, label_prefix)
end
function p._vrow_item(frame, label, arg, label_prefix)
if util._empty_arg(arg) or arg == "none" then return end
return p._vrow(frame, {label, arg, parsing._item(frame, arg)}, label_prefix)
end
function p._vrow_tech(frame, label, arg, label_prefix)
if util._empty_arg(arg) or arg == "none" then return end
return p._vrow(frame, {label, arg, parsing._technology(frame, {arg, color = "228B22"})}, label_prefix)
end
function p._row(frame, args, label_prefix)
if util._empty_arg(args[2]) then
return
end
local label = p._translate(frame, args[1])
if label_prefix then
label = label_prefix .. label
end
return string.format(
[[<tr class="border-top">
<td>
%s
</td>
<td>
%s
</td>
</tr>]],
label,
args[3] or args[2])
end
function p._vrow(frame, args, label_prefix)
if util._empty_arg(args[2]) then
return
end
local label = p._translate(frame, args[1])
if label_prefix then
label = label_prefix .. label
end
return string.format(
[[<tr class="border-top">
<td colspan=2>
%s
</td>
</tr>
<tr>
<td class="infobox-vrow-value" colspan=2>
%s
</td>
</tr>]],
label,
args[3] or args[2])
end
function p._extra(frame, arg)
if util._empty_arg(arg) then
return
end
local label = p._translate(frame, arg)
return string.format(
[[<tr class="border-top">
<td colspan=2 class="infobox-extra">
%s
</td>
</tr>]],
label)
end
return p