Module:Coxeter–Dynkin diagram/sandbox
Appearance
This is the module sandbox page for Module:Coxeter–Dynkin diagram (diff). See also the companion subpage for test cases (run). |
This module is rated as ready for general use. It has reached a mature form and is thought to be relatively bug-free and ready for use wherever appropriate. It is ready to mention on help pages and other Wikipedia resources as an option for new users to learn. To reduce server load and bad output, it should be improved by sandbox testing rather than repeated trial-and-error editing. |
This Lua module is used on approximately 1,100 pages and changes may be widely noticed. Test changes in the module's /sandbox or /testcases subpages, or in your own module sandbox. Consider discussing changes on the talk page before implementing them. |
This module implements Template:Coxeter–Dynkin diagram. It is invoked as
{{#invoke:Coxeter–Dynkin diagram|CDD}}
though the parameter is ignored; instead it uses the parameters passed to the template. See the template documentation for how that is used.
For using this from other Lua modules, first load the module.
local CDD = require('Module:Coxeter–Dynkin diagram')._CDD
You can then use it with the following syntax.
CDD{"node", "3", "node"}
See the template documentation for possible inputs.
-- module to turn a parameter list into a list of [[Coxeter–Dynkin diagram]] images.
-- See the template documentation or any example for how it is used and works.
local p = {}
-- list of file names (minus 'CDel ' and extension) which are available as an
-- SVG version which must be perfectly compatible in appearance and public domain.
-- Uses spaces not underscores.
local has_svg = {'nodes', 'node h', '2', '3', '4', '5', '6', '7', '8', '9',
'10', '11',
'label2'}
function show_image(x, double)
local suffix = "|link=]]"
if double then
suffix = "|x46px|link=]]"
end
for i, svgfile in ipairs(has_svg) do
if svgfile == string.gsub(x, '_', ' ') then
return "[[File:CDel_" .. x .. ".svg" .. suffix
end
end
return "[[File:CDel_" .. x .. ".png" .. suffix
end
function p.CDD(frame)
-- For calling from #invoke.
local pframe = frame:getParent()
local args = pframe.args
return p._CDD(args)
end
function p._CDD(args)
-- For calling from other Lua modules.
local body ='<span style="display:inline-block;">' -- create and start the output string
local double = false -- experimental only, scale to 2x and see what happens
for v, x in ipairs(args) do -- process params, ignoring any names
if (x == 'DOUBLE') then
double = true
elseif (x ~= '') then -- check for null/empty names
body = body .. show_image(x, double) -- write file for this parameter
end
end
body = body .. "</span>" -- finish output string
return body -- return result
end
return p