From ed509bcf0bb7eee9e88d5f5a1b8227baab9a016b Mon Sep 17 00:00:00 2001 From: Tom Sherman Date: Sat, 26 Jan 2019 13:28:47 +0000 Subject: [PATCH] Add chalk factory method --- index.js | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/index.js b/index.js index 4925417..0de53d9 100644 --- a/index.js +++ b/index.js @@ -26,27 +26,31 @@ function applyOptions(object, options = {}) { } class ChalkClass { - constructor (options) { - return Chalk(options) + constructor(options) { + return chalkFactory(options); } } +function chalkFactory(options) { + const chalk = {}; + applyOptions(chalk, options); + + chalk.template = (...args) => chalkTag(chalk.template, ...args); + + Object.setPrototypeOf(chalk, Chalk.prototype); + Object.setPrototypeOf(chalk.template, chalk); + + chalk.template.constructor = Chalk; + chalk.template.instance = ChalkClass; + + return chalk.template; +} + function Chalk(options) { // We check for this.template here since calling `chalk.constructor()` // by itself will have a `this` of a previously constructed chalk object if (!this || !(this instanceof Chalk) || this.template) { - const chalk = {}; - applyOptions(chalk, options); - - chalk.template = (...args) => chalkTag(chalk.template, ...args); - - Object.setPrototypeOf(chalk, Chalk.prototype); - Object.setPrototypeOf(chalk.template, chalk); - - chalk.template.constructor = Chalk; - chalk.template.instance = ChalkClass; - - return chalk.template; + return chalkFactory(options); } applyOptions(this, options);