Module:Consecutive links: Difference between revisions

From Caves of Qud Wiki
Jump to navigation Jump to search
(ignores white space and can specify what the replacer char can be)
mNo edit summary
 
(14 intermediate revisions by 2 users not shown)
Line 1: Line 1:
local p = {}
local p = {}
local text_util = require('Module:Text Utility')


function p.parse(frame)
function p.split(splitstr, separator)
local separator = frame.args[2]
  local b = text_util.split(splitstr, separator)
local replacer = frame.args[3]
  return b
local b = string.gsub(frame.args[1], "%s*" .. separator .. "%s*", "]]" .. replacer .. "[[")
end
return "[[".. b .. "]]"
 
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
end
return p
return p

Latest revision as of 19:34, 19 December 2020


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