Fandom

Civilization

Module:Data

7,077pages on
this wiki
Add New Page
Talk0
-- Game specific functions:
-- Use the game's suffix to reach the appropriate subpage.
-- Example: Data/CivRev2
 
local utils = require("Module:TemplateUtils")
 
 
--To get a simple text value
function GetValue(path,entry,field)
	local data = mw.loadData("Module:Data/"..path)
 
	local value = data[entry][field]
	if type(value) == "table" then
		return table.concat(value, ", ")
	else
		return tostring(value)
	end
end
 
function GetSubValue(path,t,entry,field)
	local data = mw.loadData("Module:Data/"..path)
 
	local value = data[t][entry][field]
	if type(value) == "table" then
		return table.concat(value, ", ")
	else
		return tostring(value)
	end
end
 
--To get all of the keys of a game's datatype
function GetKeys(path,separator)
	local data = mw.loadData("Module:Data/"..path)
 
	local t = {}
	for k,v in pairs(data) do
		table.insert(t,k)
	end
	table.sort(t)
 
	return table.concat(t, separator)
end
 
--To get all of the keys of a game's datatype
function ModuleToJSON(path)
	local JSON = require("Module:JSON")
	local data = mw.loadData("Module:Data/"..path)
 
	return JSON:encode(utils.RecreateTable(data))
end
 
local p = {}
function p.GetValue(frame)
	return GetValue(frame.args[1],frame.args[2],frame.args[3])
end
function p.GetValuePreProcessed(frame)
	return  utils.PreProcess(frame,GetValue(frame.args[1],frame.args[2],frame.args[3]))
end
function p.GetSubValue(frame)
	return GetSubValue(frame.args[1],frame.args[2],frame.args[3],frame.args[4])
end
function p.GetSubValuePreProcessed(frame)
	return utils.PreProcess(frame,GetSubValue(frame.args[1],frame.args[2],frame.args[3],frame.args[4]))
end
function p.GetLinkListFromPath(frame)
    local path = mw.text.split(frame.args[1],'>');
 
	local data = mw.loadData("Module:Data/"..path[1])
	local value = data[path[2]][frame.args[2]]
	if (value == nil) then
	    return ""
    else
        return utils.LinkAll(data[path[2]][frame.args[2]],frame.args[3])
    end
end
function p.GetValueFromPath(frame)
    local path = mw.text.split(frame.args[1],'>');
    if (#path == 2) then
        return GetValue(path[1],path[2],frame.args[2])
    else
        return GetSubValue(path[1],path[2],path[3],frame.args[2])
    end
end
function p.GetValueFromPathPreProcessed(frame)
    local value = p.GetValueFromPath(frame)
    if (value == "nil") then
        return frame.args[3] or ""
    else
        return utils.PreProcess(frame, p.GetValueFromPath(frame))
    end
end
function p.GetKeys(frame)
	return GetKeys(frame.args[1],frame.args[2] or "<br/>")
end
function p.ModuleToJSON(frame)
	return ModuleToJSON(frame.args[1])
end
 
function p.SelectFromWhere(from,whereName,whereValue)
	for key,value in pairs(from) do
		if value[whereName] and value[whereName] == whereValue then
			return value
		end
	end
	return nil
end
 
function p.SelectAllFromWhere(from,whereName,whereValue)
	local result = {}
	for key,value in pairs(from) do
		if value[whereName] and value[whereName] == whereValue then
			table.insert(result, value)
		end
	end
	return result
end
 
function p.SelectAllKeysFromWhere(from,whereName,whereValue)
	local result = {}
	for key,value in pairs(from) do
		if value[whereName] and value[whereName] == whereValue then
			table.insert(result, key)
		end
	end
	return result
end
 
return p

Ad blocker interference detected!


Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.

Also on Fandom

Random Wiki