(Testiing a new data addressing format) Tag: sourceedit |
No edit summary Tag: sourceedit |
||
(10 intermediate revisions by the same user not shown) | |||
Line 62: | Line 62: | ||
function p.GetSubValuePreProcessed(frame) |
function p.GetSubValuePreProcessed(frame) |
||
return utils.PreProcess(frame,GetSubValue(frame.args[1],frame.args[2],frame.args[3],frame.args[4])) |
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 |
end |
||
function p.GetValueFromPath(frame) |
function p.GetValueFromPath(frame) |
||
Line 72: | Line 83: | ||
end |
end |
||
function p.GetValueFromPathPreProcessed(frame) |
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) |
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