simplecolor
Description
A simple library for coloring text output. Heavily inspired by rainbow, term-ansicolor and paint.
By default this gem does not change the String
class, unlike rainbow. The
reason I wrote this gem is that when mixed in String
it only adds two
methods: color
and uncolor
. This is the main reason I don't use
term-ansicolor which is more powerful, but adds more methods when mixed in.
The gem paint is similar to this one, but with more powerful shortcuts
definitions.
Features
No string extensions (suitable for library development)
Mixing the library in
String
only add two methods:color
anduncolor
.Supports setting any effects (although most terminals won’t support it)
Simple to use
Examples
require 'simplecolor'
SimpleColor.color("blue", :blue, :bold)
SimpleColor.color(:blue,:bold) { "blue" }
SimpleColor.color(:blue,:bold) << "blue" << SimpleColor.color(:clear)
SimpleColor.mix_in_string
"blue".color(:blue,:bold)
"\e[34m\e[1mblue\e[0m".uncolor
Usage
There is a global switch SimpleColor.enabled
to select the color mode.
The possible values are
true
: activate color outputfalse
: desactivate all color output:shell
: activate color output for use in zsh prompt
When using a color escape sequence in a prompt in zsh, zsh will count the
escape sequences as part of the length of a prompt. To mark them as non
printable, one has to wrap them around %{
and %}
.
With SimpleColor.enabled=:shell
this is done automatically by
SimpleColor
.
Requirements
None.
Install
$ gem install simplecolor
This installs v0.3.0
, the current master
version may not work.
When installing from git, you can regenerate the list of color names by
running data/rgb_colors.rb
.
TODO
- Autodetect color capabilities (using COLORTERM)
- Use terminfo settings when possible
- Better color conversion (RGB is non linear)
- Utilities to darken/lighten colors
Copyright
Copyright © 2013–2020 Damien Robert
MIT License. See LICENSE.txt for details.