Difference between revisions of "Module:DefInfo"

From RimWorld Wiki
Jump to navigation Jump to search
(workable prototype)
m (Blanked the page)
Tag: Blanking
 
(10 intermediate revisions by the same user not shown)
Line 1: Line 1:
-- This module is to contain code for parsing a defName parameter and returning
 
-- information about the Def from Module:DefInfo/data*.  See talk page for more
 
-- info
 
  
local p = {}
 
 
local Races = mw.loadData('Module:Test/data/races')
 
local Biomes = mw.loadData('Module:Test/data/biomes')
 
 
function find_key_in_table(key, table)
 
for k, v in pairs(table) do
 
if k == key then return v
 
elseif type(v) == "table" then
 
local found = find_key_in_table(key, v)
 
if found then return found end
 
end
 
end
 
end
 
 
function parent_defName(def, category)
 
local parent_name = category[def]["ParentName"]
 
if type(category[parent_name]) == "table" then return parent_name end
 
end
 
 
function find_in_parents(tag, def, category)
 
if not category[def] then return def .. " not found in category" end
 
local parent_def = parent_defName(def, category)
 
if not parent_def then return tag .." not found in parent defs" end
 
local found = find_key_in_table(tag, category[parent_def])
 
if found then return found
 
else
 
found = find_in_parents(tag, parent_def, category)
 
if found then return found end
 
end
 
end
 
 
function query(tag, def, category)
 
if not category[def] then return def .. " not found in category" end
 
local found = find_key_in_table(tag, category[def])
 
if found then return found end
 
found = find_in_parents(tag, def, category)
 
if found then return found end
 
return tag .. " not found"
 
end
 
 
function p.query(frame)
 
local category = nil
 
if frame.args[1] == "Races" then category = Races end
 
if frame.args[1] == "Biomes" then category = Biomes end
 
local def = frame.args[2]
 
local tag = frame.args[3]
 
return query(tag, def, category)
 
end
 
 
mw.log("Module:DefInfo:os.clock() " .. os.clock())
 
 
return p
 

Latest revision as of 14:34, 9 May 2021

Dev version at Module:Test