diff options
Diffstat (limited to 'module/vulgar/color.scm')
-rw-r--r-- | module/vulgar/color.scm | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/module/vulgar/color.scm b/module/vulgar/color.scm new file mode 100644 index 00000000..368a823c --- /dev/null +++ b/module/vulgar/color.scm @@ -0,0 +1,24 @@ +(define-module (vulgar color) + :export (color-if)) + +(define-public STR-YELLOW "\x1b[0;33m") +(define-public STR-RESET "\x1b[m") + +(define-syntax-rule (color-if pred color body ...) + (let ((pred-value pred)) + (format #f "~a~a~a" + (if pred-value color "") + (begin body ...) + (if pred-value STR-RESET "")))) + +(define-public (color-escape n) + (cond ((not n) "") + ((char=? #\# (string-ref n 0)) + (let* ((str (string-drop n 1)) + (rs (substring str 0 2)) + (gs (substring str 2 4)) + (bs (substring str 4 6))) + (format #f "\x1b[38;2;~a;~a;~am" + (string->number rs 16) + (string->number gs 16) + (string->number bs 16)))))) |