Ansi 终端颜色 |
|
luarocks install ansicolors
),虽然基于下面的代码,但背景名称和用户界面有所不同 (luarocks doc ansicolors
)。
以下是 Rob 的原始版本
local pairs = pairs local tostring = tostring local setmetatable = setmetatable local schar = string.char module 'ansicolors' local colormt = {} function colormt:__tostring() return self.value end function colormt:__concat(other) return tostring(self) .. tostring(other) end function colormt:__call(s) return self .. s .. _M.reset end colormt.__metatable = {} local function makecolor(value) return setmetatable({ value = schar(27) .. '[' .. tostring(value) .. 'm' }, colormt) end local colors = { -- attributes reset = 0, clear = 0, bright = 1, dim = 2, underscore = 4, blink = 5, reverse = 7, hidden = 8, -- foreground black = 30, red = 31, green = 32, yellow = 33, blue = 34, magenta = 35, cyan = 36, white = 37, -- background onblack = 40, onred = 41, ongreen = 42, onyellow = 43, onblue = 44, onmagenta = 45, oncyan = 46, onwhite = 47, } for c, v in pairs(colors) do _M[c] = makecolor(v) end
以下是一些使用它的方法
require "ansicolors" print(ansicolors.red .. 'hello from the Red world!' .. ansicolors.reset) print(ansicolors.blue .. 'go blue!' .. ansicolors.clear) -- clear is a synonym for reset print(ansicolors.underscore .. colors.yellow .. colors.onblue .. 'crazy stuff' .. ansicolors.reset) print(ansicolors.red 'no need to worry about resetting here!') -- functional interface