Module:ColorParse: Difference between revisions

1,827 bytes removed ,  17:33, 17 September 2019
cleaned up my very first lua module into something actually legible. also, now properly preserves whitespace if there is is a space between the color code and the actual text
(nonxml support for modules)
(cleaned up my very first lua module into something actually legible. also, now properly preserves whitespace if there is is a space between the color code and the actual text)
Line 1: Line 1:
local p = {}
local p = {}


function p.parse(frame)
local luatable = {
local b = string.gsub(frame.args[1],"([{}])", "")
local b = string.gsub(b,"(~J211)", "")
local a = string.gsub(b,"(&)(%w)([^&\n]*)", function(_,color,text)
        local luatable = {
             ['r'] = "#a64a2e",
             ['r'] = "#a64a2e",
             ['R'] = "#d74200",
             ['R'] = "#d74200",
Line 24: Line 20:
             ['o'] = "#f15f22",
             ['o'] = "#f15f22",
             ['O'] = "#e99f10"
             ['O'] = "#e99f10"
        }
}
--[Utility stuff]--


        return "<span style=\"color: " .. luatable[color] .. ";\">"  .. text .. "</span>"
function normalize(string, type)
    end)
  type = type or ''
local c
  local b = string.gsub(string,"(~J211)", "")
if frame.args[2] ~= nil and frame.args[2] == 'no linebreak parse' then
  if type == '' then
c = string.gsub(a,"(\n)", "</br>")
    b = string.gsub(b,"([{}])", "")
else
  elseif type == 'notxml' then
c = a
    b = string.gsub(b,"(\\n)","</br>")
  end
  return b
end
end
return c
 
 
function linebreaks(frame)
  local b = string.gsub(frame.args[1],"(~)","</br>")
  return b
end
end


function p.linebreaks(frame)
--[ The main function. Takes the first argument and snips out stuff we don't need
local b = string.gsub(frame.args[1],"(~)","</br>")
--[ depending on regextype.
return b
 
function p.parse(frame, regextype)
  regextype = regextype or ''
  --[Determine regex type]
  local regex = "(&amp;)(%w)(%s*)([^&\n]*)"
  if regextype == 'notxml' then
    regex = "(&)(%w)(%s*)([^&\n]*)"
  end
 
  local b = normalize(frame.args[1],regextype)
  local a = string.gsub(b, regex, function(_,color,space1,text)
        local hexcolor = luatable[color]
        if hexcolor == nil then
          error ("There was no specified color for color code: " .. color)
        end
        space1 = space1 or ""
        text = text or ""
        return space1 .. "<span style=\"color: " .. hexcolor .. ";\">"  .. text .. "</span>"
  end)
return a
end
end


function p.nonxmlparse(frame)
function p.nonxmlparse(frame)
local a = string.gsub(frame.args[1],"(\\n)","</br>")
  return p.parse(frame, 'notxml')
local b = string.gsub(a,"(&)(%w)([^&\n]*)", function(_,color,text)
        local luatable = {
            ['r'] = "#a64a2e",
            ['R'] = "#d74200",
            ['g'] = "#009403",
            ['G'] = "#00c420",
            ['b'] = "#0048bd",
            ['B'] = "#0096ff",
            ['c'] = "#40a4b9",
            ['C'] = "#77bfcf",
            ['m'] = "#b154cf",
            ['M'] = "#da5bd6",
            ['w'] = "#98875f",
            ['W'] = "#cfc041",
            ['k'] = "#0f3b3a",
            ['K'] = "#155352",
            ['y'] = "#b1c9c3",
            ['Y'] = "#FFFFFF",
            ['o'] = "#f15f22",
            ['O'] = "#e99f10"
        }
 
        return "<span style=\"color: " .. luatable[color] .. ";\">"  .. text .. "</span>"
    end)
return b
end
end


function p.moduleparse(frame)
function p.moduleparse(frame)
local b = string.gsub(frame,"([{}])", "")
  return p.parse({["args"] = {frame}})
local b = string.gsub(b,"(~J211)", "")
local a = string.gsub(b,"(&amp;)(%w)([^&\n]*)", function(_,color,text)
        local luatable = {
            ['r'] = "#a64a2e",
            ['R'] = "#d74200",
            ['g'] = "#009403",
            ['G'] = "#00c420",
            ['b'] = "#0048bd",
            ['B'] = "#0096ff",
            ['c'] = "#40a4b9",
            ['C'] = "#77bfcf",
            ['m'] = "#b154cf",
            ['M'] = "#da5bd6",
            ['w'] = "#98875f",
            ['W'] = "#cfc041",
            ['k'] = "#0f3b3a",
            ['K'] = "#155352",
            ['y'] = "#b1c9c3",
            ['Y'] = "#FFFFFF",
            ['o'] = "#f15f22",
            ['O'] = "#e99f10"
        }
 
        return "<span style=\"color: " .. luatable[color] .. ";\">"  .. text .. "</span>"
    end)
local c
c = string.gsub(a,"(\n)", "</br>")
return c
end
end


function p.modulenonxmlparse(frame)
function p.modulenonxmlparse(frame)
local a = string.gsub(frame,"(\\n)","</br>")
  return p.nonxmlparse({["args"] = {frame}})
local b = string.gsub(a,"(&)(%w)([^&\n]*)", function(_,color,text)
        local luatable = {
            ['r'] = "#a64a2e",
            ['R'] = "#d74200",
            ['g'] = "#009403",
            ['G'] = "#00c420",
            ['b'] = "#0048bd",
            ['B'] = "#0096ff",
            ['c'] = "#40a4b9",
            ['C'] = "#77bfcf",
            ['m'] = "#b154cf",
            ['M'] = "#da5bd6",
            ['w'] = "#98875f",
            ['W'] = "#cfc041",
            ['k'] = "#0f3b3a",
            ['K'] = "#155352",
            ['y'] = "#b1c9c3",
            ['Y'] = "#FFFFFF",
            ['o'] = "#f15f22",
            ['O'] = "#e99f10"
        }
 
        return "<span style=\"color: " .. luatable[color] .. ";\">"  .. text .. "</span>"
    end)
return b
end
end


return p
return p