Module:Sandbox
Jump to navigation
Jump to search
Documentation for this module may be created at Module:Sandbox/doc
local getArgument = require('Module:Arguments').getArgument
require('Module:Tools')
local p = {}
-- 1 CELL STRUCTURE
function format(s, c)
local output = ''
if c then
output = output .. '|class="stat-' .. c .. '"'
end
output = output .. '|' .. s .. '\n'
return output
end
-- 2 ATTRIBUTE FUNCTIONS
local var -- Single variable declaration used for all of the functions
-- 2.1 NAME
function name(s, a)
if s.name then
if a[0] then
var = s.name .. ' ' .. a[0] -- From SMT5 Skill Potential
else
var = s.name
end
return format(var)
else
error('"name" does not exist for given skill')
end
end
-- 2.2 COST
function cost(s, a)
if s.cost then
if s.cost ~= '' or s.cost ~= '—' then
local costtype = ''
if s.costtype then
costtype = ' ' .. s.costtype
end
var = s.cost .. costtype
else
var = '—'
end
return format(var, 'cost')
else
return ''
end
end
-- 2.3 RANGE
function range(s)
if s.range then
var = s.range
return format(var)
else
return ''
end
end
-- 2.4 DESCRIPTION
function description(s)
if s.description then
var = s.description
return format(var, 'align-left')
else
return ''
end
end
-- 2.5 LEVEL
function level(s, a)
if a[3] and a[3] ~= '-' then
var = a[3]
else
var = 'Innate'
end
return format(var, 'level')
end
-- 2.6 RANK
function rank(s, a)
if a[3] then
var = a[3]
return format(var, 'rank')
else
error('Rank/Inheritance value must be set using parameter 3')
end
end
-- 2.7 INHERITANCE
function inherit(s, a)
if a[3] then
if a[3]:lower() == 'y' then
var = '<span style="color:lime;">✔</span>'
else
var = '<span style="color:red;">✘</span>'
end
return format(var, 'inherit')
else
error('Rank/Inheritance value must be set using parameter 3')
end
end
-- 2.8 FUSION
function fusion(s)
if s.fusion then
var = s.fusion
return format(var, 'fusion')
else
return ''
end
end
-- 2.9 PREREQUISITE
function prerequisite(s)
if args[4] then
var = args[4]
return format(var)
else
return ''
end
end
-- 3 IMPLEMENTATION
-- 3.1 INDEX TABLE
local indexTable = {
['smt1'] = 1,
['smt5'] = 1,
['mip'] = 3,
['p3'] = 2
}
-- 3.2 TYPE TABLE
local typeTable = {
{ -- 1
name,
cost,
description,
level
},
{ -- 2
name,
cost,
description,
level,
fusion
},
{ -- 3
name,
cost,
range,
description,
rank,
inherit
},
}
-- 3.3 MAIN FUNCTION
function p.Main(frame)
local args = frame.args
local output = ''
if args[1] then
if args[2] then
local skill = mw.loadData('Module:Data/Skill/' .. args[1]:lower()).skill
if string.sub(args[2], -2, -2) == '+' or string.sub(args[2], -2, -2) == '-' then -- For SMT5 Skill Potential
args[0] = string.sub(args[2], -2, -1) -- Passes to args[0] as a message for name and cost functions
args[2] = trim(string.sub(args[2]:lower(), 1, -3))
end
if skill[args[2]:lower()] then
skill = skill[args[2]:lower()]
local passTable = typeTable[indexTable[args[1]:lower()]]
local i = 0
while i < #passTable do
output = output .. passTable[i+1](skill, args)
i = i + 1
end
return output
else
error('The skill "' .. args[2]:lower() .. '" does not exist at Module:Data/Skill/' .. args[1]:lower())
end
else
error("No skill argument was passed")
end
else
error("No arguments were passed")
end
end
return p