chalk_box
Chalk Box
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:
- This lib is written in Crystal (oh really?);
- All-in-one (the style and support modules are integrated);
- This lib doesn't support 256 and TrueColor for now.
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
resetbolddimitalic(not widely supported)underlineinversehiddenstrikethrough(not widely supported)
Colors
blackredgreenyellowblue(on Windows the bright version is used as normal blue is illegible)magentacyanwhitegray
Background colors
bgBlackbgRedbgGreenbgYellowbgBluebgMagentabgCyanbgWhite
TODO
- Add examples for
ChalkBox::Styles; - Add examples for
ChalkBox::Supports; - Add support for 256 colors;
- Add support for truecolor;
Contributing
- Fork it ( https://github.com/azukiapp/crystal-chalk-box/fork )
- Create your feature branch (git checkout -b my-new-feature)
- Commit your changes (git commit -am 'Add some feature')
- Push to the branch (git push origin my-new-feature)
- Create a new Pull Request
Contributors
- nuxlli Everton Ribeiro - creator, maintainer
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.