Module:Data: Difference between revisions
remove table.concat, caused output to go from "table" to blank, not even "nil" |
updated NS ref |
||
| (99 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
local p = {} | local p = {} | ||
local getArgs = require('Module:Arguments').getArgs | local getArgs = require('Module:Arguments').getArgs | ||
function p.getData(frame) | function p.getData(frame) | ||
local args = getArgs(frame) | -- Get arguments from the invoke | ||
-- E.g., args = {"Example/engine", "modules", "engine", "isp", "vac"} | |||
local args = getArgs(frame, {frameOnly = true}) | |||
-- Pass arguments to the helper function | |||
dataJson = p._getData(args) | |||
return dataJson | |||
return | |||
end | end | ||
function p._getData(args) | function p._getData(args) | ||
local dataJson = mw.loadJsonData(" | -- Load the data from the JSON page, parsed as a table of tables | ||
local dataJson = mw.loadJsonData("GameData:"..args[1]) | |||
-- | -- Iterate through dataJson using the args values as keys to | ||
for | -- step down into the table per argument | ||
dataJson = dataJson[ | for k, v in pairs(args) do | ||
if k > 1 then | |||
dataJson = dataJson[v] | |||
end | |||
end | end | ||
-- Send the final, requested value back to the main function | |||
return dataJson | |||
return | |||
end | end | ||
return p | return p | ||
Latest revision as of 04:25, 14 February 2025
The Data module exists to translate information from Data: pages to templates/articles.
Arguments
<1> (Entity): This argument is taken as the title of the intended Data: page to search through.
E.g.: "Kerbol", "LV-SW "SWERV""
<2+> (Parameter chain): Arguments 2 and beyond define the parameter chain to search on the data page.
E.g.: "mass", "max_temp", "modules|engine|isp_vac", "modules|generator|outputs|units"
Functions
getData: The primary function of the module. Accepts the full argument set to determine the parameter to return from the subject.
getFuelLabels: Used for engine infobox construction. Accepts a part name (only works for engines) for <1> and optionally "alt" for <2>. Returns a line-break separated list of the propellant names used by an engine mode. Should probably be moved to a different Module.
getFuelValues: Used for engine infobox construction. Accepts a part name (only works for engines) for <1> and optionally "alt" for <2>. Returns a line-break separated list of the propellant use rates of an engine mode. Should probably be moved to a different Module.
Examples
A list of example JSON sets can be found at GameData:Example.
{{#invoke:Data|getData|LV-SW "SWERV"|mass}} - Returns the mass of the "SWERV" in tons, 10.00.
{{#invoke:Data|getData|LV-3000 "Tuba"|modules|engine|thrust|vac}} - Returns the vacuum thrust of the "Tuba" in kilonewtons, 510.0.
local p = {}
local getArgs = require('Module:Arguments').getArgs
function p.getData(frame)
-- Get arguments from the invoke
-- E.g., args = {"Example/engine", "modules", "engine", "isp", "vac"}
local args = getArgs(frame, {frameOnly = true})
-- Pass arguments to the helper function
dataJson = p._getData(args)
return dataJson
end
function p._getData(args)
-- Load the data from the JSON page, parsed as a table of tables
local dataJson = mw.loadJsonData("GameData:"..args[1])
-- Iterate through dataJson using the args values as keys to
-- step down into the table per argument
for k, v in pairs(args) do
if k > 1 then
dataJson = dataJson[v]
end
end
-- Send the final, requested value back to the main function
return dataJson
end
return p