Module:Vehicles
Jump to navigation
Jump to search
Module:Vehicles
Provides structured access to vehicle data defined in Module:Vehicles/data.
This module provides two functions:
get- renders a vehicle infobox using Template:VehicleInfoboxcategory- validates the provided vehicle type against Module:Vehicles/data and outputs the corresponding MediaWiki category if valid.
Usage
Render infobox for current vehicle page
On a vehicle page, where the page title matches a vehicle key in the dataset:
{{#invoke:Vehicles|get|{{PAGENAME}}}}
Render infobox for a specific vehicle
A specific vehicle key can also be provided manually:
{{#invoke:Vehicles|get|Sandbike}}
Render infobox without adding categories
An optional parameter can be used to prevent the infobox from adding the page to categories:
{{#invoke:Vehicles|get|Sandbike|omit=yes}}
Safe category output
Vehicle types are validated against definitions in Module:Vehicles/data. If valid, the corresponding MediaWiki category is returned. Invalid or unknown types produce no output.
{{#invoke:Vehicles|category|Ground}}
Parameters
get
- 1
- The vehicle key used in Module:Vehicles/data.
- omit (optional)
- If specified with a truthy value, the module will pass
omit_categories=yesto Template:VehicleInfobox. Accepted values:trueyes1
category
- 1
- A valid vehicle type string used in Module:Vehicles/data.
Notes
get
- If a vehicle key is not found in the dataset, a placeholder infobox is rendered using default values.
local p = {}
local dataModule = require("Module:Vehicles/data")
local data = dataModule.vehicles
local vehicleTypes = dataModule.vehicleTypes
-- ---------- Helpers ----------
local function escape(s)
s = tostring(s or "")
return s:gsub("|", "|")
end
local function isTruthy(s)
s = tostring(s or ""):lower()
return s == "true" or s == "yes" or s == "1"
end
-- ---------- Rendering ----------
local function renderInfobox(name, vehicle, omit)
local out = {}
local type = tostring(vehicle.type or "")
out[#out + 1] = "{{VehicleInfobox"
out[#out + 1] = "|title=" .. escape(name)
out[#out + 1] = "|image=" .. escape(vehicle.image or "Placeholder.png")
out[#out + 1] = "|type=" .. escape(type)
out[#out + 1] = "|category=" .. escape(vehicle.category)
out[#out + 1] = "|minimum_tier={{MetalIcon|" .. escape(vehicle.minimum_tier) .. "}}"
out[#out + 1] = "|crew_capacity=" .. escape(vehicle.crew_capacity)
out[#out + 1] = "|backup_compatible=" .. (vehicle.backup_compatible and "Yes" or "No")
if omit or not vehicleTypes[vehicle.type] then
out[#out + 1] = "|omit_categories=true"
end
out[#out + 1] = "}}"
return table.concat(out, "\n")
end
function p.get(frame)
local key = frame.args[1]
local omit = frame.args.omit
if not key or key == "" then
return "<strong class='error'>No vehicle specified.</strong>"
end
local vehicle = data[key]
return frame:preprocess(renderInfobox(key, vehicle, isTruthy(omit)))
end
function p.category(frame)
local vehicleType = frame.args[1]
local cat = vehicleTypes[vehicleType]
if cat then
return "[[Category:" .. cat .. "]]"
end
return nil
end
return p