UNPKG

verbalize

Version:

A pluggable logging utility with built-in colors, styles, and modes.

113 lines (92 loc) 2.35 kB
'use strict'; var utils = require('lazy-cache')(require); var fn = require; require = utils; // eslint-disable-line no-native-reassign /** * Lazily required module dependencies */ require('ansi-bold', 'bold'); require('ansi-underline', 'underline'); require('define-property', 'define'); require('extend-shallow', 'extend'); require('falsey'); require('get-value', 'get'); require('set-value', 'set'); require('strip-color'); require('use'); require = fn; // eslint-disable-line no-native-reassign /** * Regex for bold/underline */ var boldRegex = /(\x1B\[\d+m|[_\s]|^)([*]{1,2})(\S|\S[\w\W]+?\S)\2(?=[_\s,.!?]|(?:\x1B\[\d+m)|$)/g; var underlineRegex = /(\x1B\[\d+m|[\s*]|^)(_{1,2})(\S|\S[\w\W]+?\S)\2(?=[*\s,.!?]|(?:\x1B\[\d+m)|$)/g; // default keywords for falsey var keywords = ['none', 'nil', 'nope', 'no', 'not', 'nada', '0', 'false']; utils.toArray = function(args) { if (typeof args === 'string') { args = [args]; } if (!Array.isArray(args) && typeof args.length !== 'undefined') { args = [].slice.call(args); } else { args = [].concat.apply([], [].slice.call(arguments)); } return args; }; /** * Cast `val` to an array * * @param {String|Array} `val` * @return {Array} */ utils.arrayify = function(val) { return val ? (Array.isArray(val) ? val : [val]) : []; }; /** * Ensure that `val` is a string. * * @param {String} `val` * @return {String} */ utils.toString = function(val) { return val == null ? '' : val.toString(); }; /** * Display `*foo*` or `**foo**` as bold. * * @param {String} `str` * @return {String} */ utils.toBold = function(str) { return utils.toString(str).replace(boldRegex, '$1' + utils.bold('$3')); }; /** * Display `_foo_` as underlined. * * @param {String} `str` * @return {String} */ utils.toUnderline = function(str) { return utils.toString(str).replace(underlineRegex, '$1' + utils.underline('$3')); }; utils.markup = function(str) { str = utils.toString(str); return utils.toBold(utils.toUnderline(str)); }; utils.isFalsey = function(val, options) { var opts = utils.extend({keywords: keywords}, options); return utils.falsey(val, opts.keywords); }; utils.levels = { silent: -1, fatal: 0, error: 1, success: 2, warn: 3, inform: 4, info: 4, debug: 5 } /** * Expose `utils` modules */ module.exports = utils;