Module:ColorParse: Difference between revisions

From Caves of Qud Wiki
Jump to navigation Jump to search
(put space back in span style)
mNo edit summary
Line 1: Line 1:
local p = {}
local p = {}


local luatable = {
local luatable = require'Module:Color'
            ['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"
}
--[Utility stuff]--
--[Utility stuff]--



Revision as of 18:29, 22 October 2019

Template-info.png Documentation

This module parses the game's color codes in strings and formats them for the wiki. This shouldn't be directly called anymore. Use Template:Qud text instead. If the text in question has pronouns in syntax =pronouns.(pronountype)= or a similar style, use Template:Grammar.

Usage

{{#invoke: ColorParse | parse |(your text here)}}

Code:

{{#invoke: ColorParse | parse |&RS&rt&Ko&yp&Ys&Rv&ra&Kl&yi&Yn&Rn&y}}

Result:

Lua error at line 40: There was no specified color for color code: R.


local p = {}

local luatable = require'Module:Color'

--[Utility stuff]--

function normalize(string, type)
  type = type or ''
  local b = string.gsub(string,"(~J211)", "")
  if type == '' then
    b = string.gsub(b,"([{}])", "")
  elseif type == 'notxml' then
    b = string.gsub(b,"(\\n)","\n")
  end
  return b
end


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

--[ The main function. Takes the first argument and snips out stuff we don't need
--[ depending on regextype.

function p.parse(frame, regextype)
  regextype = regextype or ''
  --[Determine regex type]
  local regex = "(&)(%w)([^&\n]*)"
  if regextype == 'notxml' then
    regex = "(&)(%w)([^&\n]*)"
  end

  local b = normalize(frame.args[1],regextype)
  local a = string.gsub(b, regex, function(_,color,text)
       if text ~= nil or text ~= "" then
          local hexcolor = luatable[color]
          if hexcolor == nil then
            error ("There was no specified color for color code: " .. color)
          end
          text = text or ""
          return "<span style=\"color: " .. hexcolor .. ";\">"  .. text .. "</span>"
       else
          return ""
       end
  end)
return a
end

function p.nonxmlparse(frame)
  return p.parse(frame, 'notxml')
end

function p.moduleparse(frame)
  return p.parse({["args"] = {frame}})
end

function p.modulenonxmlparse(frame)
  return p.nonxmlparse({["args"] = {frame}})
end

return p