m (Archer moved page Module:Role Advancement Rows to Module:Role Advancement Table without leaving a redirect: More accurate name) |
(Initial version of table generator) |
||
Line 1: | Line 1: | ||
local p = {} -- p stands for package | local p = {} -- p stands for package | ||
function p.makeRows( | local headers = '!Level\ | ||
local count, start, buffer = "" | ![[Health]]\ | ||
![[Armor Weight|A.W.]]\ | |||
![[Skills]]\ | |||
' | |||
local tableBegin = '{| class="wikitable"\ | |||
|+ {{{name|{{PAGENAME}} Level Advancement}}}\ | |||
' | |||
local tableEnd = '|}\ | |||
' | |||
function p.makeRows( text, start ) | |||
local count, row, rows, buffer | |||
rows = p.splitTextWithNulls( text ) | |||
if start == nil then | |||
if #rows > 6 then | |||
row = 6 | |||
else | |||
row = 1 | |||
end | |||
else | |||
row = start | |||
end | |||
buffer = "" | |||
for _, v in ipairs(rows) do | |||
buffer = buffer .. '|' .. tostring(row) .. "\n" | |||
buffer = buffer .. '|' .. "\n" | |||
buffer = buffer .. '|' .. "\n" | |||
buffer = buffer .. '|' .. v .. "\n" | |||
row = row + 1 | |||
end | |||
return buffer | return buffer | ||
end | |||
function p.makeHeaders( frame ) | |||
return "Not Implemented Yet!!" | |||
end | |||
function p.makeTable( frame ) | |||
local buffer = tableBegin | |||
local start | |||
if frame.args['start'] == nil then | |||
start = nil | |||
if frame.args['type'] ~= nil then | |||
if string.lower(frame.args['type']) == 'base' then | |||
start = 1 | |||
elseif string.lower(frame.args['type']) == 'spec' then | |||
start = 6 | |||
end | |||
end | |||
else | |||
start = tonumber( frame.args['start'] ) | |||
end | |||
if frame['args']['headers'] == nil then | |||
buffer = buffer .. headers | |||
else | |||
buffer = buffer .. makeHeaders( frame['args']['headers'] ) | |||
end | |||
buffer = buffer .. p.makeRows( frame['args']['rows'], start ) .. tableEnd | |||
return buffer | |||
end | |||
function p.splitTextWithNulls( text, seperator ) | |||
local buffer = '' | |||
local length = string.len(text) | |||
local pos = 1 | |||
local results = {} | |||
if length > 0 then | |||
if seperator == nil then | |||
seperator = "|" | |||
end | |||
while pos <= length do | |||
local char = string.sub(text, pos, pos) | |||
if (char ~= seperator) then | |||
buffer = buffer .. char | |||
else | |||
table.insert(results, buffer) | |||
buffer = "" | |||
end | |||
if (pos == length) then | |||
table.insert(results, buffer) | |||
end | |||
pos = pos + 1 | |||
end | |||
end | |||
return results | |||
end | end | ||
return p | return p |
Revision as of 11:41, 29 October 2022
Documentation for this module may be created at Module:Role Advancement Table/doc
local p = {} -- p stands for package
local headers = '!Level\
![[Health]]\
![[Armor Weight|A.W.]]\
![[Skills]]\
'
local tableBegin = '{| class="wikitable"\
|+ {{{name|{{PAGENAME}} Level Advancement}}}\
'
local tableEnd = '|}\
'
function p.makeRows( text, start )
local count, row, rows, buffer
rows = p.splitTextWithNulls( text )
if start == nil then
if #rows > 6 then
row = 6
else
row = 1
end
else
row = start
end
buffer = ""
for _, v in ipairs(rows) do
buffer = buffer .. '|' .. tostring(row) .. "\n"
buffer = buffer .. '|' .. "\n"
buffer = buffer .. '|' .. "\n"
buffer = buffer .. '|' .. v .. "\n"
row = row + 1
end
return buffer
end
function p.makeHeaders( frame )
return "Not Implemented Yet!!"
end
function p.makeTable( frame )
local buffer = tableBegin
local start
if frame.args['start'] == nil then
start = nil
if frame.args['type'] ~= nil then
if string.lower(frame.args['type']) == 'base' then
start = 1
elseif string.lower(frame.args['type']) == 'spec' then
start = 6
end
end
else
start = tonumber( frame.args['start'] )
end
if frame['args']['headers'] == nil then
buffer = buffer .. headers
else
buffer = buffer .. makeHeaders( frame['args']['headers'] )
end
buffer = buffer .. p.makeRows( frame['args']['rows'], start ) .. tableEnd
return buffer
end
function p.splitTextWithNulls( text, seperator )
local buffer = ''
local length = string.len(text)
local pos = 1
local results = {}
if length > 0 then
if seperator == nil then
seperator = "|"
end
while pos <= length do
local char = string.sub(text, pos, pos)
if (char ~= seperator) then
buffer = buffer .. char
else
table.insert(results, buffer)
buffer = ""
end
if (pos == length) then
table.insert(results, buffer)
end
pos = pos + 1
end
end
return results
end
return p