@jdeighan/coffee-utils 4.0.23 → 4.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.save/{block.test.cielo → block.test.coffee} +0 -0
- package/.save/block.test.js +129 -0
- package/.save/{block2.test.cielo → block2.test.coffee} +0 -0
- package/.save/block2.test.js +64 -0
- package/.save/{debug.test.cielo → debug.test.coffee} +4 -2
- package/.save/debug.test.js +242 -0
- package/.save/{fs.test.cielo → fs.test.coffee} +18 -2
- package/.save/fs.test.js +191 -0
- package/.save/{indent.test.cielo → indent.test.coffee} +0 -0
- package/.save/indent.test.js +136 -0
- package/.save/{log.test.cielo → log.test.coffee} +10 -6
- package/.save/log.test.js +336 -0
- package/.save/{privenv.test.cielo → privenv.test.coffee} +0 -0
- package/.save/privenv.test.js +54 -0
- package/.save/{temp.cielo → temp.coffee} +0 -0
- package/.save/temp.js +28 -0
- package/.save/{tester.test.cielo → tester.test.coffee} +0 -0
- package/.save/tester.test.js +93 -0
- package/.save/{utils.test.cielo → utils.test.coffee} +0 -0
- package/.save/utils.test.js +319 -0
- package/package.json +6 -5
- package/src/UnitTester.coffee +10 -6
- package/src/UnitTester.js +7 -1
- package/src/coffee_utils.coffee +5 -3
- package/src/coffee_utils.js +7 -3
- package/src/debug_utils.coffee +28 -7
- package/src/debug_utils.js +28 -8
- package/src/log_utils.coffee +28 -12
- package/src/log_utils.js +31 -13
- package/.save/bs.test.cielo +0 -6
@@ -0,0 +1,319 @@
|
|
1
|
+
// Generated by CoffeeScript 2.6.1
|
2
|
+
// utils.test.coffee
|
3
|
+
var hEsc, simple;
|
4
|
+
|
5
|
+
import {
|
6
|
+
UnitTester
|
7
|
+
} from '@jdeighan/coffee-utils/test';
|
8
|
+
|
9
|
+
import {
|
10
|
+
say,
|
11
|
+
undef,
|
12
|
+
error,
|
13
|
+
warn,
|
14
|
+
isString,
|
15
|
+
isObject,
|
16
|
+
isArray,
|
17
|
+
isHash,
|
18
|
+
isEmpty,
|
19
|
+
nonEmpty,
|
20
|
+
isComment,
|
21
|
+
getClassName,
|
22
|
+
isNumber,
|
23
|
+
isFunction,
|
24
|
+
isInteger,
|
25
|
+
rtrim,
|
26
|
+
ltrunc,
|
27
|
+
rtrunc,
|
28
|
+
extractMatches,
|
29
|
+
words,
|
30
|
+
escapeStr,
|
31
|
+
titleLine,
|
32
|
+
removeCR,
|
33
|
+
CWS,
|
34
|
+
isArrayOfHashes,
|
35
|
+
oneline,
|
36
|
+
croak,
|
37
|
+
isRegExp
|
38
|
+
} from '@jdeighan/coffee-utils';
|
39
|
+
|
40
|
+
import {
|
41
|
+
setLogger
|
42
|
+
} from '@jdeighan/coffee-utils/log';
|
43
|
+
|
44
|
+
import {
|
45
|
+
setDebugging
|
46
|
+
} from '@jdeighan/coffee-utils/debug';
|
47
|
+
|
48
|
+
import {
|
49
|
+
arrayToBlock
|
50
|
+
} from '@jdeighan/coffee-utils/block';
|
51
|
+
|
52
|
+
simple = new UnitTester();
|
53
|
+
|
54
|
+
// ---------------------------------------------------------------------------
|
55
|
+
simple.truthy(19, isEmpty(''));
|
56
|
+
|
57
|
+
simple.truthy(20, isEmpty(' \t\t'));
|
58
|
+
|
59
|
+
simple.truthy(21, isEmpty([]));
|
60
|
+
|
61
|
+
simple.truthy(22, isEmpty({}));
|
62
|
+
|
63
|
+
simple.truthy(24, nonEmpty('a'));
|
64
|
+
|
65
|
+
simple.truthy(25, nonEmpty('.'));
|
66
|
+
|
67
|
+
simple.truthy(26, nonEmpty([2]));
|
68
|
+
|
69
|
+
simple.truthy(27, nonEmpty({
|
70
|
+
width: 2
|
71
|
+
}));
|
72
|
+
|
73
|
+
simple.truthy(29, isComment("# a comment"));
|
74
|
+
|
75
|
+
simple.truthy(30, isComment("### a comment"));
|
76
|
+
|
77
|
+
simple.truthy(31, isComment("#\ta comment"));
|
78
|
+
|
79
|
+
simple.truthy(32, isComment("###\ta comment"));
|
80
|
+
|
81
|
+
simple.truthy(33, isComment(" # a comment"));
|
82
|
+
|
83
|
+
simple.truthy(34, isComment(" ### a comment"));
|
84
|
+
|
85
|
+
simple.falsy(35, isComment("not much"));
|
86
|
+
|
87
|
+
simple.falsy(36, isComment("#foreach x in lItems"));
|
88
|
+
|
89
|
+
simple.truthy(37, isComment('#'));
|
90
|
+
|
91
|
+
simple.truthy(38, isComment(' #'));
|
92
|
+
|
93
|
+
simple.truthy(39, isComment(' ###'));
|
94
|
+
|
95
|
+
simple.falsy(40, isComment('#for'));
|
96
|
+
|
97
|
+
simple.falsy(41, isComment(' #for'));
|
98
|
+
|
99
|
+
simple.falsy(42, isComment('#for line in lLines'));
|
100
|
+
|
101
|
+
simple.equal(44, titleLine('a thing').length, 42);
|
102
|
+
|
103
|
+
simple.equal(45, titleLine('a thing', '-', 5, 90).length, 90);
|
104
|
+
|
105
|
+
// ---------------------------------------------------------------------------
|
106
|
+
simple.equal(80, rtrim("abc"), "abc");
|
107
|
+
|
108
|
+
simple.equal(81, rtrim(" abc"), " abc");
|
109
|
+
|
110
|
+
simple.equal(82, rtrim("abc "), "abc");
|
111
|
+
|
112
|
+
simple.equal(83, rtrim(" abc "), " abc");
|
113
|
+
|
114
|
+
// ---------------------------------------------------------------------------
|
115
|
+
simple.equal(87, words('a b c'), ['a', 'b', 'c']);
|
116
|
+
|
117
|
+
simple.equal(88, words(' a b c '), ['a', 'b', 'c']);
|
118
|
+
|
119
|
+
// ---------------------------------------------------------------------------
|
120
|
+
simple.equal(92, escapeStr("\t\tXXX\n"), "\\t\\tXXX\\n");
|
121
|
+
|
122
|
+
hEsc = {
|
123
|
+
"\n": "\\n",
|
124
|
+
"\t": "\\t",
|
125
|
+
"\"": "\\\""
|
126
|
+
};
|
127
|
+
|
128
|
+
simple.equal(64, escapeStr("\thas quote: \"\nnext line", hEsc), "\\thas quote: \\\"\\nnext line");
|
129
|
+
|
130
|
+
// ---------------------------------------------------------------------------
|
131
|
+
simple.equal(130, rtrunc('/user/lib/.env', 5), '/user/lib');
|
132
|
+
|
133
|
+
simple.equal(131, ltrunc('abcdefg', 3), 'defg');
|
134
|
+
|
135
|
+
simple.equal(133, removeCR("abc\r\ndef\r\n"), "abc\ndef\n");
|
136
|
+
|
137
|
+
simple.equal(139, CWS(`abc
|
138
|
+
def
|
139
|
+
ghi`), "abc def ghi");
|
140
|
+
|
141
|
+
// ---------------------------------------------------------------------------
|
142
|
+
simple.truthy(147, isArrayOfHashes([]));
|
143
|
+
|
144
|
+
simple.truthy(148, isArrayOfHashes([{}, {}]));
|
145
|
+
|
146
|
+
simple.truthy(149, isArrayOfHashes([
|
147
|
+
{
|
148
|
+
a: 1,
|
149
|
+
b: 2
|
150
|
+
},
|
151
|
+
{}
|
152
|
+
]));
|
153
|
+
|
154
|
+
simple.truthy(150, isArrayOfHashes([
|
155
|
+
{
|
156
|
+
a: 1,
|
157
|
+
b: 2,
|
158
|
+
c: [1,
|
159
|
+
2,
|
160
|
+
3]
|
161
|
+
},
|
162
|
+
{}
|
163
|
+
]));
|
164
|
+
|
165
|
+
simple.falsy(152, isArrayOfHashes({}));
|
166
|
+
|
167
|
+
simple.falsy(153, isArrayOfHashes([1, 2, 3]));
|
168
|
+
|
169
|
+
simple.falsy(154, isArrayOfHashes([
|
170
|
+
{
|
171
|
+
a: 1,
|
172
|
+
b: 2,
|
173
|
+
c: [1,
|
174
|
+
2,
|
175
|
+
3]
|
176
|
+
},
|
177
|
+
4
|
178
|
+
]));
|
179
|
+
|
180
|
+
simple.falsy(155, isArrayOfHashes([
|
181
|
+
{
|
182
|
+
a: 1,
|
183
|
+
b: 2,
|
184
|
+
c: [1,
|
185
|
+
2,
|
186
|
+
3]
|
187
|
+
},
|
188
|
+
{},
|
189
|
+
[1,
|
190
|
+
2]
|
191
|
+
]));
|
192
|
+
|
193
|
+
// ---------------------------------------------------------------------------
|
194
|
+
(function() {
|
195
|
+
var NewClass, h, l, n, n2, o, s, s2;
|
196
|
+
NewClass = class NewClass {};
|
197
|
+
h = {
|
198
|
+
a: 1,
|
199
|
+
b: 2
|
200
|
+
};
|
201
|
+
l = [1, 2, 2];
|
202
|
+
o = new NewClass();
|
203
|
+
n = 42;
|
204
|
+
n2 = new Number(42);
|
205
|
+
s = 'simple';
|
206
|
+
s2 = new String('abc');
|
207
|
+
simple.truthy(170, isHash(h));
|
208
|
+
simple.falsy(171, isHash(l));
|
209
|
+
simple.falsy(172, isHash(o));
|
210
|
+
simple.falsy(173, isHash(n));
|
211
|
+
simple.falsy(174, isHash(n2));
|
212
|
+
simple.falsy(175, isHash(s));
|
213
|
+
simple.falsy(176, isHash(s2));
|
214
|
+
simple.falsy(178, isArray(h));
|
215
|
+
simple.truthy(179, isArray(l));
|
216
|
+
simple.falsy(180, isArray(o));
|
217
|
+
simple.falsy(181, isArray(n));
|
218
|
+
simple.falsy(182, isArray(n2));
|
219
|
+
simple.falsy(183, isArray(s));
|
220
|
+
simple.falsy(184, isArray(s2));
|
221
|
+
simple.falsy(186, isString(h));
|
222
|
+
simple.falsy(187, isString(l));
|
223
|
+
simple.falsy(188, isString(o));
|
224
|
+
simple.falsy(189, isString(n));
|
225
|
+
simple.falsy(190, isString(n2));
|
226
|
+
simple.truthy(191, isString(s));
|
227
|
+
simple.truthy(192, isString(s2));
|
228
|
+
simple.falsy(194, isObject(h));
|
229
|
+
simple.falsy(195, isObject(l));
|
230
|
+
simple.truthy(196, isObject(o));
|
231
|
+
simple.falsy(197, isObject(n));
|
232
|
+
simple.falsy(198, isObject(n2));
|
233
|
+
simple.falsy(199, isObject(s));
|
234
|
+
simple.falsy(200, isObject(s2));
|
235
|
+
simple.falsy(202, isNumber(h));
|
236
|
+
simple.falsy(203, isNumber(l));
|
237
|
+
simple.falsy(204, isNumber(o));
|
238
|
+
simple.truthy(205, isNumber(n));
|
239
|
+
simple.truthy(206, isNumber(n2));
|
240
|
+
simple.falsy(207, isNumber(s));
|
241
|
+
return simple.falsy(208, isNumber(s2));
|
242
|
+
})();
|
243
|
+
|
244
|
+
// ---------------------------------------------------------------------------
|
245
|
+
simple.truthy(214, isFunction(function() {
|
246
|
+
return pass;
|
247
|
+
}));
|
248
|
+
|
249
|
+
simple.falsy(215, isFunction(23));
|
250
|
+
|
251
|
+
simple.truthy(217, isInteger(42));
|
252
|
+
|
253
|
+
simple.truthy(218, isInteger(new Number(42)));
|
254
|
+
|
255
|
+
simple.falsy(219, isInteger('abc'));
|
256
|
+
|
257
|
+
simple.falsy(220, isInteger({}));
|
258
|
+
|
259
|
+
simple.falsy(221, isInteger([]));
|
260
|
+
|
261
|
+
// ---------------------------------------------------------------------------
|
262
|
+
simple.equal(233, oneline(undef), "undef");
|
263
|
+
|
264
|
+
simple.equal(234, oneline("\t\tabc\nxyz"), "'\\t\\tabc\\nxyz'");
|
265
|
+
|
266
|
+
simple.equal(235, oneline({
|
267
|
+
a: 1,
|
268
|
+
b: 'xyz'
|
269
|
+
}), '{"a":1,"b":"xyz"}');
|
270
|
+
|
271
|
+
// ---------------------------------------------------------------------------
|
272
|
+
simple.equal(239, CWS(`a simple
|
273
|
+
error message`), "a simple error message");
|
274
|
+
|
275
|
+
// ---------------------------------------------------------------------------
|
276
|
+
// test croak()
|
277
|
+
(function() {
|
278
|
+
var lLines, obj;
|
279
|
+
lLines = [];
|
280
|
+
setLogger(function(line) {
|
281
|
+
return lLines.push(line);
|
282
|
+
});
|
283
|
+
obj = {
|
284
|
+
a: 1,
|
285
|
+
b: 2
|
286
|
+
};
|
287
|
+
try {
|
288
|
+
croak("bad stuff", "An Object", obj);
|
289
|
+
} catch (error1) {}
|
290
|
+
simple.equal(255, arrayToBlock(lLines), `ERROR: bad stuff
|
291
|
+
An Object = {"a":1,"b":2}`);
|
292
|
+
return setLogger();
|
293
|
+
})();
|
294
|
+
|
295
|
+
// ---------------------------------------------------------------------------
|
296
|
+
// test isRegExp()
|
297
|
+
simple.truthy(265, isRegExp(/^abc$/));
|
298
|
+
|
299
|
+
simple.truthy(266, isRegExp(/^\s*where\s+areyou$/));
|
300
|
+
|
301
|
+
simple.falsy(272, isRegExp(42));
|
302
|
+
|
303
|
+
simple.falsy(272, isRegExp('abc'));
|
304
|
+
|
305
|
+
simple.falsy(272, isRegExp([1, 'a']));
|
306
|
+
|
307
|
+
simple.falsy(272, isRegExp({
|
308
|
+
a: 1,
|
309
|
+
b: 'ccc'
|
310
|
+
}));
|
311
|
+
|
312
|
+
simple.falsy(272, isRegExp(undef));
|
313
|
+
|
314
|
+
simple.truthy(278, isRegExp(/\.coffee/));
|
315
|
+
|
316
|
+
// ---------------------------------------------------------------------------
|
317
|
+
simple.equal(212, extractMatches("..3 and 4 plus 5", /\d+/g, parseInt), [3, 4, 5]);
|
318
|
+
|
319
|
+
simple.equal(214, extractMatches("And This Is A String", /A/g), ['A', 'A']);
|
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "@jdeighan/coffee-utils",
|
3
3
|
"type": "module",
|
4
|
-
"version": "4.
|
4
|
+
"version": "4.1.3",
|
5
5
|
"description": "A set of utility functions for CoffeeScript",
|
6
6
|
"main": "coffee_utils.js",
|
7
7
|
"exports": {
|
@@ -20,10 +20,10 @@
|
|
20
20
|
"node": ">=12.0.0"
|
21
21
|
},
|
22
22
|
"scripts": {
|
23
|
-
"build": "cls && coffee -c
|
24
|
-
"pretest": "
|
23
|
+
"build": "cls && rm -f ./src/*.js && coffee -c ./src",
|
24
|
+
"pretest": "npm run build && rm -f ./test/*.js && rm -f ./test/*.coffee && cielo -fq ./test",
|
25
25
|
"test": "ava ./test/*.test.js",
|
26
|
-
"prefinaltest": "
|
26
|
+
"prefinaltest": "npm run pretest",
|
27
27
|
"finaltest": "cross-env FINALTEST=yes ava ./test/*.test.js"
|
28
28
|
},
|
29
29
|
"repository": {
|
@@ -42,6 +42,7 @@
|
|
42
42
|
"dependencies": {
|
43
43
|
"ava": "^3.15.0",
|
44
44
|
"cross-env": "^7.0.3",
|
45
|
-
"js-yaml": "^4.1.0"
|
45
|
+
"js-yaml": "^4.1.0",
|
46
|
+
"readline-sync": "^1.4.10"
|
46
47
|
}
|
47
48
|
}
|
package/src/UnitTester.coffee
CHANGED
@@ -8,9 +8,7 @@ import {
|
|
8
8
|
} from '@jdeighan/coffee-utils'
|
9
9
|
import {blockToArray} from '@jdeighan/coffee-utils/block'
|
10
10
|
import {log, currentLogger, setLogger} from '@jdeighan/coffee-utils/log'
|
11
|
-
import {
|
12
|
-
debug, debugging, setDebugging,
|
13
|
-
} from '@jdeighan/coffee-utils/debug'
|
11
|
+
import {debug, debugging, setDebugging} from '@jdeighan/coffee-utils/debug'
|
14
12
|
|
15
13
|
# ---------------------------------------------------------------------------
|
16
14
|
|
@@ -175,6 +173,9 @@ export class UnitTester
|
|
175
173
|
|
176
174
|
test: (lineNum, input, expected) ->
|
177
175
|
|
176
|
+
assert isInteger(lineNum),
|
177
|
+
"UnitTester.test(): arg 1 must be an integer"
|
178
|
+
|
178
179
|
@initialize()
|
179
180
|
@lineNum = lineNum # set an object property
|
180
181
|
|
@@ -187,9 +188,6 @@ export class UnitTester
|
|
187
188
|
if lineNum < -100000
|
188
189
|
setDebugging true
|
189
190
|
|
190
|
-
assert isInteger(lineNum),
|
191
|
-
"UnitTester.test(): arg 1 must be an integer"
|
192
|
-
|
193
191
|
lineNum = @getLineNum(lineNum) # corrects for duplicates
|
194
192
|
errMsg = undef
|
195
193
|
try
|
@@ -200,6 +198,7 @@ export class UnitTester
|
|
200
198
|
errMsg = err.message || 'UNKNOWN ERROR'
|
201
199
|
log "got ERROR: #{errMsg}"
|
202
200
|
|
201
|
+
expected = @transformExpected(expected)
|
203
202
|
if isString(expected)
|
204
203
|
expected = @normalize(expected)
|
205
204
|
|
@@ -236,6 +235,11 @@ export class UnitTester
|
|
236
235
|
|
237
236
|
# ........................................................................
|
238
237
|
|
238
|
+
transformExpected: (input) ->
|
239
|
+
return input
|
240
|
+
|
241
|
+
# ........................................................................
|
242
|
+
|
239
243
|
getLineNum: (lineNum) ->
|
240
244
|
|
241
245
|
if @fulltest && (lineNum < 0)
|
package/src/UnitTester.js
CHANGED
@@ -185,6 +185,7 @@ export var UnitTester = class UnitTester {
|
|
185
185
|
// ........................................................................
|
186
186
|
test(lineNum, input, expected) {
|
187
187
|
var err, errMsg, got, whichTest;
|
188
|
+
assert(isInteger(lineNum), "UnitTester.test(): arg 1 must be an integer");
|
188
189
|
this.initialize();
|
189
190
|
this.lineNum = lineNum; // set an object property
|
190
191
|
if ((lineNum < 0) && process.env.FINALTEST) {
|
@@ -196,7 +197,6 @@ export var UnitTester = class UnitTester {
|
|
196
197
|
if (lineNum < -100000) {
|
197
198
|
setDebugging(true);
|
198
199
|
}
|
199
|
-
assert(isInteger(lineNum), "UnitTester.test(): arg 1 must be an integer");
|
200
200
|
lineNum = this.getLineNum(lineNum); // corrects for duplicates
|
201
201
|
errMsg = undef;
|
202
202
|
try {
|
@@ -209,6 +209,7 @@ export var UnitTester = class UnitTester {
|
|
209
209
|
errMsg = err.message || 'UNKNOWN ERROR';
|
210
210
|
log(`got ERROR: ${errMsg}`);
|
211
211
|
}
|
212
|
+
expected = this.transformExpected(expected);
|
212
213
|
if (isString(expected)) {
|
213
214
|
expected = this.normalize(expected);
|
214
215
|
}
|
@@ -248,6 +249,11 @@ export var UnitTester = class UnitTester {
|
|
248
249
|
return input;
|
249
250
|
}
|
250
251
|
|
252
|
+
// ........................................................................
|
253
|
+
transformExpected(input) {
|
254
|
+
return input;
|
255
|
+
}
|
256
|
+
|
251
257
|
// ........................................................................
|
252
258
|
getLineNum(lineNum) {
|
253
259
|
if (this.fulltest && (lineNum < 0)) {
|
package/src/coffee_utils.coffee
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# coffee_utils.coffee
|
2
2
|
|
3
|
+
import getline from 'readline-sync'
|
3
4
|
import {log} from '@jdeighan/coffee-utils/log'
|
4
5
|
|
5
6
|
export sep_dash = '-'.repeat(42)
|
@@ -212,9 +213,9 @@ export warn = (message) ->
|
|
212
213
|
# say - print to the console (for now)
|
213
214
|
# later, on a web page, call alert(str)
|
214
215
|
|
215
|
-
export say = (str
|
216
|
+
export say = (str) ->
|
216
217
|
|
217
|
-
log str
|
218
|
+
console.log str
|
218
219
|
return
|
219
220
|
|
220
221
|
# ---------------------------------------------------------------------------
|
@@ -223,7 +224,8 @@ export say = (str, obj=undef) ->
|
|
223
224
|
|
224
225
|
export ask = (prompt) ->
|
225
226
|
|
226
|
-
|
227
|
+
answer = getline.question("{prompt}? ")
|
228
|
+
return answer
|
227
229
|
|
228
230
|
# ---------------------------------------------------------------------------
|
229
231
|
|
package/src/coffee_utils.js
CHANGED
@@ -2,6 +2,8 @@
|
|
2
2
|
// coffee_utils.coffee
|
3
3
|
var commentRegExp;
|
4
4
|
|
5
|
+
import getline from 'readline-sync';
|
6
|
+
|
5
7
|
import {
|
6
8
|
log
|
7
9
|
} from '@jdeighan/coffee-utils/log';
|
@@ -217,15 +219,17 @@ export var warn = function(message) {
|
|
217
219
|
// ---------------------------------------------------------------------------
|
218
220
|
// say - print to the console (for now)
|
219
221
|
// later, on a web page, call alert(str)
|
220
|
-
export var say = function(str
|
221
|
-
log(str
|
222
|
+
export var say = function(str) {
|
223
|
+
console.log(str);
|
222
224
|
};
|
223
225
|
|
224
226
|
// ---------------------------------------------------------------------------
|
225
227
|
// ask - ask a question
|
226
228
|
// later, on a web page, prompt the user for answer to question
|
227
229
|
export var ask = function(prompt) {
|
228
|
-
|
230
|
+
var answer;
|
231
|
+
answer = getline.question("{prompt}? ");
|
232
|
+
return answer;
|
229
233
|
};
|
230
234
|
|
231
235
|
// ---------------------------------------------------------------------------
|
package/src/debug_utils.coffee
CHANGED
@@ -5,7 +5,7 @@ import {
|
|
5
5
|
oneline, escapeStr, isNumber, isArray,
|
6
6
|
} from '@jdeighan/coffee-utils'
|
7
7
|
import {blockToArray} from '@jdeighan/coffee-utils/block'
|
8
|
-
import {log} from '@jdeighan/coffee-utils/log'
|
8
|
+
import {log, setLogger} from '@jdeighan/coffee-utils/log'
|
9
9
|
import {slurp} from '@jdeighan/coffee-utils/fs'
|
10
10
|
|
11
11
|
vbar = '│' # unicode 2502
|
@@ -23,7 +23,28 @@ lDebugStack = []
|
|
23
23
|
# --- These are saved/restored in lDebugStack
|
24
24
|
export debugging = false
|
25
25
|
ifMatches = undef
|
26
|
-
lDebugFuncs = undef
|
26
|
+
lDebugFuncs = undef # --- names of functions to debug
|
27
|
+
|
28
|
+
stdLogger = false
|
29
|
+
|
30
|
+
# ---------------------------------------------------------------------------
|
31
|
+
|
32
|
+
export useStdLogger = (flag=true) ->
|
33
|
+
|
34
|
+
stdLogger = flag
|
35
|
+
return
|
36
|
+
|
37
|
+
# ---------------------------------------------------------------------------
|
38
|
+
|
39
|
+
logger = (lArgs...) ->
|
40
|
+
|
41
|
+
if stdLogger
|
42
|
+
log lArgs...
|
43
|
+
else
|
44
|
+
orgLogger = setLogger(console.log)
|
45
|
+
log lArgs...
|
46
|
+
setLogger(orgLogger)
|
47
|
+
return
|
27
48
|
|
28
49
|
# ---------------------------------------------------------------------------
|
29
50
|
|
@@ -158,9 +179,9 @@ export debug = (lArgs...) ->
|
|
158
179
|
prefix = indent.repeat(debugLevel)
|
159
180
|
|
160
181
|
if (nArgs==1)
|
161
|
-
|
182
|
+
logger str, item, {prefix}
|
162
183
|
else
|
163
|
-
|
184
|
+
logger str, item, {
|
164
185
|
prefix,
|
165
186
|
logItem: true,
|
166
187
|
itemPrefix: stripArrow(prefix),
|
@@ -222,15 +243,15 @@ export checkTrace = (block) ->
|
|
222
243
|
funcName = lMatches[1]
|
223
244
|
len = lStack.length
|
224
245
|
if (len == 0)
|
225
|
-
|
246
|
+
logger "return from #{funcName} with empty stack"
|
226
247
|
else if (lStack[len-1] == funcName)
|
227
248
|
lStack.pop()
|
228
249
|
else if (lStack[len-2] == funcName)
|
229
|
-
|
250
|
+
logger "missing return from #{lStack[len-2]}"
|
230
251
|
lStack.pop()
|
231
252
|
lStack.pop()
|
232
253
|
else
|
233
|
-
|
254
|
+
logger "return from #{funcName} - not found on stack"
|
234
255
|
return
|
235
256
|
|
236
257
|
# ---------------------------------------------------------------------------
|
package/src/debug_utils.js
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
// Generated by CoffeeScript 2.6.1
|
2
2
|
// debug_utils.coffee
|
3
|
-
var arrow, arrowhead, corner, debugLevel, getPrefix, hbar, ifMatches, indent, lDebugFuncs, lDebugStack, reMethod, restoreDebugEnv, saveDebugEnv, stripArrow, vbar;
|
3
|
+
var arrow, arrowhead, corner, debugLevel, getPrefix, hbar, ifMatches, indent, lDebugFuncs, lDebugStack, logger, reMethod, restoreDebugEnv, saveDebugEnv, stdLogger, stripArrow, vbar;
|
4
4
|
|
5
5
|
import {
|
6
6
|
assert,
|
@@ -22,7 +22,8 @@ import {
|
|
22
22
|
} from '@jdeighan/coffee-utils/block';
|
23
23
|
|
24
24
|
import {
|
25
|
-
log
|
25
|
+
log,
|
26
|
+
setLogger
|
26
27
|
} from '@jdeighan/coffee-utils/log';
|
27
28
|
|
28
29
|
import {
|
@@ -50,7 +51,26 @@ export var debugging = false;
|
|
50
51
|
|
51
52
|
ifMatches = undef;
|
52
53
|
|
53
|
-
lDebugFuncs = undef;
|
54
|
+
lDebugFuncs = undef; // --- names of functions to debug
|
55
|
+
|
56
|
+
stdLogger = false;
|
57
|
+
|
58
|
+
// ---------------------------------------------------------------------------
|
59
|
+
export var useStdLogger = function(flag = true) {
|
60
|
+
stdLogger = flag;
|
61
|
+
};
|
62
|
+
|
63
|
+
// ---------------------------------------------------------------------------
|
64
|
+
logger = function(...lArgs) {
|
65
|
+
var orgLogger;
|
66
|
+
if (stdLogger) {
|
67
|
+
log(...lArgs);
|
68
|
+
} else {
|
69
|
+
orgLogger = setLogger(console.log);
|
70
|
+
log(...lArgs);
|
71
|
+
setLogger(orgLogger);
|
72
|
+
}
|
73
|
+
};
|
54
74
|
|
55
75
|
// ---------------------------------------------------------------------------
|
56
76
|
stripArrow = function(prefix) {
|
@@ -157,9 +177,9 @@ export var debug = function(...lArgs) {
|
|
157
177
|
prefix = indent.repeat(debugLevel);
|
158
178
|
}
|
159
179
|
if (nArgs === 1) {
|
160
|
-
|
180
|
+
logger(str, item, {prefix});
|
161
181
|
} else {
|
162
|
-
|
182
|
+
logger(str, item, {
|
163
183
|
prefix,
|
164
184
|
logItem: true,
|
165
185
|
itemPrefix: stripArrow(prefix)
|
@@ -208,15 +228,15 @@ export var checkTrace = function(block) {
|
|
208
228
|
funcName = lMatches[1];
|
209
229
|
len = lStack.length;
|
210
230
|
if (len === 0) {
|
211
|
-
|
231
|
+
logger(`return from ${funcName} with empty stack`);
|
212
232
|
} else if (lStack[len - 1] === funcName) {
|
213
233
|
lStack.pop();
|
214
234
|
} else if (lStack[len - 2] === funcName) {
|
215
|
-
|
235
|
+
logger(`missing return from ${lStack[len - 2]}`);
|
216
236
|
lStack.pop();
|
217
237
|
lStack.pop();
|
218
238
|
} else {
|
219
|
-
|
239
|
+
logger(`return from ${funcName} - not found on stack`);
|
220
240
|
}
|
221
241
|
}
|
222
242
|
}
|