Stylish terminal output in R
With crayon it is easy to add color to terminal output, create styles for notes, warnings, errors; and combine styles.
ANSI color support is automatically detected and used. Crayon was largely inspired by chalk.
Crayon defines several styles, that can be combined. Each style in the list has a corresponding function with the same name.
dim, renamed to avoid name clash)
italic(not widely supported)
strikethrough(not widely supported)
gray, renamed to avoid name clash)
Screenshot on OSX
The styling functions take any number of character vectors as arguments, and they concatenate and style them:
library(crayon) cat(blue("Hello", "world!\n"))
Crayon defines the
%+% string concatenation operator, to make it easy
to assemble stings with different styles.
cat("... to highlight the " %+% red("search term") %+% " in a block of text\n")
Styles can be combined using the
Styles can also be nested, and then inner style takes precedence:
cat(green( 'I am a green line ' %+% blue$underline$bold('with a blue substring') %+% ' that becomes green again!\n' ))
It is easy to define your own themes:
error <- red $ bold warn <- magenta $ underline note <- cyan cat(error("Error: subscript out of bounds!\n")) cat(warn("Warning: shorter argument was recycled.\n")) cat(note("Note: no such directory.\n"))
Most modern terminals support the ANSI standard for 256 colors,
and you can define new styles that make use of them. The
function defines a new style. It can handle R's built in color names
(see the output of
colors()), and also RGB specifications, via the
rbg() function. It automatically chooses the ANSI colors that
are closest to the specified R and RGB colors, and it also has
a fallback to terminals with 8 ANSI colors only.
ivory <- make_style("ivory") bgMaroon <- make_style("maroon", bg = TRUE) fancy <- combine_styles(ivory, bgMaroon) cat(fancy("This will have some fancy colors"), "\n")
MIT @ Gábor Csárdi