1 !:folding=indent:collapseFolds=1:
5 ! Copyright (C) 2004 Slava Pestov.
7 ! Redistribution and use in source and binary forms, with or without
8 ! modification, are permitted provided that the following conditions are met:
10 ! 1. Redistributions of source code must retain the above copyright notice,
11 ! this list of conditions and the following disclaimer.
13 ! 2. Redistributions in binary form must reproduce the above copyright notice,
14 ! this list of conditions and the following disclaimer in the documentation
15 ! and/or other materials provided with the distribution.
17 ! THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
18 ! INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
19 ! FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
20 ! DEVELOPERS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 ! SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
22 ! PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
23 ! OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
24 ! WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
25 ! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
26 ! ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
38 !!! Some words for outputting ANSI colors.
53 #! Reset ANSI color codes.
57 #! Switch on boldface.
60 : fg ( color -- code )
61 #! Set foreground color.
62 "\e[3" swap "m" cat3 ; inline
64 : bg ( color -- code )
65 #! Set foreground color.
66 "\e[4" swap "m" cat3 ; inline
68 : ansi-attrs ( -- esc )
69 "bold" get [ bold % ] when
70 "ansi-fg" get [ fg % ] when*
71 "ansi-bg" get [ bg % ] when* ;
73 : ansi-attr-string ( string -- string )
74 <% ansi-attrs % reset % %> ;
76 : <ansi-stream>/fwrite-attr ( string stream -- )
77 [ ansi-attr-string ] dip fwrite ;
79 : <ansi-stream> ( stream -- stream )
80 #! Wraps the given stream in an ANSI stream. ANSI streams
81 #! support the following character attributes:
82 #! bold - if not f, text is boldface.
83 #! ansi-fg - foreground color
84 #! ansi-bg - background color
87 "stream" get <ansi-stream>/fwrite-attr