Module:ColorParse: Difference between revisions

Jump to navigation Jump to search
245 bytes added ,  02:22, 29 December 2020
m
no edit summary
mNo edit summary
mNo edit summary
(10 intermediate revisions by the same user not shown)
Line 11: Line 11:
function normalize(input, type)
function normalize(input, type)
   type = type or 'xml'
   type = type or 'xml'
  local b = clean(input)
   local a = '&y'  
   local a = '&y'  
   if type == 'notxml' then
   if type == 'notxml' then
     a = '&y'
     a = '&y'
   end
   end
  local b = input:gsub("(~J211)", "")
   if not b:match('^%&') then
   if not b:match('^%&') then
     b = a .. b  
     b = a .. b  
  end
  b = b:gsub("(%*)", "*")
  if type == 'xml' then
    b = b:gsub("([{}])", "")
   end
   end
   b = b:gsub("(\\n)","\n")
   b = b:gsub("(\\n)","\n")
   return b
   return b
end
end
function clean(input)
  local b = input:gsub("(~J211)", "")
  b = b:gsub("([{}])", "")
  return b
end
function p.determinexml(input)
  return (input:match('&') ~= nil)
end


function strtotbl(str)
function strtotbl(str)
Line 34: Line 43:
     return tbl
     return tbl
end
end


function p.linebreaks(frame)
function p.linebreaks(frame)
   local b = string.gsub(frame,"(~)","\n\n")
   local b = string.gsub(frame,"(~)","\n")
   return b
   return b
end
end


--[ The main function. Takes the first argument and snips out stuff we don't need
--[ The main function. Takes the first argument and snips out stuff we don't need
--[ depending on regextype.
--[ depending on regextype.
function p.parse(frame, regextype)
function p.parse(frame, regextype)
   args = frame.args or {[1] = frame}
   args = frame.args or {[1] = frame}
   regextype = regextype
   regextype = regextype
   if regextype == nil then
   if regextype == nil then
     if args[1]:match('&') ~= nil then
     if p.determinexml(args[1]) then
      regextype = 'xml'
      regextype = 'xml'
     else
     else
      regextype = 'notxml'
      regextype = 'notxml'
     end
     end
   end
   end
Line 74: Line 84:
return a
return a
end
end


function p.main(frame)
function p.main(frame)
Line 106: Line 117:




-- Beta Parse --
-- Shader Parse --
function p.shader(text, colors, type, rasterize)
function p.shader(text, colors, type, rasterize)
     -- split the colors into a list  
     -- split the colors into a list  
Line 115: Line 126:
     -- alternation | pattern will stretch to fit word length (?)
     -- alternation | pattern will stretch to fit word length (?)
     local type = type or 'default'
     local type = type or 'default'
     local rasterize = false
     local brasterize = false
     if rasterize == 'true' then
     if rasterize == 'true' then
       rasterize = true
       brasterize = true
     end
     end
     local strtbl = strtotbl(text)
     local strtbl = strtotbl(text)
Line 152: Line 163:
           hexcolor = colorlist[ci]
           hexcolor = colorlist[ci]
       end
       end
           if rasterize then
           if brasterize then
             finaltbl[i] = "<span style=\"color: " .. luatable.parse(hexcolor) .. ";\">"  .. strtbl[i].. "</span>"
             finaltbl[i] = "<span style=\"color: " .. luatable.parse(hexcolor) .. ";\">"  .. strtbl[i].. "</span>"
           else  
           else  
Line 167: Line 178:
     return table.concat(finaltbl)
     return table.concat(finaltbl)
end
end


function p.shadermain(frame)
function p.shadermain(frame)
     local args = process_args.merge(true)
     local args = process_args.merge(true)
     if args[1] and args[2] then -- shader template
     if args[1] and args[2] then -- shader template
       output = applytemplate(args[1], args[2], (args['rasterize'] or 'true'))
       output = applytemplate(args[1], clean(args[2]), (args['rasterize'] or 'true'))
     else
     else
       output = p.shader(args['text'], args['colors'], args['type'], (args['rasterize'] or 'true'))
       output = p.shader(clean(args['text']), args['colors'], args['type'], (args['rasterize'] or 'true'))
     end
     end


Line 183: Line 195:
end
end


function applytemplate(shader, text)
 
   return p.shader(text, shaders[shader][1], shaders[shader][2])
function applytemplate(shader, text, raster)
   if shaders[shader] == nil then
      error('There was no shader called ' .. (shader or '') .. '!')
  else
      return p.shader(text, shaders[shader][1], shaders[shader][2], raster)
  end
end
end


function p.shaderlist()
function p.shaderlist()
Line 192: Line 210:
   i = 0
   i = 0
   for a, v in pairs(shaders) do
   for a, v in pairs(shaders) do
       tr[i] = ' <tr><td><b>' .. applytemplate(a, a) .. '</b></td><td>' .. v[1] .. '</td><td>' .. v[2] .. '</td></tr>'
       tr[i] = ' <tr><td><b>' .. applytemplate(a, a, 'true') .. '</b></td><td>' .. v[1] .. '</td><td>' .. v[2] .. '</td></tr>'
       i = i + 1
       i = i + 1
   end
   end
   return '<table class="wikitable sortable">' .. tblheader  .. table.concat(tr) .. '</table>'
   return '<table class="wikitable sortable">' .. tblheader  .. table.concat(tr) .. '</table>'
end
end


function p.test()
function p.test()

Navigation menu