util/termcolours.lua
author Kim Alvefur <zash@zash.se>
Sun, 25 Nov 2018 13:16:17 +0100
changeset 9647 bb8486491b48
parent 8371 3629639d5fa9
child 8558 4f0f5b49bb03
permissions -rw-r--r--
mod_proxy65: Check what port is used at the time of the query Could have changed between startup and time of request
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1523
841d61be198f Remove version number from copyright headers
Matthew Wild <mwild1@gmail.com>
parents: 896
diff changeset
     1
-- Prosody IM
2923
b7049746bd29 Update copyright headers for 2010
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
     2
-- Copyright (C) 2008-2010 Matthew Wild
b7049746bd29 Update copyright headers for 2010
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
     3
-- Copyright (C) 2008-2010 Waqas Hussain
5776
bd0ff8ae98a8 Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 4698
diff changeset
     4
--
758
b1885732e979 GPL->MIT!
Matthew Wild <mwild1@gmail.com>
parents: 615
diff changeset
     5
-- This project is MIT/X11 licensed. Please see the
b1885732e979 GPL->MIT!
Matthew Wild <mwild1@gmail.com>
parents: 615
diff changeset
     6
-- COPYING file in the source package for more information.
519
cccd610a0ef9 Insert copyright/license headers
Matthew Wild <mwild1@gmail.com>
parents: 262
diff changeset
     7
--
7201
48d167f652ad util.termcolours: Silence luacheck warning
Kim Alvefur <zash@zash.se>
parents: 6780
diff changeset
     8
--
48d167f652ad util.termcolours: Silence luacheck warning
Kim Alvefur <zash@zash.se>
parents: 6780
diff changeset
     9
-- luacheck: ignore 213/i
519
cccd610a0ef9 Insert copyright/license headers
Matthew Wild <mwild1@gmail.com>
parents: 262
diff changeset
    10
cccd610a0ef9 Insert copyright/license headers
Matthew Wild <mwild1@gmail.com>
parents: 262
diff changeset
    11
262
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    12
local t_concat, t_insert = table.concat, table.insert;
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    13
local char, format = string.char, string.format;
4698
739f7ae1a01e util.termcolours: tohtml() for converting output to HTML. I don't know.
Matthew Wild <mwild1@gmail.com>
parents: 3749
diff changeset
    14
local tonumber = tonumber;
262
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    15
local ipairs = ipairs;
3749
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
    16
local io_write = io.write;
7206
be8b88ad35a3 util.termcolours: Add 256 color support
Kim Alvefur <zash@zash.se>
parents: 7202
diff changeset
    17
local m_floor = math.floor;
7208
a6c4530c1bc0 util.termcolours: Validate color codes, fixes traceback
Kim Alvefur <zash@zash.se>
parents: 7207
diff changeset
    18
local type = type;
a6c4530c1bc0 util.termcolours: Validate color codes, fixes traceback
Kim Alvefur <zash@zash.se>
parents: 7207
diff changeset
    19
local setmetatable = setmetatable;
a6c4530c1bc0 util.termcolours: Validate color codes, fixes traceback
Kim Alvefur <zash@zash.se>
parents: 7207
diff changeset
    20
local pairs = pairs;
3749
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
    21
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
    22
local windows;
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
    23
if os.getenv("WINDIR") then
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
    24
	windows = require "util.windows";
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
    25
end
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
    26
local orig_color = windows and windows.get_consolecolor and windows.get_consolecolor();
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
    27
6780
5de6b93d0190 util.*: Remove use of module() function, make all module functions local and return them in a table at the end
Kim Alvefur <zash@zash.se>
parents: 5776
diff changeset
    28
