diff options
Diffstat (limited to 'lib/handlebars')
-rw-r--r-- | lib/handlebars/helpers/log.js | 19 | ||||
-rw-r--r-- | lib/handlebars/logger.js | 33 |
2 files changed, 39 insertions, 13 deletions
diff --git a/lib/handlebars/helpers/log.js b/lib/handlebars/helpers/log.js index ab83604..4bde4a1 100644 --- a/lib/handlebars/helpers/log.js +++ b/lib/handlebars/helpers/log.js @@ -1,6 +1,19 @@ export default function(instance) { - instance.registerHelper('log', function(message, options) { - let level = options.data && options.data.level != null ? parseInt(options.data.level, 10) : 1; - instance.log(level, message); + instance.registerHelper('log', function(/* message, options */) { + let args = [undefined], + options = arguments[arguments.length - 1]; + for (let i = 0; i < arguments.length - 1; i++) { + args.push(arguments[i]); + } + + let level = 1; + if (options.hash.level != null) { + level = options.hash.level; + } else if (options.data && options.data.level != null) { + level = options.data.level; + } + args[0] = level; + + instance.log(... args); }); } diff --git a/lib/handlebars/logger.js b/lib/handlebars/logger.js index 823d715..1d583dd 100644 --- a/lib/handlebars/logger.js +++ b/lib/handlebars/logger.js @@ -1,18 +1,31 @@ let logger = { - methodMap: { 0: 'debug', 1: 'info', 2: 'warn', 3: 'error' }, + methodMap: ['debug', 'info', 'warn', 'error'], + level: 'info', - // State enum - DEBUG: 0, - INFO: 1, - WARN: 2, - ERROR: 3, - level: 1, + // Maps a given level value to the `methodMap` indexes above. + lookupLevel: function(level) { + if (typeof level === 'string') { + let levelMap = logger.methodMap.indexOf(level.toLowerCase()); + if (levelMap >= 0) { + level = levelMap; + } else { + level = parseInt(level, 10); + } + } + + return level; + }, // Can be overridden in the host environment - log: function(level, message) { - if (typeof console !== 'undefined' && logger.level <= level) { + log: function(level, ...message) { + level = logger.lookupLevel(level); + + if (typeof console !== 'undefined' && logger.lookupLevel(logger.level) <= level) { let method = logger.methodMap[level]; - (console[method] || console.log).call(console, message); // eslint-disable-line no-console + if (!console[method]) { // eslint-disable-line no-console + method = 'log'; + } + console[method](...message); // eslint-disable-line no-console } } }; |