Module:Role Advancement Table: Difference between revisions

From Drifter's Wiki TEST
Jump to navigation Jump to search
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( frame )
local headers = '!Level\
local count, start, buffer = ""
![[Health]]\
count = tonumber(frame.args['count'])
![[Armor Weight|A.W.]]\
start = tonumber(frame.args['start'])
![[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