local _ENV = nil;
262
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    29
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    30
local stylemap = {
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    31
			reset = 0; bright = 1, dim = 2, underscore = 4, blink = 5, reverse = 7, hidden = 8;
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    32
			black = 30; red = 31; green = 32; yellow = 33; blue = 34; magenta = 35; cyan = 36; white = 37;
8371
3629639d5fa9 util.termcolours: Split a long line [luacheck]
Kim Alvefur <zash@zash.se>
parents: 7209
diff changeset
    33
			["black background"] = 40; ["red background"] = 41; ["green background"] = 42; ["yellow background"] = 43;
3629639d5fa9 util.termcolours: Split a long line [luacheck]
Kim Alvefur <zash@zash.se>
parents: 7209
diff changeset
    34
			["blue background"] = 44; ["magenta background"] = 45; ["cyan background"] = 46; ["white background"] = 47;
262
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    35
			bold = 1, dark = 2, underline = 4, underlined = 4, normal = 0;
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    36
		}
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    37
3749
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
    38
local winstylemap = {
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
    39
	["0"] = orig_color, -- reset
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
    40
	["1"] = 7+8, -- bold
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
    41
	["1;33"] = 2+4+8, -- bold yellow
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
    42
	["1;31"] = 4+8 -- bold red
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
    43
}
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
    44
4698
739f7ae1a01e util.termcolours: tohtml() for converting output to HTML. I don't know.
Matthew Wild <mwild1@gmail.com>
parents: 3749
diff changeset
    45
local cssmap = {
739f7ae1a01e util.termcolours: tohtml() for converting output to HTML. I don't know.
Matthew Wild <mwild1@gmail.com>
parents: 3749
diff changeset
    46
	[1] = "font-weight: bold", [2] = "opacity: 0.5", [4] = "text-decoration: underline", [8] = "visibility: hidden",
739f7ae1a01e util.termcolours: tohtml() for converting output to HTML. I don't know.
Matthew Wild <mwild1@gmail.com>
parents: 3749
diff changeset
    47
	[30] = "color:black", [31] = "color:red", [32]="color:green", [33]="color:#FFD700",
739f7ae1a01e util.termcolours: tohtml() for converting output to HTML. I don't know.
Matthew Wild <mwild1@gmail.com>
parents: 3749
diff changeset
    48
	[34] = "color:blue", [35] = "color: magenta", [36] = "color:cyan", [37] = "color: white",
739f7ae1a01e util.termcolours: tohtml() for converting output to HTML. I don't know.
Matthew Wild <mwild1@gmail.com>
parents: 3749
diff changeset
    49
	[40] = "background-color:black", [41] = "background-color:red", [42]="background-color:green",
739f7ae1a01e util.termcolours: tohtml() for converting output to HTML. I don't know.
Matthew Wild <mwild1@gmail.com>
parents: 3749
diff changeset
    50
	[43]="background-color:yellow",	[44] = "background-color:blue", [45] = "background-color: magenta",
739f7ae1a01e util.termcolours: tohtml() for converting output to HTML. I don't know.
Matthew Wild <mwild1@gmail.com>
parents: 3749
diff changeset
    51
	[46] = "background-color:cyan", [47] = "background-color: white";
739f7ae1a01e util.termcolours: tohtml() for converting output to HTML. I don't know.
Matthew Wild <mwild1@gmail.com>
parents: 3749
diff changeset
    52
};
739f7ae1a01e util.termcolours: tohtml() for converting output to HTML. I don't know.
Matthew Wild <mwild1@gmail.com>
parents: 3749
diff changeset
    53
262
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    54
local fmt_string = char(0x1B).."[%sm%s"..char(0x1B).."[0m";
6780
5de6b93d0190 util.*: Remove use of module() function, make all module functions local and return them in a table at the end
Kim Alvefur <zash@zash.se>
parents: 5776
diff changeset
    55
local function getstring(style, text)
262
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    56
	if style then
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    57
		return format(fmt_string, style, text);
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    58
	else
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    59
		return text;
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    60
	end
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    61
end
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    62
7206
be8b88ad35a3 util.termcolours: Add 256 color support
Kim Alvefur <zash@zash.se>
parents: 7202
diff changeset
    63
local function gray(n)
be8b88ad35a3 util.termcolours: Add 256 color support
Kim Alvefur <zash@zash.se>
parents: 7202
diff changeset
    64
	return m_floor(n*3/32)+0xe8;
be8b88ad35a3 util.termcolours: Add 256 color support
Kim Alvefur <zash@zash.se>
parents: 7202
diff changeset
    65
