author | Matthew Wild <mwild1@gmail.com> |
Fri, 07 Jan 2011 11:55:19 +0000 | |
changeset 4093 | 36555949bd16 |
parent 3869 | 692a428f57e7 |
child 4698 | 739f7ae1a01e |
permissions | -rw-r--r-- |
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 | 5 |
-- This project is MIT/X11 licensed. Please see the |
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 | 10 |
local t_concat, t_insert = table.concat, table.insert; |
11 |
local char, format = string.char, string.format; |
|
12 |
local ipairs = ipairs; |
|
3869
692a428f57e7
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; |
692a428f57e7
util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents:
2923
diff
changeset
|
14 |
|
692a428f57e7
util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents:
2923
diff
changeset
|
15 |
local windows; |
692a428f57e7
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 |
692a428f57e7
util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents:
2923
diff
changeset
|
17 |
windows = require "util.windows"; |
692a428f57e7
util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents:
2923
diff
changeset
|
18 |
end |
692a428f57e7
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(); |
692a428f57e7
util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents:
2923
diff
changeset
|
20 |
|
262 | 21 |
module "termcolours" |
22 |
||
23 |
local stylemap = { |
|
24 |
reset = 0; bright = 1, dim = 2, underscore = 4, blink = 5, reverse = 7, hidden = 8; |
|
25 |
black = 30; red = 31; green = 32; yellow = 33; blue = 34; magenta = 35; cyan = 36; white = 37; |
|
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; |
|
27 |
bold = 1, dark = 2, underline = 4, underlined = 4, normal = 0; |
|
28 |
} |
|
29 |
||
3869
692a428f57e7
util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents:
2923
diff
changeset
|
30 |
local winstylemap = { |
692a428f57e7
util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents:
2923
diff
changeset
|
31 |
["0"] = orig_color, -- reset |
692a428f57e7
util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents:
2923
diff
changeset
|
32 |
["1"] = 7+8, -- bold |
692a428f57e7
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 |
692a428f57e7
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 |
692a428f57e7
util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents:
2923
diff
changeset
|
35 |
} |
692a428f57e7
util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents:
2923
diff
changeset
|
36 |
|
262 | 37 |
local fmt_string = char(0x1B).."[%sm%s"..char(0x1B).."[0m"; |
38 |
function getstring(style, text) |
|
39 |
if style then |
|
40 |
return format(fmt_string, style, text); |
|
41 |
else |
|
42 |
return text; |
|
43 |
end |
|
44 |
end |
|
45 |
||
46 |
function getstyle(...) |
|
47 |
local styles, result = { ... }, {}; |
|
48 |
for i, style in ipairs(styles) do |
|
49 |
style = stylemap[style]; |
|
50 |
if style then |
|
51 |
t_insert(result, style); |
|
52 |
end |
|
53 |
end |
|
54 |
return t_concat(result, ";"); |
|
55 |
end |
|
56 |
||
3869
692a428f57e7
util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents:
2923
diff
changeset
|
57 |
local last = "0"; |
692a428f57e7
util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents:
2923
diff
changeset
|
58 |
function setstyle(style) |
692a428f57e7
util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents:
2923
diff
changeset
|
59 |
style = style or "0"; |
692a428f57e7
util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents:
2923
diff
changeset
|
60 |
if style ~= last then |
692a428f57e7
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"); |
692a428f57e7
util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents:
2923
diff
changeset
|
62 |
last = style; |
692a428f57e7
util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents:
2923
diff
changeset
|
63 |
end |
692a428f57e7
util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents:
2923
diff
changeset
|
64 |
end |
692a428f57e7
util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents:
2923
diff
changeset
|
65 |
|
692a428f57e7
util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents:
2923
diff
changeset
|
66 |
if windows then |
692a428f57e7
util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents:
2923
diff
changeset
|
67 |
function setstyle(style) |
692a428f57e7
util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents:
2923
diff
changeset
|
68 |
style = style or "0"; |
692a428f57e7
util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents:
2923
diff
changeset
|
69 |
if style ~= last then |
692a428f57e7
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); |
692a428f57e7
util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents:
2923
diff
changeset
|
71 |
last = style; |
692a428f57e7
util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents:
2923
diff
changeset
|
72 |
end |
692a428f57e7
util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents:
2923
diff
changeset
|
73 |
end |
692a428f57e7
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 |
692a428f57e7
util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents:
2923
diff
changeset
|
75 |
function setstyle(style) end |
692a428f57e7
util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents:
2923
diff
changeset
|
76 |
end |
692a428f57e7
util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents:
2923
diff
changeset
|
77 |
end |
692a428f57e7
util.termcolours: Added setstyle(str), which works on Windows too.
Waqas Hussain <waqas20@gmail.com>
parents:
2923
diff
changeset
|
78 |
|
262 | 79 |
return _M; |