Module:EncounterTable: Difference between revisions

1,179 bytes removed ,  22:07, 15 November 2019
moved stuff to new module
No edit summary
(moved stuff to new module)
Line 1: Line 1:
local p = {}
local p = {}
local process_args = require('Module:ProcessArgs')
local process_args = require('Module:ProcessArgs')
 
local text_util = require('Module:Text Utility')
--a lot taken from lol gamepedia
function p.gsplit( text, pattern, plain )
if not pattern then pattern = '%s*,%s*' end
local s, l = 1, text:len()
return function ()
if s then
local e, n = text:find( pattern, s, plain )
local ret
if not e then
ret = text:sub( s )
s = nil
elseif n < e then
-- Empty separator!
ret = text:sub( s, e )
if e < l then
s = e + 1
else
s = nil
end
else
ret = e > s and text:sub( s, e - 1 ) or ''
s = n + 1
end
return ret
end
end, nil, nil
end
 
function p.split(text, pattern, plain)
if not text then
return {}
end
local ret = {}
for m in p.gsplit(text, pattern, plain) do
ret[#ret+1] = m
end
return ret
end
 
function p.splitArgs(input, fieldlist, sep)
    if not input or input == '' then return end
    sep = sep or '%s*;;;%s*'
    local result = {}
    local inputTbl = p.split(input,sep)
    for i, v in ipairs(fieldlist) do
        if not inputTbl[i] then
            error(('Missing parameter %s - maybe wrong child template?'):format(v))
        end
        if inputTbl[i] ~= '' then
            result[v] = inputTbl[i]
        end
    end
    return result
end


function p.splitEncounterTableArgs(row)
function p.splitEncounterTableArgs(row)
     local TABLE_ARGS = { 'table', 'item', 'quantity', 'weight' }
     local TABLE_ARGS = { 'table', 'item', 'quantity', 'weight' }
     return p.splitArgs(row, TABLE_ARGS)
     return text_util.splitArgs(row, TABLE_ARGS)
end
end


Line 116: Line 62:
end
end


function p.test(s)
  return s:match('^(.+)%s+%w*$')
end
return p
return p