Module:Consecutive links

From Caves of Qud Wiki
Jump to navigation Jump to search

local p = {}
local text_util = require('Module:Text Utility')

function p.split(splitstr, separator)
  local b = text_util.split(splitstr, separator)
  return b
end

function p.parse(args, type)
frame = mw.getCurrentFrame()
if args.args ~= nil then
  args = args.args
end
local type = type or 'links'
local separator = '%s*' .. (args[2] or ',') .. '%s*'
local replacer = args[3] or ', '
local prefix = args[4] or ''
local postfix = args[5] or ''
local linkprefix = args[6] or ''
local linkpostfix = args[7] or ''
local textprefixindicator = args[8] or ''
local textprefix = args[9] or ''

local b = p.split(args[1], separator)
local returnstr = ''
local returnstrformat

if type == 'links' then
  returnstrformat = function(linkprefix, word, linkpostfix, indicator, textprefix)
  	fronttext = ''
  	if indicator ~= '' and string.sub(word, 1, string.len(indicator)) == indicator then
  		word = string.sub(word, string.len(indicator) + 1)
  		fronttext = textprefix
  	end
    return fronttext .. '[[' .. linkprefix .. word  .. linkpostfix .. ']]'
    end
elseif type == 'templates' then
  returnstrformat = function(linkprefix, word, linkpostfix, indicator, textprefix)
    return frame:expandTemplate{title = linkprefix, args={word, linkpostfix}}
    end
else
  error('Type must be either links or templates!')
end
for i, word in ipairs(b) do
  if returnstr ~= '' then
    returnstr = returnstr .. replacer 
  end
  returnstr = returnstr .. returnstrformat(linkprefix, word, linkpostfix, textprefixindicator, textprefix)
end
return prefix .. returnstr .. postfix
end

function p.consecutivelinks(frame)
  return p.parse(frame.args, 'links')
end

function p.consecutivetemplates(frame)
  return p.parse(frame.args, 'templates')
end


function p.test(frame)
  str = '{{SkillID to name|Axe}} </br>{{SkillID to name|Axe_Expertise}}'
  separator = '</br>'
  replacer = '</div><div class{{=}}"qud-skill-entry">'
local prefix ='<div class{{=}}"qud-skill-entry">'
local postfix = '</div>'
  args = {str, separator, replacer, prefix, postfix}
  return p.parse(args, 'links')
end
return p