Annotate

util/termcolours.lua @ 4219:bffce780999d

Merge 0.8->trunk
author Matthew Wild <mwild1@gmail.com>
date Tue, 01 Mar 2011 06:14:03 +0000
parent 3749:588c09d7903c
child 4698:739f7ae1a01e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
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
519
cccd610a0ef9 Insert copyright/license headers
Matthew Wild <mwild1@gmail.com>
parents: 262
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 --
cccd610a0ef9 Insert copyright/license headers
Matthew Wild <mwild1@gmail.com>
parents: 262
diff changeset
8
cccd610a0ef9 Insert copyright/license headers
Matthew Wild <mwild1@gmail.com>
parents: 262
diff changeset
9
262
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10 local t_concat, t_insert = table.concat, table.insert;
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11 local char, format = string.char, string.format;
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
12 local ipairs = ipairs;
3749
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
13 local io_write = io.write;
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
14
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
15 local windows;
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
16 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
17 windows = require "util.windows";
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
18 end
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
19 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
20
262
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
21 module "termcolours"
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
22
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
23 local stylemap = {
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
24 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
25 black = 30; red = 31; green = 32; yellow = 33; blue = 34; magenta = 35; cyan = 36; white = 37;
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
26 ["black background"] = 40; ["red background"] = 41; ["green background"] = 42; ["yellow background"] = 43; ["blue background"] = 44; ["magenta background"] = 45; ["cyan background"] = 46; ["white background"] = 47;
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
27 bold = 1, dark = 2, underline = 4, underlined = 4, normal = 0;
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
28 }
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
29
3749
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
30 local winstylemap = {
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
31 ["0"] = orig_color, -- reset
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
32 ["1"] = 7+8, -- bold
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
33 ["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
34 ["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
35 }
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
36
262
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
37 local fmt_string = char(0x1B).."[%sm%s"..char(0x1B).."[0m";
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
38 function getstring(style, text)
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
39 if style then
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
40 return format(fmt_string, style, text);
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
41 else
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
42 return text;
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
43 end
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
44 end
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
45
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
46 function getstyle(...)
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
47 local styles, result = { ... }, {};
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
48 for i, style in ipairs(styles) do
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
49 style = stylemap[style];
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
50 if style then
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
51 t_insert(result, style);
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
52 end
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
53 end
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
54 return t_concat(result, ";");
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
55 end
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
56
3749
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
57 local last = "0";
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
58 function setstyle(style)
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
59 style = style or "0";
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
60 if style ~= last then
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
61 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
62 last = style;
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
63 end
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
64 end
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
65
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
66 if windows then
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
67 function setstyle(style)
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
68 style = style or "0";
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
69 if style ~= last then
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
70 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
71 last = style;
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
72 end
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
73 end
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
74 if not orig_color then
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
75 function setstyle(style) end
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
76 end
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
77 end
588c09d7903c util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents: 2923
diff changeset
78
262
8c73fb2ff4a2 A treat for Linux users ;)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
79 return _M;