More actions
No edit summary |
No edit summary Tag: Reverted |
||
Line 13: | Line 13: | ||
-- Load the JSON from the Data: page | -- Load the JSON from the Data: page | ||
local dataJson = mw.loadJsonData("Data:"..args[1]) | --local dataJson = mw.loadJsonData("Data:"..args[1]) | ||
--local dataJson = mw.title.new("Data:"..args[1]):getContent() | --local dataJson = mw.title.new("Data:"..args[1]):getContent() | ||
Line 19: | Line 19: | ||
-- This approach doesn't return anything useable, apparently | -- This approach doesn't return anything useable, apparently | ||
local dataTab = require("Module:Example") | |||
local jsonData = dataTab.data | |||
-- Iterate through the JSON using the remaining args | -- Iterate through the JSON using the remaining args |
Revision as of 18:35, 11 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, .
{{#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])
--local dataJson = mw.title.new("Data:"..args[1]):getContent()
--dataJson = mw.text.jsonDecode(dataJson)
-- This approach doesn't return anything useable, apparently
local dataTab = require("Module:Example")
local jsonData = dataTab.data
-- 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]]
end
-- This line returns the value as a proper string
--return dataJson[args[2]][args[3]][args[4]][args[5]]
-- This, for some reason, returns a "table" despite coming back as a
-- string when testing the same code in the console.
return dataJson
end
-- This func returns a "string" to the #invoke
function p.test()
local dataJson = mw.loadJsonData("Data:Example")
local temp = dataJson["modules"]["engine"]
return(temp["isp"]["vac"])
end
return p