Module:Math-colors/sandbox

--

-- DO NOT USE! -- -- This is mostly hypothetical, since Module:Color doesn't exist yet(?).

local p = {} local color = require("Dev:Color") local getArgs = require("Dev:Arguments").getArgs local userError = require("Dev:User error")

--% Describe the following function here. --@ args (table) --@ args.expression (string) --@ [args.bgColor] (string) defaults to "white" --@ [args.textColor] (string) defaults to "black" --: (str) function p.render(args) local expression = args.expression

if not expression then error("missing expression", 0) end

local _, bgColor = xpcall(function        local tmp = color(args.bgColor or "white")

return tmp.red .. "," .. tmp.green .. "," .. tmp.blue end, function error("invalid background color", 0) end)

local _, textColor = xpcall(function        local tmp = color(args.textColor or "black")

return tmp.red .. "," .. tmp.green .. "," .. tmp.blue end, function error("invalid text color", 0) end)

local function parseMath(expression) local frame = mw.getCurrentFrame

return frame:preprocess("$$" .. expression .. "$$") end

local colored = mw.html.create("span") :addClass("hidden") :css("display", "inline") :wikitext(parseMath( "\\pagecolor[RGB]{" .. bgColor .. "}" ..           "{\\color[RGB]{" .. textColor .. "}" .. expression .. "}"       ))

local plain = mw.html.create("span") :css("display", "none") :wikitext(parseMath(expression))

return tostring(colored) .. tostring(plain) end

--% Describe the following function here. --@ frame (table) The --- frame object --: (str) function p.main(frame) local args = getArgs(frame) local success, response = pcall(p.render, {       expression = args.expression,        bgColor = args["bg-color"],        textColor = args["text-color"]    })

return success and response or userError(response) end

return p --