Chalk Box

Circle CI

Terminal toolbox to paint and embroider :)

Why

Colorize is the obvious choice for those who are starting coding on Crystal. However it changes the String class, and that's not a good practice.

Besides that, it doesn't offer ways to handle multiple types of terminal.

Obs: Yes, this lib is similar to the chalk lib from Node.js. The differences are:

Installation

Add this to your application's shard.yml:

dependencies:
  chalk_box:
    github: azukiapp/crystal-chalk-box

Usage

require "chalk_box"

module Basic
  extend ChalkBox
  extend self

  def main
    puts chalk.green("green fields")
  end
end

Basic.main

API

chalk.style.style...

Example: chalk.red.bold.underline("Hello", "world")

Chain styles and call the last one as a method with a string argument. Order doesn't matter, and later styles take precedent in case of a conflict. This simply means that chalk.red.yellow.green is equivalent to chalk.green.

chalk.enabled

Color support is automatically detected, but you can override it by setting the enabled property.

For default enable is instance of ChalkBox::Supports.

ChalkBox::Supports

Detect whether the terminal supports color. Used internally and handled for you, but exposed for convenience.

Can be overridden by the user with the flags --color and --no-color. For situations where using --color is not possible, add an environment variable FORCE_COLOR with any value to force color. Trumps --no-color.

Styles

Modifiers

Colors

Background colors

TODO

Contributing

  1. Fork it ( https://github.com/azukiapp/crystal-chalk-box/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

Contributors

License

"Azuki", "azk" and the Azuki logo are copyright (c) 2013-2016 Azuki Serviços de Internet LTDA.

azk source code is released under Apache 2 License.

Check LEGAL and LICENSE files for more information.