164 lines
3.5 KiB
Markdown
164 lines
3.5 KiB
Markdown
|
##tfunk [![Build Status](https://travis-ci.org/shakyShane/tfunk.svg)](https://travis-ci.org/shakyShane/tfunk)
|
||
|
|
||
|
Multi-colour console output from [Chalk](https://github.com/sindresorhus/chalk#styles) with added awesome.
|
||
|
|
||
|
by [@shakyshane](https://github.com/shakyShane) & [@AydinHassan](https://github.com/AydinHassan)
|
||
|
|
||
|
![tfunk](http://f.cl.ly/items/15102k441h1U1Z1l253J/Screen%20Shot%202014-09-10%20at%2022.05.15.png)
|
||
|
|
||
|
##Install
|
||
|
|
||
|
```bash
|
||
|
npm install tfunk
|
||
|
```
|
||
|
|
||
|
##Usage
|
||
|
|
||
|
**Syntax rules:**
|
||
|
|
||
|
`{` `<color>` `:` `YOUR STRING` `}`
|
||
|
|
||
|
**Example**
|
||
|
|
||
|
`{blue:This is a blue line}`
|
||
|
|
||
|
**`}` is optional**
|
||
|
|
||
|
`{blue:This is a blue line` <- Perfectly valid
|
||
|
|
||
|
|
||
|
##Usage
|
||
|
```js
|
||
|
var tFunk = require("tfunk");
|
||
|
|
||
|
console.log( tfunk("{cyan:tFunk terminal colours") )
|
||
|
|
||
|
// => tFunk terminal colours
|
||
|
```
|
||
|
|
||
|
Or get a custom compiler with a set prefix:
|
||
|
|
||
|
```js
|
||
|
var compiler = require("tfunk").Compiler({
|
||
|
prefix: "[{magenta:tFunk}]"
|
||
|
});
|
||
|
|
||
|
console.log( compiler.compile("tFunk is awesome") );
|
||
|
console.log( compiler.compile("don't you think?") );
|
||
|
|
||
|
// => [tFunk] tFunk is awesome
|
||
|
// => [tFunk] don't you think?
|
||
|
```
|
||
|
|
||
|
**Define your own syntax**
|
||
|
|
||
|
You can define your own methods, they receive the string section as the first parameter & have access to the compiler
|
||
|
through `this.compile()` keyword.
|
||
|
|
||
|
```js
|
||
|
var compiler = require("tfunk").Compiler({
|
||
|
"warn": function(string) {
|
||
|
return this.compile("{red:WARNING:" + string);
|
||
|
}
|
||
|
});
|
||
|
```
|
||
|
|
||
|
Now you can use `warn` anywhere you like.
|
||
|
|
||
|
```js
|
||
|
console.log( compiler.compile("{warn: Could not file your config file...") );
|
||
|
|
||
|
// => WARNING: Could not file your config file...
|
||
|
```
|
||
|
|
||
|
##Examples
|
||
|
|
||
|
Here are some comparisons to chalk, to help you understand how to use tFunk.
|
||
|
|
||
|
###Single Colours
|
||
|
|
||
|
```js
|
||
|
// chalk
|
||
|
console.log( chalk.red("This has a single colour") );
|
||
|
|
||
|
// tFunk
|
||
|
console.log( tFunk("{red:This has a single colour") );
|
||
|
```
|
||
|
|
||
|
###Single Colour mid string
|
||
|
|
||
|
```js
|
||
|
// chalk
|
||
|
console.log( "This has a single colour " + chalk.cyan("that begins mid-string") );
|
||
|
|
||
|
// tFunck
|
||
|
console.log( tFunk("This has a single colour {cyan:that begins mid-string") );
|
||
|
```
|
||
|
|
||
|
###Single Colour with end point
|
||
|
|
||
|
```js
|
||
|
// chalk
|
||
|
console.log( chalk.red("This has a single colour with ") + "an endpoint");
|
||
|
|
||
|
// tFunk
|
||
|
console.log( tFunk("{red:This has a single colour with }an endpoint") );
|
||
|
```
|
||
|
|
||
|
###Two Colours
|
||
|
|
||
|
```js
|
||
|
// chalk
|
||
|
console.log( chalk.green("This has ") + chalk.cyan("two colours") );
|
||
|
|
||
|
// tFunk
|
||
|
console.log( tFunk("{green:This has {cyan:two colours") );
|
||
|
```
|
||
|
|
||
|
###Nested Colours
|
||
|
|
||
|
```js
|
||
|
// chalk
|
||
|
console.log( chalk.green("This has a colour " + chalk.cyan("nested inside") + " another colour") );
|
||
|
|
||
|
//tFunk
|
||
|
console.log( tFunk("{green:This has a colour {cyan:nested inside} another colour") );
|
||
|
```
|
||
|
|
||
|
###Multiple Nested
|
||
|
|
||
|
```js
|
||
|
// chalk
|
||
|
console.log( chalk.blue("Multiple " + chalk.cyan("NESTED") + " styles in " + chalk.red("the same string") + " with an ending") );
|
||
|
|
||
|
// tFunk
|
||
|
console.log( tFunk("{blue:Multiple {cyan:NESTED} styles in {red:the same string} with an ending") );
|
||
|
```
|
||
|
|
||
|
###Multi line
|
||
|
```js
|
||
|
var multiline = require("multiline");
|
||
|
|
||
|
var string = multiline(function () {/*
|
||
|
{cyan:This is a multi-line coloured string
|
||
|
With a single {yellow:yellow} word in the center of a line
|
||
|
Pretty cool huh?
|
||
|
*/});
|
||
|
|
||
|
console.log( tFunk(string) );
|
||
|
```
|
||
|
|
||
|
###Escaping when you need curly braces
|
||
|
```js
|
||
|
console.log( tFunk("This has a \\{\\{mustache\\}\\}") );
|
||
|
```
|
||
|
|
||
|
|
||
|
##TODO
|
||
|
- [x] Colours
|
||
|
- [x] Nested Colours
|
||
|
- [x] Custom syntax
|
||
|
- [x] Prefixed compiler
|
||
|
- [x] Make the chain-able API work like this `"{white.bgRed: White text, red BG"`
|
||
|
- [x] Offer a way of escaping. Right now, ALL instances of `}` will be lost
|