From 49342818ec5018ced6b9a5238d78f31c64823a97 Mon Sep 17 00:00:00 2001 From: Jonathan Bernard Date: Tue, 29 May 2018 12:53:42 -0500 Subject: [PATCH] Add basic support for ANSI color escape codes. Nim's `terminal` library provides ANSI terminal escape support, but only when writing directly to a File handle. This commit adds the `term{FG,BG}` procedures and `termReset` constant to help with embedding ANSI escape codes in string data. --- cliutils.nim | 14 +++++++++++++- cliutils.nimble | 2 +- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/cliutils.nim b/cliutils.nim index c342367..ca5fb39 100644 --- a/cliutils.nim +++ b/cliutils.nim @@ -1,4 +1,4 @@ -import docopt, json, osproc, posix, nre, streams, strtabs, unicode +import docopt, json, osproc, posix, nre, streams, strtabs, terminal, unicode import os except sleep import strutils except toUpper, toLower @@ -171,3 +171,15 @@ proc daemonize*(pidfile, si, so, se: string, daemonMain: proc(): void): Pid = daemonMain() return pid1 + +proc termFG*(color: ForegroundColor, bright, bold = false): string = + var colorVal = ord(color) + if bright: inc(colorVal, 60) + return "\e[" & $colorVal & (if bold: ";1" else: "") & "m" + +proc termBG*(color: BackgroundColor, bright, bold = false): string = + var colorVal = ord(color) + if bright: inc(colorVal, 60) + return "\e[" & $colorVal & "m" + +const termReset* = "\e[0;m" diff --git a/cliutils.nimble b/cliutils.nimble index b5dbbc8..0e26f44 100644 --- a/cliutils.nimble +++ b/cliutils.nimble @@ -1,6 +1,6 @@ # Package -version = "0.3.5" +version = "0.4.0" author = "Jonathan Bernard" description = "Helper functions for writing command line interfaces." license = "MIT"