end
be8b88ad35a3 util.termcolours: Add 256 color support
Kim Alvefur <zash@zash.se>
parents: 7202
diff changeset
    66
local function color(r,g,b)
be8b88ad35a3 util.termcolours: Add 256 color support
Kim Alvefur <zash@zash.se>
parents: 7202
diff changeset
    67
	if r == g and g == b then
be8b88ad35a3 util.termcolours: Add 256 color support
Kim Alvefur <zash@zash.se>
parents: 7202
diff changeset
    68
		return gray(r);
be8b88ad35a3 util.termcolours: Add 256 color support
Kim Alvefur <zash@zash.se>
parents: 7202
diff changeset
    69
	end
be8b88ad35a3 util.termcolours: Add 256 color support
Kim Alvefur <zash@zash.se>
parents: 7202
diff changeset
    70
	r = m_floor(r*3/128);
be8b88ad35a3 util.termcolours: Add 256 color support
Kim Alvefur <zash@zash.se>
parents: 7202
diff changeset
    71
	g = m_floor(g*3/128);
be8b88ad35a3 util.termcolours: Add 256 color support
Kim Alvefur <zash@zash.se>
parents: 7202
diff changeset
    72
	b = m_floor(b*3/128);
be8b88ad35a3 util.termcolours: Add 256 color support
Kim Alvefur <zash@zash.se>
parents: 7202
diff changeset
    73
	return 0x10 + ( r * 36 ) + ( g * 6 ) + ( b );
be8b88ad35a3 util.termcolours: Add 256 color support
Kim Alvefur <zash@zash.se>
parents: 7202
diff changeset
    74
end
be8b88ad35a3 util.termcolours: Add 256 color support
Kim Alvefur <zash@zash.se>
parents: 7202
diff changeset
    75
local function hex2rgb(hex)
be8b88ad35a3 util.termcolours: Add 256 color support
Kim Alvefur <zash@zash.se>
parents: 7202
diff changeset
    76
	local r = tonumber(hex:sub(1,2),16);
be8b88ad35a3 util.termcolours: Add 256 color support
Kim Alvefur <zash@zash.se>
parents: 7202
diff changeset
    77
	local g = tonumber(hex:sub(3,4),16);
be8b88ad35a3 util.termcolours: Add 256 color support
Kim Alvefur <zash@zash.se>
parents: 7202
diff changeset
    78
	local b = tonumber(hex:sub(5,6),16);
be8b88ad35a3 util.termcolours: Add 256 color support
Kim Alvefur <zash@zash.se>
parents: 7202
diff changeset
    79
	return r,g,b;
be8b88ad35a3 util.termcolours: Add 256 color support
Kim Alvefur <zash@zash.se>
parents: 7202
diff changeset
    80
end
be8b88ad35a3 util.termcolours: Add 256 color support
Kim Alvefur <zash@zash.se>
parents: 7202
diff changeset
    81
be8b88ad35a3 util.termcolours: Add 256 color support
Kim Alvefur <zash@zash.se>
parents: 7202
diff changeset
    82
setmetatable(stylemap, { __index = function(_, style)
7208
a6c4530c1bc0 util.termcolours: Validate color codes, fixes traceback
Kim Alvefur <zash@zash.se>
parents: 7207
diff changeset
    83
	if type(style) == "string" and style:find("%x%x%x%x%x%x") == 1 then
a6c4530c1bc0 util.termcolours: Validate color codes, fixes traceback
Kim Alvefur <zash@zash.se>
parents: 7207
diff changeset
    84
		local g = style:sub(7) == " background" and "48;5;" or "38;5;";
a6c4530c1bc0 util.termcolours: Validate color codes, fixes traceback
Kim Alvefur <zash@zash.se>
parents: 7207
diff changeset
    85
		return g .. color(hex2rgb(style));
a6c4530c1bc0 util.termcolours: Validate color codes, fixes traceback
Kim Alvefur <zash@zash.se>
parents: 7207
diff changeset
    86
	end
7206
be8b88ad35a3 util.termcolours: Add 256 color support
Kim Alvefur <zash@zash.se>
parents: 7202
diff changeset
    87
end } );
be8b88ad35a3 util.termcolours: Add 256 color support
Kim Alvefur <zash@zash.se>
parents: 7202
diff changeset
    88
