Module:Data: Difference between revisions

From Kerbal Space Program 2 Wiki
Jump to navigation Jump to search
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
-- args:
-- subject: The subject entity to get data from.
--- E.g., "Kerbol", "LW-Sw "SWERV""
-- param: The parameter / parameter chain to access from the data page.
--- E.g., "mass", "max_temp", "modules|engine|isp_vac", "modules|generator|outputs|units"


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 dataValue = ""
local args = getArgs(frame, {frameOnly = true})
-- Pass arguments to the helper function
local dataValue = p._getData(args)
dataJson = p._getData(args)
return dataJson
return dataValue
end
end


function p._getData(args)
function p._getData(args)
local dataJson = mw.loadJsonData("Data:"..args[1])
-- Load the data from the JSON page, parsed as a table of tables
local dataJson = mw.loadJsonData("GameData:"..args[1])
-- Run through each additional paramter which should point to a specific element in a part data JSON
-- Iterate through dataJson using the args values as keys to  
for i = 2, #args do
-- step down into the table per argument
dataJson = dataJson[args[i]]
for k, v in pairs(args) do
if k > 1 then
dataJson = dataJson[v]
end
end
end
 
local dataParam = dataJson
-- Send the final, requested value back to the main function
return dataJson
return dataParam
end
end


return p
return p

Latest revision as of 05: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