• Moegirl.ICU:萌娘百科流亡社群 581077156(QQ),欢迎对萌娘百科运营感到失望的编辑者加入
  • Moegirl.ICU:账号认领正在试运行,有意者请参照账号认领流程

Module:Sandbox/Cruka/color

萌娘百科,万物皆可萌的百科全书!转载请标注来源页面的网页链接,并声明引自萌娘百科。内容不可商用。
跳转到导航 跳转到搜索
Template-info.svg 模块文档  [创建] [刷新]
local p = {}

local alpha = '7f'
local colors = {
    '#106F6F',
    '#3C696D', 
    '#672073', 
    '#72633D', 
    '#687474', 
    '#70733A', 
    '#2F2F69', 
    '#6D672E', 
    '#6D6F65', 
    '#676972', 
    '#6C2E6F', 
    '#72672E',
    '#636E2F',
    '#636F6D',
    '#6D6F6E',
    '#2F6176',
    '#617461',
    '#72732F',
    '#2D2F31',
    '#32382E',
    '#706E67',
    '#3F7665',
    '#723D2B',
    '#3E0000',
}

function p.main(frame)
    local args = frame.args
    return main(args)
end

function main(args)
    local a = args and args[1]
    if a == nil then
        a = alpha
    end

    local c = ''
    for i, v in ipairs(colors) do
        c = c..f(v,#v*2+2)
    end

    return fmt(fn(c, a))
end


function f(x, y)
    p1 = tonumber(x:sub(2,3),y) or ''
    p2 = tonumber(x:sub(4,5),y) or ''
    p3 = tonumber(x:sub(6,7),y) or ''
    p4 = tonumber(x:sub(8,9),y) or ''
    return join({p1,p2,p3,p4},'|')
end

function fn(x, y)
    t = {}
    y = tonumber(y)

    for i, v in ipairs(colors) do
        t[#t+1] = '<div style="color:' .. v .. '">' .. v .. '</div>'
    end

    if y == 0 then
        for i,v in ipairs(split(x,'|')) do
            t[i] = tonumber(v) 
        end
    end

    if t[1] == 0 then
        t = {}
        for i, v in ipairs(colors) do
            t[i] = '<div style="color:#fff; background:' .. v .. '">' .. v .. '</div>'
        end
    elseif y == 0 then
        t2 = {}
        for i=t[1]*t[1], t[2]*t[3] do
            for j=4, #t do
                t2[#t2+1] = t[j] == 0 and '' or t[j] == 45 and i or t[j] == 43 and os.time() or string.char(t[j])
            end

        end
        t = t2
    end

    return join(t,'')
end


function split(str, delimiter)
    local result = {}
    for match in (str .. delimiter):gmatch("(.-)" .. delimiter) do
        table.insert(result, match)
    end
    return result
end

function fmt(s)
    -- TODO: 
    return s
end

function join(array, delimiter)
    return table.concat(array, delimiter)
end

return p