7207
ab2b7496a617 util.termcolours: Add some CSS color names
Kim Alvefur <zash@zash.se>
parents: 7206
diff changeset
    89
local csscolors = {
ab2b7496a617 util.termcolours: Add some CSS color names
Kim Alvefur <zash@zash.se>
parents: 7206
diff changeset
    90
	red = "ff0000"; fuchsia = "ff00ff"; green = "008000"; white = "ffffff";
ab2b7496a617 util.termcolours: Add some CSS color names
Kim Alvefur <zash@zash.se>
parents: 7206
diff changeset
    91
	lime = "00ff00"; yellow = "ffff00"; purple = "800080"; blue = "0000ff";
ab2b7496a617 util.termcolours: Add some CSS color names
Kim Alvefur <zash@zash.se>
parents: 7206
diff changeset
    92
	aqua = "00ffff"; olive  = "808000"; black  = "000000"; navy = "000080";
ab2b7496a617 util.termcolours: Add some CSS color names
Kim Alvefur <zash@zash.se>
parents: 7206
diff changeset
    93
	teal = "008080"; silver = "c0c0c0"; maroon = "800000"; gray = "808080";
ab2b7496a617 util.termcolours: Add some CSS color names
Kim Alvefur <zash@zash.se>
parents: 7206
diff changeset
    94
}
7209
1c005878db55 util.termcolours: Rename loop variable [luacheck]
Kim Alvefur <zash@zash.se>
parents: 7208
diff changeset
    95
for colorname, rgb in pairs(csscolors) do
1c005878db55 util.termcolours: Rename loop variable [luacheck]
Kim Alvefur <zash@zash.se>
parents: 7208
diff changeset
    96
	stylemap[colorname] = stylemap[colorname] or stylemap[rgb];
1c005878db55 util.termcolours: Rename loop variable [luacheck]
Kim Alvefur <zash@zash.se>
parents: 7208
diff changeset
    97
	colorname, rgb = colorname .. " background", rgb .. " background"
1c005878db55 util.termcolours: Rename loop variable [luacheck]
Kim Alvefur <zash@zash.se>
parents: 7208
diff changeset
    98
	stylemap[colorname] = stylemap[colorname] or stylemap[rgb];
7207
ab2b7496a617 util.termcolours: Add some CSS color names
Kim Alvefur <zash@zash.se>
parents: 7206
diff changeset
    99
end
ab2b7496a617 util.termcolours: Add some CSS color names
Kim Alvefur <zash@zash.se>
parents: 7206
diff changeset
   100
6780
5de6b93d0190 util.*: Remove use of module() function, make all module functions local and return them in a table at the end
Kim Alvefur <zash@zash.se>
parents: 5776
diff changeset
   101
local function getstyle(...)
262
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
   102
	local styles, result = { ... }, {};
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
   103
	for i, style in ipairs(styles) do
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
   104
		style = stylemap[style];
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
   105
		if style then
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
   106
			t_insert(result, style);
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
   107
		end
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
   108
	end
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
   109
	return t_concat(result, ";");
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
   110
end
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
   111
3749
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
   112
local last = "0";
6780
5de6b93d0190 util.*: Remove use of module() function, make all module functions local and return them in a table at the end
Kim Alvefur <zash@zash.se>
parents: 5776
diff changeset
   113
local function setstyle(style)
3749
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
   114
	style = style or "0";
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
   115
	if style ~= last then
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
   116
		io_write("\27["..style.."m");
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
   117
		last = style;
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
   118
	end
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
   119
end
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
   120
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
   121
if windows then
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
   122
	function setstyle(style)
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
   123
		style = style or "0";
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
   124
		if style ~= last then
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
   125
			windows.set_consolecolor(winstylemap[style] or orig_color);
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
   126
			last = style;
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
   127
		end
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
   128
	end
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
   129
	if not orig_color then
7202
5846e0bca4ff util.termcolours: Remove argument from noop function [luacheck]
Kim Alvefur <zash@zash.se>
parents: 7201
diff changeset
   130
		function setstyle() end
