@jdeighan/coffee-utils 7.0.49 → 7.0.50
Sign up to get free protection for your applications and to get access to all the features.
- package/package.json +1 -1
- package/src/call_stack.coffee +6 -4
- package/src/call_stack.js +6 -4
- package/src/debug_utils.coffee +17 -9
- package/src/debug_utils.js +8 -4
package/package.json
CHANGED
package/src/call_stack.coffee
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
# call_stack.coffee
|
2
2
|
|
3
|
-
import {
|
3
|
+
import {
|
4
|
+
undef, defined, croak, assert, isBoolean,
|
5
|
+
} from '@jdeighan/coffee-utils'
|
4
6
|
import {log, LOG} from '@jdeighan/coffee-utils/log'
|
5
7
|
import {getPrefix} from '@jdeighan/coffee-utils/arrow'
|
6
8
|
|
@@ -64,9 +66,9 @@ export class CallStack
|
|
64
66
|
# ........................................................................
|
65
67
|
# ........................................................................
|
66
68
|
|
67
|
-
|
69
|
+
doCall: (funcName, hInfo, isLogged) ->
|
68
70
|
|
69
|
-
assert isLogged
|
71
|
+
assert isBoolean(isLogged), "CallStack.call(): 3 args required"
|
70
72
|
mainPre = getPrefix(@level)
|
71
73
|
|
72
74
|
if doDebugStack
|
@@ -75,7 +77,7 @@ export class CallStack
|
|
75
77
|
|
76
78
|
@addCall funcName, hInfo, isLogged
|
77
79
|
auxPre = getPrefix(@level)
|
78
|
-
return [mainPre, auxPre
|
80
|
+
return [mainPre, auxPre]
|
79
81
|
|
80
82
|
# ........................................................................
|
81
83
|
|
package/src/call_stack.js
CHANGED
@@ -4,8 +4,10 @@ var doDebugStack;
|
|
4
4
|
|
5
5
|
import {
|
6
6
|
undef,
|
7
|
+
defined,
|
7
8
|
croak,
|
8
|
-
assert
|
9
|
+
assert,
|
10
|
+
isBoolean
|
9
11
|
} from '@jdeighan/coffee-utils';
|
10
12
|
|
11
13
|
import {
|
@@ -72,9 +74,9 @@ export var CallStack = class CallStack {
|
|
72
74
|
|
73
75
|
// ........................................................................
|
74
76
|
// ........................................................................
|
75
|
-
|
77
|
+
doCall(funcName, hInfo, isLogged) {
|
76
78
|
var auxPre, mainPre, prefix;
|
77
|
-
assert(isLogged
|
79
|
+
assert(isBoolean(isLogged), "CallStack.call(): 3 args required");
|
78
80
|
mainPre = getPrefix(this.level);
|
79
81
|
if (doDebugStack) {
|
80
82
|
prefix = ' '.repeat(this.lStack.length);
|
@@ -82,7 +84,7 @@ export var CallStack = class CallStack {
|
|
82
84
|
}
|
83
85
|
this.addCall(funcName, hInfo, isLogged);
|
84
86
|
auxPre = getPrefix(this.level);
|
85
|
-
return [mainPre, auxPre
|
87
|
+
return [mainPre, auxPre];
|
86
88
|
}
|
87
89
|
|
88
90
|
// ........................................................................
|
package/src/debug_utils.coffee
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
# debug_utils.coffee
|
2
2
|
|
3
3
|
import {
|
4
|
-
assert, undef, error, croak, warn,
|
4
|
+
assert, undef, error, croak, warn, defined,
|
5
|
+
isString, isFunction, isBoolean,
|
5
6
|
OL, escapeStr, isNumber, isArray, words, pass,
|
6
7
|
} from '@jdeighan/coffee-utils'
|
7
8
|
import {blockToArray} from '@jdeighan/coffee-utils/block'
|
@@ -14,8 +15,8 @@ import {
|
|
14
15
|
|
15
16
|
# --- These are saved/restored on the call stack
|
16
17
|
export debugging = false
|
17
|
-
shouldLogFunc = (func) -> debugging
|
18
|
-
shouldLogString = (str)
|
18
|
+
shouldLogFunc = (func) -> return debugging
|
19
|
+
shouldLogString = (str) -> return debugging
|
19
20
|
|
20
21
|
stack = new CallStack()
|
21
22
|
doDebugDebug = false
|
@@ -37,8 +38,8 @@ resetDebugging = () ->
|
|
37
38
|
if doDebugDebug
|
38
39
|
LOG "resetDebugging() - debugging = false"
|
39
40
|
stack.reset()
|
40
|
-
shouldLogFunc = (func)
|
41
|
-
shouldLogString = (str)
|
41
|
+
shouldLogFunc = (func) -> return debugging
|
42
|
+
shouldLogString = (str) -> return debugging
|
42
43
|
return
|
43
44
|
|
44
45
|
# ---------------------------------------------------------------------------
|
@@ -65,7 +66,7 @@ export setDebugging = (funcDoDebug=undef, funcDoLog=undef) ->
|
|
65
66
|
else
|
66
67
|
croak "setDebugging(): bad parameter #{OL(funcDoDebug)}"
|
67
68
|
|
68
|
-
if funcDoLog
|
69
|
+
if isFunction(funcDoLog)
|
69
70
|
assert isFunction(funcDoLog), "setDebugging: arg 2 not a function"
|
70
71
|
shouldLogString = funcDoLog
|
71
72
|
return
|
@@ -89,8 +90,8 @@ export funcMatch = (curFunc, lFuncNames) ->
|
|
89
90
|
# ---------------------------------------------------------------------------
|
90
91
|
# 1. adjust call stack on 'enter' or 'return from'
|
91
92
|
# 2. adjust debugging flag
|
92
|
-
# 3. return [mainPrefix, auxPrefix, hEnv] - hEnv can be undef
|
93
|
-
# 4. disable logging by setting
|
93
|
+
# 3. return [mainPrefix, auxPrefix, hEnv, type] - hEnv can be undef
|
94
|
+
# 4. disable logging by setting type to undef
|
94
95
|
|
95
96
|
adjustStack = (str) ->
|
96
97
|
|
@@ -100,17 +101,21 @@ adjustStack = (str) ->
|
|
100
101
|
\s+
|
101
102
|
([A-Za-z_][A-Za-z0-9_\.]*)
|
102
103
|
///))
|
104
|
+
|
105
|
+
# --- We are entering function curFunc
|
103
106
|
curFunc = lMatches[1]
|
107
|
+
|
104
108
|
hEnv = {
|
105
109
|
debugging
|
106
110
|
shouldLogFunc
|
107
111
|
shouldLogString
|
108
112
|
}
|
113
|
+
|
109
114
|
debugging = shouldLogFunc(curFunc)
|
110
115
|
if doDebugDebug
|
111
116
|
trans = "#{hEnv.debugging} => #{debugging}"
|
112
117
|
LOG " ENTER #{curFunc}, debugging: #{trans}"
|
113
|
-
[mainPre, auxPre
|
118
|
+
[mainPre, auxPre] = stack.doCall(curFunc, hEnv, debugging)
|
114
119
|
return [
|
115
120
|
mainPre
|
116
121
|
auxPre
|
@@ -152,6 +157,9 @@ export debug = (lArgs...) ->
|
|
152
157
|
# distinguish between 1 arg sent vs. 2 args sent
|
153
158
|
nArgs = lArgs.length
|
154
159
|
assert (nArgs==1) || (nArgs==2), "debug(): #{nArgs} args"
|
160
|
+
|
161
|
+
# --- label must always be there, and be a string
|
162
|
+
# item is optional
|
155
163
|
[label, item] = lArgs
|
156
164
|
assert isString(label),
|
157
165
|
"debug(): 1st arg #{OL(label)} should be a string"
|
package/src/debug_utils.js
CHANGED
@@ -8,6 +8,7 @@ import {
|
|
8
8
|
error,
|
9
9
|
croak,
|
10
10
|
warn,
|
11
|
+
defined,
|
11
12
|
isString,
|
12
13
|
isFunction,
|
13
14
|
isBoolean,
|
@@ -108,7 +109,7 @@ export var setDebugging = function(funcDoDebug = undef, funcDoLog = undef) {
|
|
108
109
|
} else {
|
109
110
|
croak(`setDebugging(): bad parameter ${OL(funcDoDebug)}`);
|
110
111
|
}
|
111
|
-
if (funcDoLog) {
|
112
|
+
if (isFunction(funcDoLog)) {
|
112
113
|
assert(isFunction(funcDoLog), "setDebugging: arg 2 not a function");
|
113
114
|
shouldLogString = funcDoLog;
|
114
115
|
}
|
@@ -132,11 +133,12 @@ export var funcMatch = function(curFunc, lFuncNames) {
|
|
132
133
|
// ---------------------------------------------------------------------------
|
133
134
|
// 1. adjust call stack on 'enter' or 'return from'
|
134
135
|
// 2. adjust debugging flag
|
135
|
-
// 3. return [mainPrefix, auxPrefix, hEnv] - hEnv can be undef
|
136
|
-
// 4. disable logging by setting
|
136
|
+
// 3. return [mainPrefix, auxPrefix, hEnv, type] - hEnv can be undef
|
137
|
+
// 4. disable logging by setting type to undef
|
137
138
|
adjustStack = function(str) {
|
138
139
|
var _, auxPre, curFunc, hEnv, lMatches, mainPre, trans;
|
139
140
|
if ((lMatches = str.match(/^\s*enter\s+([A-Za-z_][A-Za-z0-9_\.]*)/))) {
|
141
|
+
// --- We are entering function curFunc
|
140
142
|
curFunc = lMatches[1];
|
141
143
|
hEnv = {debugging, shouldLogFunc, shouldLogString};
|
142
144
|
debugging = shouldLogFunc(curFunc);
|
@@ -144,7 +146,7 @@ adjustStack = function(str) {
|
|
144
146
|
trans = `${hEnv.debugging} => ${debugging}`;
|
145
147
|
LOG(` ENTER ${curFunc}, debugging: ${trans}`);
|
146
148
|
}
|
147
|
-
[mainPre, auxPre
|
149
|
+
[mainPre, auxPre] = stack.doCall(curFunc, hEnv, debugging);
|
148
150
|
return [mainPre, auxPre, undef, shouldLogFunc(curFunc) ? 'enter' : undef];
|
149
151
|
} else if ((lMatches = str.match(/^\s*return.+from\s+([A-Za-z_][A-Za-z0-9_\.]*)/))) {
|
150
152
|
curFunc = lMatches[1];
|
@@ -166,6 +168,8 @@ export var debug = function(...lArgs) {
|
|
166
168
|
// distinguish between 1 arg sent vs. 2 args sent
|
167
169
|
nArgs = lArgs.length;
|
168
170
|
assert((nArgs === 1) || (nArgs === 2), `debug(): ${nArgs} args`);
|
171
|
+
// --- label must always be there, and be a string
|
172
|
+
// item is optional
|
169
173
|
[label, item] = lArgs;
|
170
174
|
assert(isString(label), `debug(): 1st arg ${OL(label)} should be a string`);
|
171
175
|
if (doDebugDebug) {
|