From 75c91df43cafaacf7b9ad11cabb7329edede2b20 Mon Sep 17 00:00:00 2001 From: kwolfy Date: Thu, 23 Nov 2017 09:48:36 +0300 Subject: [PATCH 1/3] instance extends feature --- src/common.js | 9 +++++++++ test/debug_spec.js | 26 ++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/src/common.js b/src/common.js index 61eaf893..71e6cb3b 100644 --- a/src/common.js +++ b/src/common.js @@ -123,6 +123,7 @@ module.exports = function setup(env) { debug.useColors = createDebug.useColors(); debug.color = selectColor(namespace); debug.destroy = destroy; + debug.extend = extend; //debug.formatArgs = formatArgs; //debug.rawLog = rawLog; @@ -146,6 +147,14 @@ module.exports = function setup(env) { } } + function extend (namespace, delimiter) { + if(typeof delimiter === 'undefined') { + delimiter = ':'; + } + + return createDebug(this.namespace + delimiter + namespace); + } + /** * Enables a debug mode by namespaces. This can include modes * separated by a colon and wildcards. diff --git a/test/debug_spec.js b/test/debug_spec.js index 142fbe79..7ac6d7cd 100644 --- a/test/debug_spec.js +++ b/test/debug_spec.js @@ -64,4 +64,30 @@ describe('debug', function () { }); }); + + describe('extend namespace', function () { + var log; + + beforeEach(function () { + debug.enable('foo'); + log = debug('foo'); + }); + + it('should extend namespace', function () { + var logBar = log.extend('bar'); + expect(logBar.namespace).to.be.equal('foo:bar'); + }); + + it('should extend namespace with custom delimiter', function () { + var logBar = log.extend('bar', '--'); + expect(logBar.namespace).to.be.equal('foo--bar'); + }); + + it('should extend namespace with empty delimiter', function () { + var logBar = log.extend('bar', ''); + expect(logBar.namespace).to.be.equal('foobar'); + }); + + }); + }); From 2698a6ccd2281e3e99db9678acd7839cd01093e7 Mon Sep 17 00:00:00 2001 From: kwolfy Date: Fri, 22 Jun 2018 08:45:31 +0300 Subject: [PATCH 2/3] add .extend documentation --- README.md | 14 ++++++++++++++ src/common.js | 6 +----- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 8a3b70bf..1c6664ee 100644 --- a/README.md +++ b/README.md @@ -248,6 +248,20 @@ error('now goes to stdout via console.info'); log('still goes to stdout, but via console.info now'); ``` +## Extend +You can simply extend debugger +```js +const log = require('debug')('auth'); + +//creates new debug instance with extended namespace +const logSign = log.extend('sign'); +const logLogin = log.extend('login'); + +log('hello'); // auth hello +logSign('hello'); //auth:sign hello +logLogin('hello'); //auth:login hello +``` + ## Set dynamically You can also enable debug dynamically by calling the `enable()` method : diff --git a/src/common.js b/src/common.js index 71e6cb3b..51b3d52f 100644 --- a/src/common.js +++ b/src/common.js @@ -148,11 +148,7 @@ module.exports = function setup(env) { } function extend (namespace, delimiter) { - if(typeof delimiter === 'undefined') { - delimiter = ':'; - } - - return createDebug(this.namespace + delimiter + namespace); + return createDebug(this.namespace + (delimiter || ':') + namespace); } /** From 35c03f2698d826537d3d597e6a18685c5d8041dd Mon Sep 17 00:00:00 2001 From: kwolfy Date: Sun, 1 Jul 2018 22:47:46 +0300 Subject: [PATCH 3/3] allow empty delimiter in extend --- src/common.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/common.js b/src/common.js index 51b3d52f..65713e4d 100644 --- a/src/common.js +++ b/src/common.js @@ -148,7 +148,7 @@ module.exports = function setup(env) { } function extend (namespace, delimiter) { - return createDebug(this.namespace + (delimiter || ':') + namespace); + return createDebug(this.namespace + (typeof delimiter !== 'undefined' ? delimiter : ':') + namespace); } /**