mNo edit summary |
No edit summary Tag: sourceedit |
||
(20 intermediate revisions by 2 users not shown) | |||
Line 2: | Line 2: | ||
-- Use the game's suffix to reach the appropriate subpage. |
-- Use the game's suffix to reach the appropriate subpage. |
||
-- Example: Data/CivRev2 |
-- Example: Data/CivRev2 |
||
+ | |||
+ | local utils = require("Module:TemplateUtils") |
||
+ | |||
--To get a simple text value |
--To get a simple text value |
||
Line 8: | Line 11: | ||
local value = data[entry][field] |
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 |
if type(value) == "table" then |
||
return table.concat(value, ", ") |
return table.concat(value, ", ") |
||
Line 26: | Line 40: | ||
return table.concat(t, separator) |
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 |
end |
||
Line 31: | Line 53: | ||
function p.GetValue(frame) |
function p.GetValue(frame) |
||
return GetValue(frame.args[1],frame.args[2],frame.args[3]) |
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 |
end |
||
function p.GetKeys(frame) |
function p.GetKeys(frame) |
||
return GetKeys(frame.args[1],frame.args[2] or "<br/>") |
return GetKeys(frame.args[1],frame.args[2] or "<br/>") |
||
end |
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 |
return p |
Latest revision as of 03:18, 22 August 2016
Documentation for this module may be created at Module:Data/doc
-- 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