1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# ............................................................................................... #
#
# Copyright (c) 2012-2017 Institut National des Sciences Appliquées de Lyon (INSA-Lyon)
#
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
#
# ............................................................................................... #

----
This module provides helper functions to deal with ANSI escape codes for console outputs.

All function names are self-explanatory. They _print_ the corresponding ANSI code.

Note that [`likelySupported`](#likelySupported_0) tests if the current
operating system is _likely_ to support ANSI codes. It merely checks that the host operating
system is not MS Windows, which does not support ANSI codes without a 3rd-party driver.

See also: [Wikipedia on ANSI escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code)
----
module gololang.AnsiCodes

function likelySupported = ->
  not System.getProperty("os.name"): contains("Windows")

function reset = -> print("\u001B[0m")

function bold           = -> print("\u001B[1m")
function underscore     = -> print("\u001B[4m")
function blink          = -> print("\u001B[5m")
function reverse_video  = -> print("\u001B[7m")
function concealed      = -> print("\u001B[8m")

function fg_black   = -> print("\u001B[30m")
function fg_red     = -> print("\u001B[31m")
function fg_green   = -> print("\u001B[32m")
function fg_yellow  = -> print("\u001B[33m")
function fg_blue    = -> print("\u001B[34m")
function fg_magenta = -> print("\u001B[35m")
function fg_cyan    = -> print("\u001B[36m")
function fg_white   = -> print("\u001B[37m")

function bg_black   = -> print("\u001B[40m")
function bg_red     = -> print("\u001B[41m")
function bg_green   = -> print("\u001B[42m")
function bg_yellow  = -> print("\u001B[43m")
function bg_blue    = -> print("\u001B[44m")
function bg_magenta = -> print("\u001B[45m")
function bg_cyan    = -> print("\u001B[46m")
function bg_white   = -> print("\u001B[47m")

function cursor_position  = |line, column| -> print("\u001B[" + line + ";" + column + "H")

function cursor_save_position     = -> print("\u001B[s")
function cursor_restore_position  = -> print("\u001B[u")

function cursor_up        = |lines| -> print("\u001B[" + lines + "A")
function cursor_down      = |lines| -> print("\u001B[" + lines + "B")
function cursor_forward   = |columns| -> print("\u001B[" + columns + "C")
function cursor_backward  = |columns| -> print("\u001B[" + columns + "D")

function erase_display  = -> print("\u001B[2J")
function erase_line     = -> print("\u001B[K")