|
|
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 |