Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Module:Data: Difference between revisions

From Kerbal Space Program 2 Wiki
(log to console)
(return dataJson)
Line 25: Line 25:
--local dataValue = p._getData(args)
--local dataValue = p._getData(args)
return "test"
return dataJson
end
end



Revision as of 17:13, 10 October 2024

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", "LW-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 Data:Example.

{{#invoke:Data|getData|LV-SW "SWERV"|mass}} - Returns the mass of the "SWERV" in tons, table.

{{#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

-- 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)
	-- Get arguments from the invoke
	local args = getArgs(frame) -- E.g., args = {"Example", "modules", "engine", "isp", "vac"}
	
	-- Load the JSON from the Data: page
	local dataJson = mw.loadJsonData("Data:"..args[1])
	
	-- Iterate through the JSON using the remaining args
	for i = 2, table.maxn(args) do
		-- Each loop steps into the next level JSON table, 
		-- leaving the final value at the end
		dataJson = dataJson[args[i]]
		mw.logObject(dataJson)
	end
	
	--local dataValue = p._getData(args)
	
	return dataJson
end

function _getData(args)
	local dataJson = mw.loadJsonData("Data:"..args[1])
	
	-- Run through each additional paramter which should point to a specific element in a part data JSON
	for i = 2, table.maxn(args) do
		dataJson = dataJson[args[i]]
	end
	
	return dataJson
end

function p.test()
    local dataJson = mw.loadJsonData("Data:Example")
    local temp = dataJson["modules"]["engine"]

    return(temp["isp"]["vac"])
end

return p
MediaWiki Appliance - Powered by TurnKey Linux