Module:Data: Difference between revisions

From Kerbal Space Program 2 Wiki
Jump to navigation Jump to search
changed getArgs to frameOnly to see if the infobox params are ignored
updated NS ref
 
(24 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
-- subject: The subject entity to get data from.
--- E.g., "Kerbol", "LW-Sw "SWERV""
-- args: 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)
-- Get arguments from the invoke
-- Get arguments from the invoke
local args = getArgs(frame, {frameOnly = true}) -- E.g., args = {"Example", "modules", "engine", "isp", "vac"}
-- E.g., args = {"Example/engine", "modules", "engine", "isp", "vac"}
local args = getArgs(frame, {frameOnly = true})
-- Pass arguments to the helper function
-- Pass arguments to the helper function
dataJson = p._getData(args)
dataJson = p._getData(args)
 
return dataJson
return dataJson--[args[2]]["engine"]["isp"]["vac"]
end
end


function p._getData(args)
function p._getData(args)
-- Load the data from the JSON page, parsed as a table of tables
-- Load the data from the JSON page, parsed as a table of tables
local dataJson = mw.loadJsonData("Data:"..args[1])
local dataJson = mw.loadJsonData("GameData:"..args[1])
-- Iterate through dataJson using the args values as keys to  
-- Iterate through dataJson using the args values as keys to  
-- step down into the table per argument
-- step down into the table per argument
--for k, v in pairs(args) do
-- if k > 1 then
-- dataJson = dataJson[v]
-- end
--end
local temp = "START:"
for k, v in pairs(args) do
for k, v in pairs(args) do
temp = temp.." "..k
if k > 1 then
dataJson = dataJson[v]
end
end
end
dataJson = temp
 
-- Send the final, requested value back to the main function
-- Send the final, requested value back to the main function
return dataJson
return dataJson
end
end


function p.getEngineFuel(frame)
local args = getArgs(frame)
fuelType = p._getEngineFuel(args)
return fuelType
end
function p._getEngineFuel(args)
-- Load the data from the JSON page, parsed as a table of tables
local dataJson = mw.loadJsonData("Data:"..args[1])
local fuelType = ""
for k, v in pairs(dataJson["modules"]["engine"]["propellants"]) do
mw.logObject(k)
if k == "oxidizer" then
fuelType = "Methalox"
end
end
return fuelType
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