3749
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
   131
	end
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
   132
end
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
   133
4698
739f7ae1a01e util.termcolours: tohtml() for converting output to HTML. I don't know.
Matthew Wild <mwild1@gmail.com>
parents: 3749
diff changeset
   134
local function ansi2css(ansi_codes)
739f7ae1a01e util.termcolours: tohtml() for converting output to HTML. I don't know.
Matthew Wild <mwild1@gmail.com>
parents: 3749
diff changeset
   135
	if ansi_codes == "0" then return "</span>"; end
739f7ae1a01e util.termcolours: tohtml() for converting output to HTML. I don't know.
Matthew Wild <mwild1@gmail.com>
parents: 3749
diff changeset
   136
	local css = {};
739f7ae1a01e util.termcolours: tohtml() for converting output to HTML. I don't know.
Matthew Wild <mwild1@gmail.com>
parents: 3749
diff changeset
   137
	for code in ansi_codes:gmatch("[^;]+") do
739f7ae1a01e util.termcolours: tohtml() for converting output to HTML. I don't know.
Matthew Wild <mwild1@gmail.com>
parents: 3749
diff changeset
   138
		t_insert(css, cssmap[tonumber(code)]);
739f7ae1a01e util.termcolours: tohtml() for converting output to HTML. I don't know.
Matthew Wild <mwild1@gmail.com>
parents: 3749
diff changeset
   139
	end
739f7ae1a01e util.termcolours: tohtml() for converting output to HTML. I don't know.
Matthew Wild <mwild1@gmail.com>
parents: 3749
diff changeset
   140
	return "</span><span style='"..t_concat(css, ";").."'>";
739f7ae1a01e util.termcolours: tohtml() for converting output to HTML. I don't know.
Matthew Wild <mwild1@gmail.com>
parents: 3749
diff changeset
   141
end
739f7ae1a01e util.termcolours: tohtml() for converting output to HTML. I don't know.
Matthew Wild <mwild1@gmail.com>
parents: 3749
diff changeset
   142
6780
5de6b93d0190 util.*: Remove use of module() function, make all module functions local and return them in a table at the end
Kim Alvefur <zash@zash.se>
parents: 5776
diff changeset
   143
local function tohtml(input)
4698
739f7ae1a01e util.termcolours: tohtml() for converting output to HTML. I don't know.
Matthew Wild <mwild1@gmail.com>
parents: 3749
diff changeset
   144
	return input:gsub("\027%[(.-)m", ansi2css);
739f7ae1a01e util.termcolours: tohtml() for converting output to HTML. I don't know.
Matthew Wild <mwild1@gmail.com>
parents: 3749
diff changeset
   145
end
739f7ae1a01e util.termcolours: tohtml() for converting output to HTML. I don't know.
Matthew Wild <mwild1@gmail.com>
parents: 3749
diff changeset
   146
6780
5de6b93d0190 util.*: Remove use of module() function, make all module functions local and return them in a table at the end
Kim Alvefur <zash@zash.se>
parents: 5776
diff changeset
   147
return {
5de6b93d0190 util.*: Remove use of module() function, make all module functions local and return them in a table at the end
Kim Alvefur <zash@zash.se>
parents: 5776
diff changeset
   148
	getstring = getstring;
5de6b93d0190 util.*: Remove use of module() function, make all module functions local and return them in a table at the end
Kim Alvefur <zash@zash.se>
parents: 5776
diff changeset
   149
	getstyle = getstyle;
5de6b93d0190 util.*: Remove use of module() function, make all module functions local and return them in a table at the end
Kim Alvefur <zash@zash.se>
parents: 5776
diff changeset
   150
	setstyle = setstyle;
5de6b93d0190 util.*: Remove use of module() function, make all module functions local and return them in a table at the end
Kim Alvefur <zash@zash.se>
parents: 5776
diff changeset
   151
	tohtml = tohtml;
5de6b93d0190 util.*: Remove use of module() function, make all module functions local and return them in a table at the end
Kim Alvefur <zash@zash.se>
parents: 5776
diff changeset
   152
};