模組:CDD
外观
本模組是為了要實現考克斯特計號顯示用的{{CDD}}模板,即Template:CDD的顯示所建立的。原始版本之支援最多50個記號,現在則可以引用超過50個記號。
使用方法:
{{#invoke:CDD|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:CDD')._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 = {}
local origArgs
function p.CDD(frame)
-- For calling from #invoke.
if frame == mw.getCurrentFrame() then
origArgs = frame:getParent().args
else
origArgs = frame
end
local pframe = frame:getParent()
local args = pframe.args
if (origArgs['FileType'] and origArgs['FileType'] ~= '') then
filet=origArgs['FileType']
else
filet="png"
end
if (origArgs['CDDtype'] and origArgs['CDDtype'] ~= '') then
cddt=origArgs['CDDtype']
else
cddt="CDel_"
end
return p._CDD_(args,filet,cddt)
end
function p._CDD(args,ft,ct)
return p._CDD_(args,"png","CDel_")
end
function p._CDD_(args,ft,ct)
-- For calling from other Lua modules.
local body ='<span style="display:inline-block;">' -- create and start the output string
local filetype = ft
local CDDtype = ct
for v, x in ipairs(args) do -- process params, ignoring any names
pgname="." .. filetype
cpgname=CDDtype
if (x ~= '') then -- check for null/empty names
d = tonumber(x)
if (d ~= nil) then
if (d > 20) then
for i = 1,string.len(x) do
tmpstr = string.sub(x,i,i)
if (tonumber(tmpstr) > 3) then
body = body .. "[[File:".. cpgname .. string.sub(x,i,i) .. pgname .. "|link=]]"
else
body = body .. "[[File:".. cpgname .. string.sub(x,i,i) .. "x" .. pgname .. "|link=]]"
end
end
else
body = body .. "[[File:".. cpgname .. x .. pgname .. "|link=]]"
end
else
body = body .. "[[File:".. cpgname .. x .. pgname .. "|link=]]"
end
end
end
body = body .. "</span>" -- finish output string
return body -- return result
end
return p