mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-24 21:38:07 -05:00
colors: Add 'colorize-full-matches'.
* guix/colors.scm (colorize-full-matches): New procedure.
This commit is contained in:
parent
00dcfb261b
commit
d08e4d52a3
1 changed files with 22 additions and 0 deletions
|
@ -36,6 +36,7 @@ (define-module (guix colors)
|
|||
highlight/warn
|
||||
dim
|
||||
|
||||
colorize-full-matches
|
||||
color-rules
|
||||
color-output?
|
||||
isatty?*
|
||||
|
@ -153,6 +154,27 @@ (define highlight (coloring-procedure (color BOLD)))
|
|||
(define highlight/warn (coloring-procedure (color BOLD MAGENTA)))
|
||||
(define dim (coloring-procedure (color DARK)))
|
||||
|
||||
(define (colorize-full-matches rules)
|
||||
"Return a procedure that, given a string, colorizes according to RULES.
|
||||
RULES must be a list of regexp/color pairs; the whole match of a regexp is
|
||||
colorized with the corresponding color."
|
||||
(define proc
|
||||
(lambda (str)
|
||||
(if (string-index str #\nul)
|
||||
str
|
||||
(let loop ((rules rules))
|
||||
(match rules
|
||||
(()
|
||||
str)
|
||||
(((regexp . color) . rest)
|
||||
(match (regexp-exec regexp str)
|
||||
(#f (loop rest))
|
||||
(m (string-append (proc (match:prefix m))
|
||||
(colorize-string (match:substring m)
|
||||
color)
|
||||
(proc (match:suffix m)))))))))))
|
||||
proc)
|
||||
|
||||
(define (colorize-matches rules)
|
||||
"Return a procedure that, when passed a string, returns that string
|
||||
colorized according to RULES. RULES must be a list of tuples like:
|
||||
|
|
Loading…
Reference in a new issue