comparison libervia/backend/tools/common/ansi.py @ 4071:4b842c1fb686

refactoring: renamed `sat` package to `libervia.backend`
author Goffi <goffi@goffi.org>
date Fri, 02 Jun 2023 11:49:51 +0200
parents sat/tools/common/ansi.py@7550ae9cfbac
children
comparison
equal deleted inserted replaced
4070:d10748475025 4071:4b842c1fb686
1 #!/usr/bin/env python3
2
3
4 # Libervia: an XMPP client
5 # Copyright (C) 2009-2021 Jérôme Poisson (goffi@goffi.org)
6
7 # This program is free software: you can redistribute it and/or modify
8 # it under the terms of the GNU Affero General Public License as published by
9 # the Free Software Foundation, either version 3 of the License, or
10 # (at your option) any later version.
11
12 # This program is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 # GNU Affero General Public License for more details.
16
17 # You should have received a copy of the GNU Affero General Public License
18 # along with this program. If not, see <http://www.gnu.org/licenses/>.
19
20 import sys
21
22
23 class ANSI(object):
24
25 ## ANSI escape sequences ##
26 RESET = "\033[0m"
27 NORMAL_WEIGHT = "\033[22m"
28 FG_BLACK, FG_RED, FG_GREEN, FG_YELLOW, FG_BLUE, FG_MAGENTA, FG_CYAN, FG_WHITE = (
29 "\033[3%dm" % nb for nb in range(8)
30 )
31 BOLD = "\033[1m"
32 BLINK = "\033[5m"
33 BLINK_OFF = "\033[25m"
34
35 @classmethod
36 def color(cls, *args):
37 """output text using ANSI codes
38
39 this method simply merge arguments, and add RESET if is not the last arguments
40 """
41 # XXX: we expect to have at least one argument
42 if args[-1] != cls.RESET:
43 args = list(args)
44 args.append(cls.RESET)
45 return "".join(args)
46
47
48 try:
49 tty = sys.stdout.isatty()
50 except (
51 AttributeError,
52 TypeError,
53 ): # FIXME: TypeError is here for Pyjamas, need to be removed
54 tty = False
55 if not tty:
56 #  we don't want ANSI escape codes if we are not outputing to a tty!
57 for attr in dir(ANSI):
58 if isinstance(getattr(ANSI, attr), str):
59 setattr(ANSI, attr, "")
60 del tty