Multi-colour console output from Chalk with added awesome.
by @shakyshane & @AydinHassan
##Install
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
var tFunk = require("tfunk");
console.log( tfunk("{cyan:tFunk terminal colours") )
// => tFunk terminal colours
Or get a custom compiler with a set prefix:
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.
var compiler = require("tfunk").Compiler({
"warn": function(string) {
return this.compile("{red:WARNING:" + string);
}
});
Now you can use warn
anywhere you like.
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
// chalk
console.log( chalk.red("This has a single colour") );
// tFunk
console.log( tFunk("{red:This has a single colour") );
###Single Colour mid string
// 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
// 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
// chalk
console.log( chalk.green("This has ") + chalk.cyan("two colours") );
// tFunk
console.log( tFunk("{green:This has {cyan:two colours") );
###Nested Colours
// 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
// 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
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
console.log( tFunk("This has a \\{\\{mustache\\}\\}") );
##TODO
- Colours
- Nested Colours
- Custom syntax
- Prefixed compiler
- Make the chain-able API work like this
"{white.bgRed: White text, red BG"
- Offer a way of escaping. Right now, ALL instances of
}
will be lost