UNPKG

2.5 kBJavaScriptView Raw
1var Logdown = require('./base')()
2var markdown = require('./markdown/browser')
3var isColorSupported = require('./util/is-color-supported/browser')
4var globalObject = require('./util/get-global')()
5
6//
7// Static
8//
9
10// Tomorrow Night Eighties colors
11// https://github.com/chriskempson/tomorrow-theme#tomorrow-night-eighties
12Logdown.prefixColors = [
13 '#F2777A',
14 '#F99157',
15 '#FFCC66',
16 '#99CC99',
17 '#66CCCC',
18 '#6699CC',
19 '#CC99CC'
20]
21
22Logdown._setPrefixRegExps = function () {
23 try {
24 if (
25 globalObject.localStorage &&
26 typeof globalObject.localStorage.getItem('debug') === 'string'
27 ) {
28 Logdown._prefixRegExps = []
29
30 globalObject.localStorage
31 .getItem('debug')
32 .split(',')
33 .forEach(function (str) {
34 str = str.trim()
35 var type = 'enable'
36
37 if (str[0] === '-') {
38 str = str.substr(1)
39 type = 'disable'
40 }
41
42 var regExp = Logdown._prepareRegExpForPrefixSearch(str)
43
44 Logdown._prefixRegExps.push({
45 type: type,
46 regExp: regExp
47 })
48 })
49 }
50 } catch (error) {}
51}
52
53Logdown._getNextPrefixColor = (function () {
54 var lastUsed = 0
55
56 return function () {
57 lastUsed += 1
58 return Logdown.prefixColors[lastUsed % Logdown.prefixColors.length]
59 }
60})()
61
62//
63// Instance
64//
65
66Logdown.prototype._getDecoratedPrefix = function () {
67 var decoratedPrefix = []
68
69 if (isColorSupported()) {
70 decoratedPrefix.push('%c' + this.opts.prefix + '%c ')
71 decoratedPrefix.push(
72 'color:' + this.opts.prefixColor + '; font-weight:bold;',
73 '' // Empty string resets style.
74 )
75 } else {
76 decoratedPrefix.push('[' + this.opts.prefix + '] ')
77 }
78
79 return decoratedPrefix
80}
81
82Logdown.prototype._prepareOutput = function (args) {
83 var preparedOutput = this._getDecoratedPrefix()
84 var parsedMarkdown
85
86 // Only first argument on `console` can have style.
87 if (typeof args[0] === 'string') {
88 if (this.opts.markdown && isColorSupported()) {
89 parsedMarkdown = markdown.parse(args[0])
90 preparedOutput[0] = preparedOutput[0] + parsedMarkdown.text
91 preparedOutput = preparedOutput.concat(parsedMarkdown.styles)
92 } else {
93 preparedOutput[0] = preparedOutput[0] + args[0]
94 }
95 } else {
96 preparedOutput.push(args[0])
97 }
98
99 if (args.length > 1) {
100 preparedOutput = preparedOutput.concat(args.slice(1))
101 }
102
103 return preparedOutput
104}
105
106//
107// API
108//
109
110Logdown._setPrefixRegExps()
111
112module.exports = Logdown