@jdeighan/coffee-utils 4.1.5 → 4.1.9
Sign up to get free protection for your applications and to get access to all the features.
- package/package.json +1 -2
- package/src/block_utils.coffee +1 -0
- package/src/block_utils.js +1 -0
- package/src/coffee_utils.coffee +40 -2
- package/src/coffee_utils.js +43 -2
- package/src/debug_utils.coffee +1 -0
- package/src/debug_utils.js +1 -0
- package/src/fs_utils.coffee +29 -3
- package/src/fs_utils.js +33 -3
- package/src/indent_utils.coffee +4 -1
- package/src/indent_utils.js +9 -4
- package/temp.js +26 -0
- package/.save/block.test.coffee +0 -185
- package/.save/block.test.js +0 -129
- package/.save/block2.test.coffee +0 -47
- package/.save/block2.test.js +0 -64
- package/.save/debug.test.coffee +0 -290
- package/.save/debug.test.js +0 -242
- package/.save/fs.test.coffee +0 -148
- package/.save/fs.test.js +0 -191
- package/.save/indent.test.coffee +0 -130
- package/.save/indent.test.js +0 -136
- package/.save/log.test.coffee +0 -315
- package/.save/log.test.js +0 -336
- package/.save/privenv.test.coffee +0 -38
- package/.save/privenv.test.js +0 -54
- package/.save/temp.coffee +0 -19
- package/.save/temp.js +0 -28
- package/.save/tester.test.coffee +0 -75
- package/.save/tester.test.js +0 -93
- package/.save/utils.test.coffee +0 -214
- package/.save/utils.test.js +0 -319
- package/src/private_env.coffee +0 -52
- package/src/private_env.js +0 -63
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "@jdeighan/coffee-utils",
|
3
3
|
"type": "module",
|
4
|
-
"version": "4.1.
|
4
|
+
"version": "4.1.9",
|
5
5
|
"description": "A set of utility functions for CoffeeScript",
|
6
6
|
"main": "coffee_utils.js",
|
7
7
|
"exports": {
|
@@ -13,7 +13,6 @@
|
|
13
13
|
"./debug": "./src/debug_utils.js",
|
14
14
|
"./svelte": "./src/svelte_utils.js",
|
15
15
|
"./test": "./src/UnitTester.js",
|
16
|
-
"./privenv": "./src/private_env.js",
|
17
16
|
"./package.json": "./package.json"
|
18
17
|
},
|
19
18
|
"engines": {
|
package/src/block_utils.coffee
CHANGED
package/src/block_utils.js
CHANGED
@@ -110,6 +110,7 @@ export var joinBlocks = function(...lBlocks) {
|
|
110
110
|
lNonEmptyBlocks = [];
|
111
111
|
for (i = 0, len1 = lBlocks.length; i < len1; i++) {
|
112
112
|
block = lBlocks[i];
|
113
|
+
assert(isString(block), "joinBlocks(): block is not a string");
|
113
114
|
if (nonEmpty(block)) {
|
114
115
|
lNonEmptyBlocks.push(block);
|
115
116
|
}
|
package/src/coffee_utils.coffee
CHANGED
@@ -100,6 +100,14 @@ export isHash = (x) ->
|
|
100
100
|
|
101
101
|
return (getClassName(x) == 'Object')
|
102
102
|
|
103
|
+
# ---------------------------------------------------------------------------
|
104
|
+
|
105
|
+
export hashHasKey = (x, key) ->
|
106
|
+
|
107
|
+
assert isHash(x), "hashHasKey(): not a hash"
|
108
|
+
assert isString(key), "hashHasKey(): key not a string"
|
109
|
+
return x.hasOwnProperty(key)
|
110
|
+
|
103
111
|
# ---------------------------------------------------------------------------
|
104
112
|
# isEmpty
|
105
113
|
# - string is whitespace, array has no elements, hash has no keys
|
@@ -149,6 +157,7 @@ export setCommentRegexp = (regexp) ->
|
|
149
157
|
|
150
158
|
export isComment = (str) ->
|
151
159
|
|
160
|
+
assert isString(str), "isComment(): not a string"
|
152
161
|
return if str.match(commentRegExp) then true else false
|
153
162
|
|
154
163
|
# ---------------------------------------------------------------------------
|
@@ -215,13 +224,23 @@ export warn = (message) ->
|
|
215
224
|
|
216
225
|
log "WARNING: #{message}"
|
217
226
|
|
227
|
+
# ---------------------------------------------------------------------------
|
228
|
+
# hashToStr - stringify a hash
|
229
|
+
|
230
|
+
export hashToStr = (h) ->
|
231
|
+
|
232
|
+
return JSON.stringify(h, Object.keys(h).sort(), 3)
|
233
|
+
|
218
234
|
# ---------------------------------------------------------------------------
|
219
235
|
# say - print to the console (for now)
|
220
236
|
# later, on a web page, call alert(str)
|
221
237
|
|
222
|
-
export say = (
|
238
|
+
export say = (x) ->
|
223
239
|
|
224
|
-
|
240
|
+
if isHash(x)
|
241
|
+
console.log hashToStr(x)
|
242
|
+
else
|
243
|
+
console.log x
|
225
244
|
return
|
226
245
|
|
227
246
|
# ---------------------------------------------------------------------------
|
@@ -254,6 +273,7 @@ export titleLine = (title, char='=', padding=2, linelen=42) ->
|
|
254
273
|
|
255
274
|
export rtrim = (line) ->
|
256
275
|
|
276
|
+
assert isString(line), "rtrim(): line is not a string"
|
257
277
|
lMatches = line.match(/\s+$/)
|
258
278
|
if lMatches?
|
259
279
|
n = lMatches[0].length # num chars to remove
|
@@ -347,3 +367,21 @@ export extractMatches = (line, regexp, convertFunc=undef) ->
|
|
347
367
|
return lStrings
|
348
368
|
|
349
369
|
# ---------------------------------------------------------------------------
|
370
|
+
|
371
|
+
export envVarsWithPrefix = (prefix, hOptions={}) ->
|
372
|
+
# --- valid options:
|
373
|
+
# stripPrefix
|
374
|
+
|
375
|
+
assert prefix, "envVarsWithPrefix: empty prefix!"
|
376
|
+
plen = prefix.length
|
377
|
+
h = {}
|
378
|
+
for key in Object.keys(process.env)
|
379
|
+
if key.indexOf(prefix) == 0
|
380
|
+
if hOptions.stripPrefix
|
381
|
+
h[key.substr(plen)] = process.env[key]
|
382
|
+
else
|
383
|
+
h[key] = process.env[key]
|
384
|
+
return h
|
385
|
+
|
386
|
+
# ---------------------------------------------------------------------------
|
387
|
+
|
package/src/coffee_utils.js
CHANGED
@@ -97,6 +97,13 @@ export var isHash = function(x) {
|
|
97
97
|
return getClassName(x) === 'Object';
|
98
98
|
};
|
99
99
|
|
100
|
+
// ---------------------------------------------------------------------------
|
101
|
+
export var hashHasKey = function(x, key) {
|
102
|
+
assert(isHash(x), "hashHasKey(): not a hash");
|
103
|
+
assert(isString(key), "hashHasKey(): key not a string");
|
104
|
+
return x.hasOwnProperty(key);
|
105
|
+
};
|
106
|
+
|
100
107
|
// ---------------------------------------------------------------------------
|
101
108
|
// isEmpty
|
102
109
|
// - string is whitespace, array has no elements, hash has no keys
|
@@ -147,6 +154,7 @@ export var setCommentRegexp = function(regexp) {
|
|
147
154
|
|
148
155
|
// ---------------------------------------------------------------------------
|
149
156
|
export var isComment = function(str) {
|
157
|
+
assert(isString(str), "isComment(): not a string");
|
150
158
|
if (str.match(commentRegExp)) {
|
151
159
|
return true;
|
152
160
|
} else {
|
@@ -221,11 +229,21 @@ export var warn = function(message) {
|
|
221
229
|
return log(`WARNING: ${message}`);
|
222
230
|
};
|
223
231
|
|
232
|
+
// ---------------------------------------------------------------------------
|
233
|
+
// hashToStr - stringify a hash
|
234
|
+
export var hashToStr = function(h) {
|
235
|
+
return JSON.stringify(h, Object.keys(h).sort(), 3);
|
236
|
+
};
|
237
|
+
|
224
238
|
// ---------------------------------------------------------------------------
|
225
239
|
// say - print to the console (for now)
|
226
240
|
// later, on a web page, call alert(str)
|
227
|
-
export var say = function(
|
228
|
-
|
241
|
+
export var say = function(x) {
|
242
|
+
if (isHash(x)) {
|
243
|
+
console.log(hashToStr(x));
|
244
|
+
} else {
|
245
|
+
console.log(x);
|
246
|
+
}
|
229
247
|
};
|
230
248
|
|
231
249
|
// ---------------------------------------------------------------------------
|
@@ -256,6 +274,7 @@ export var titleLine = function(title, char = '=', padding = 2, linelen = 42) {
|
|
256
274
|
// rtrim - strip trailing whitespace
|
257
275
|
export var rtrim = function(line) {
|
258
276
|
var lMatches, n;
|
277
|
+
assert(isString(line), "rtrim(): line is not a string");
|
259
278
|
lMatches = line.match(/\s+$/);
|
260
279
|
if (lMatches != null) {
|
261
280
|
n = lMatches[0].length; // num chars to remove
|
@@ -382,3 +401,25 @@ export var extractMatches = function(line, regexp, convertFunc = undef) {
|
|
382
401
|
};
|
383
402
|
|
384
403
|
// ---------------------------------------------------------------------------
|
404
|
+
export var envVarsWithPrefix = function(prefix, hOptions = {}) {
|
405
|
+
var h, i, key, len, plen, ref;
|
406
|
+
// --- valid options:
|
407
|
+
// stripPrefix
|
408
|
+
assert(prefix, "envVarsWithPrefix: empty prefix!");
|
409
|
+
plen = prefix.length;
|
410
|
+
h = {};
|
411
|
+
ref = Object.keys(process.env);
|
412
|
+
for (i = 0, len = ref.length; i < len; i++) {
|
413
|
+
key = ref[i];
|
414
|
+
if (key.indexOf(prefix) === 0) {
|
415
|
+
if (hOptions.stripPrefix) {
|
416
|
+
h[key.substr(plen)] = process.env[key];
|
417
|
+
} else {
|
418
|
+
h[key] = process.env[key];
|
419
|
+
}
|
420
|
+
}
|
421
|
+
}
|
422
|
+
return h;
|
423
|
+
};
|
424
|
+
|
425
|
+
// ---------------------------------------------------------------------------
|
package/src/debug_utils.coffee
CHANGED
package/src/debug_utils.js
CHANGED
@@ -204,6 +204,7 @@ reMethod = /^([A-Za-z_][A-Za-z0-9_]*)\.([A-Za-z_][A-Za-z0-9_]*)$/;
|
|
204
204
|
// --- export only to allow unit tests
|
205
205
|
export var funcMatch = function(curFunc) {
|
206
206
|
var _, cls, lMatches, meth;
|
207
|
+
assert(isString(curFunc), "funcMatch(): not a string");
|
207
208
|
if (lDebugFuncs.includes(curFunc)) {
|
208
209
|
return true;
|
209
210
|
} else if ((lMatches = curFunc.match(reMethod)) && ([_, cls, meth] = lMatches) && lDebugFuncs.includes(meth)) {
|
package/src/fs_utils.coffee
CHANGED
@@ -6,7 +6,7 @@ import fs from 'fs'
|
|
6
6
|
|
7
7
|
import {
|
8
8
|
assert, undef, pass, rtrim, error, nonEmpty,
|
9
|
-
isRegExp, isFunction, croak,
|
9
|
+
isString, isRegExp, isFunction, croak,
|
10
10
|
} from '@jdeighan/coffee-utils'
|
11
11
|
import {log} from '@jdeighan/coffee-utils/log'
|
12
12
|
import {debug} from '@jdeighan/coffee-utils/debug'
|
@@ -34,6 +34,7 @@ export isSimpleFileName = (path) ->
|
|
34
34
|
|
35
35
|
export fileExt = (path) ->
|
36
36
|
|
37
|
+
assert isString(path), "fileExt(): path not a string"
|
37
38
|
if lMatches = path.match(/\.[A-Za-z0-9_]+$/)
|
38
39
|
return lMatches[0]
|
39
40
|
else
|
@@ -45,8 +46,14 @@ export fileExt = (path) ->
|
|
45
46
|
|
46
47
|
export mydir = (url) ->
|
47
48
|
|
48
|
-
|
49
|
-
|
49
|
+
debug "url = #{url}"
|
50
|
+
path = urllib.fileURLToPath(url)
|
51
|
+
debug "path = #{path}"
|
52
|
+
dir = pathlib.dirname(path)
|
53
|
+
debug "dir = #{dir}"
|
54
|
+
final = mkpath(dir)
|
55
|
+
debug "final = #{final}"
|
56
|
+
return final
|
50
57
|
|
51
58
|
# ---------------------------------------------------------------------------
|
52
59
|
|
@@ -129,6 +136,25 @@ export withExt = (path, newExt, hOptions={}) ->
|
|
129
136
|
name = name.substr(1)
|
130
137
|
return mkpath(dir, "#{name}#{newExt}")
|
131
138
|
|
139
|
+
# ---------------------------------------------------------------------------
|
140
|
+
# removeFileWithExt - remove file with different ext
|
141
|
+
|
142
|
+
export removeFileWithExt = (path, newExt, hOptions={}) ->
|
143
|
+
# --- Valid options:
|
144
|
+
# doLog
|
145
|
+
# removeLeadingUnderScore
|
146
|
+
|
147
|
+
fullpath = withExt(path, newExt, hOptions)
|
148
|
+
try
|
149
|
+
fs.unlinkSync fullpath
|
150
|
+
if hOptions.doLog
|
151
|
+
log " unlink #{filename}"
|
152
|
+
success = true
|
153
|
+
catch err
|
154
|
+
log " UNLINK FAILED: #{err.message}"
|
155
|
+
success = false
|
156
|
+
return success
|
157
|
+
|
132
158
|
# ---------------------------------------------------------------------------
|
133
159
|
# withUnderScore - add '_' to file name
|
134
160
|
|
package/src/fs_utils.js
CHANGED
@@ -13,6 +13,7 @@ import {
|
|
13
13
|
rtrim,
|
14
14
|
error,
|
15
15
|
nonEmpty,
|
16
|
+
isString,
|
16
17
|
isRegExp,
|
17
18
|
isFunction,
|
18
19
|
croak
|
@@ -46,6 +47,7 @@ export var isSimpleFileName = function(path) {
|
|
46
47
|
// ---------------------------------------------------------------------------
|
47
48
|
export var fileExt = function(path) {
|
48
49
|
var lMatches;
|
50
|
+
assert(isString(path), "fileExt(): path not a string");
|
49
51
|
if (lMatches = path.match(/\.[A-Za-z0-9_]+$/)) {
|
50
52
|
return lMatches[0];
|
51
53
|
} else {
|
@@ -57,9 +59,15 @@ export var fileExt = function(path) {
|
|
57
59
|
// mydir() - pass argument `import.meta.url` and it will return
|
58
60
|
// the directory your file is in
|
59
61
|
export var mydir = function(url) {
|
60
|
-
var dir;
|
61
|
-
|
62
|
-
|
62
|
+
var dir, final, path;
|
63
|
+
debug(`url = ${url}`);
|
64
|
+
path = urllib.fileURLToPath(url);
|
65
|
+
debug(`path = ${path}`);
|
66
|
+
dir = pathlib.dirname(path);
|
67
|
+
debug(`dir = ${dir}`);
|
68
|
+
final = mkpath(dir);
|
69
|
+
debug(`final = ${final}`);
|
70
|
+
return final;
|
63
71
|
};
|
64
72
|
|
65
73
|
// ---------------------------------------------------------------------------
|
@@ -148,6 +156,28 @@ export var withExt = function(path, newExt, hOptions = {}) {
|
|
148
156
|
return mkpath(dir, `${name}${newExt}`);
|
149
157
|
};
|
150
158
|
|
159
|
+
// ---------------------------------------------------------------------------
|
160
|
+
// removeFileWithExt - remove file with different ext
|
161
|
+
export var removeFileWithExt = function(path, newExt, hOptions = {}) {
|
162
|
+
var err, fullpath, success;
|
163
|
+
// --- Valid options:
|
164
|
+
// doLog
|
165
|
+
// removeLeadingUnderScore
|
166
|
+
fullpath = withExt(path, newExt, hOptions);
|
167
|
+
try {
|
168
|
+
fs.unlinkSync(fullpath);
|
169
|
+
if (hOptions.doLog) {
|
170
|
+
log(` unlink ${filename}`);
|
171
|
+
}
|
172
|
+
success = true;
|
173
|
+
} catch (error1) {
|
174
|
+
err = error1;
|
175
|
+
log(` UNLINK FAILED: ${err.message}`);
|
176
|
+
success = false;
|
177
|
+
}
|
178
|
+
return success;
|
179
|
+
};
|
180
|
+
|
151
181
|
// ---------------------------------------------------------------------------
|
152
182
|
// withUnderScore - add '_' to file name
|
153
183
|
export var withUnderScore = function(path) {
|
package/src/indent_utils.coffee
CHANGED
@@ -14,7 +14,7 @@ import {arrayToBlock, blockToArray} from '@jdeighan/coffee-utils/block'
|
|
14
14
|
export splitLine = (line) ->
|
15
15
|
|
16
16
|
assert line?, "splitLine(): line is undef"
|
17
|
-
assert (
|
17
|
+
assert isString(line), "splitLine(): line is not a string"
|
18
18
|
line = rtrim(line)
|
19
19
|
lMatches = line.match(/^(\s*)(.*)$/)
|
20
20
|
return [lMatches[1].length, lMatches[2]]
|
@@ -34,6 +34,7 @@ export indentation = (level) ->
|
|
34
34
|
|
35
35
|
export indentLevel = (str) ->
|
36
36
|
|
37
|
+
assert isString(str), "indentLevel(): not a string"
|
37
38
|
lMatches = str.match(/^\t*/)
|
38
39
|
return lMatches[0].length
|
39
40
|
|
@@ -76,6 +77,8 @@ export undented = (text, level=undef) ->
|
|
76
77
|
return ''
|
77
78
|
else if isArray(text)
|
78
79
|
lLines = text
|
80
|
+
for line in lLines
|
81
|
+
assert isString(line), "undented(): input array is not all strings"
|
79
82
|
if (lLines.length == 0)
|
80
83
|
return []
|
81
84
|
else
|
package/src/indent_utils.js
CHANGED
@@ -25,7 +25,7 @@ import {
|
|
25
25
|
export var splitLine = function(line) {
|
26
26
|
var lMatches;
|
27
27
|
assert(line != null, "splitLine(): line is undef");
|
28
|
-
assert(
|
28
|
+
assert(isString(line), "splitLine(): line is not a string");
|
29
29
|
line = rtrim(line);
|
30
30
|
lMatches = line.match(/^(\s*)(.*)$/);
|
31
31
|
return [lMatches[1].length, lMatches[2]];
|
@@ -44,6 +44,7 @@ export var indentation = function(level) {
|
|
44
44
|
// it's OK if the string is ONLY indentation
|
45
45
|
export var indentLevel = function(str) {
|
46
46
|
var lMatches;
|
47
|
+
assert(isString(str), "indentLevel(): not a string");
|
47
48
|
lMatches = str.match(/^\t*/);
|
48
49
|
return lMatches[0].length;
|
49
50
|
};
|
@@ -84,7 +85,7 @@ export var indented = function(input, level = 0) {
|
|
84
85
|
// indentation is removed
|
85
86
|
// - returns same type as text, i.e. either string or array
|
86
87
|
export var undented = function(text, level = undef) {
|
87
|
-
var i, lLines, lMatches, lNewLines, len, line, nToRemove, toRemove;
|
88
|
+
var i, j, lLines, lMatches, lNewLines, len, len1, line, nToRemove, toRemove;
|
88
89
|
if ((level != null) && (level === 0)) {
|
89
90
|
return text;
|
90
91
|
}
|
@@ -95,6 +96,10 @@ export var undented = function(text, level = undef) {
|
|
95
96
|
}
|
96
97
|
} else if (isArray(text)) {
|
97
98
|
lLines = text;
|
99
|
+
for (i = 0, len = lLines.length; i < len; i++) {
|
100
|
+
line = lLines[i];
|
101
|
+
assert(isString(line), "undented(): input array is not all strings");
|
102
|
+
}
|
98
103
|
if (lLines.length === 0) {
|
99
104
|
return [];
|
100
105
|
}
|
@@ -111,8 +116,8 @@ export var undented = function(text, level = undef) {
|
|
111
116
|
}
|
112
117
|
nToRemove = toRemove.length;
|
113
118
|
lNewLines = [];
|
114
|
-
for (
|
115
|
-
line = lLines[
|
119
|
+
for (j = 0, len1 = lLines.length; j < len1; j++) {
|
120
|
+
line = lLines[j];
|
116
121
|
if (isEmpty(line)) {
|
117
122
|
lNewLines.push('');
|
118
123
|
} else {
|
package/temp.js
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
// Generated by CoffeeScript 2.6.1
|
2
|
+
// temp.coffee
|
3
|
+
var dir;
|
4
|
+
|
5
|
+
import {
|
6
|
+
say
|
7
|
+
} from '@jdeighan/coffee-utils';
|
8
|
+
|
9
|
+
import {
|
10
|
+
log
|
11
|
+
} from '@jdeighan/coffee-utils/log';
|
12
|
+
|
13
|
+
import {
|
14
|
+
setDebugging
|
15
|
+
} from '@jdeighan/coffee-utils/debug';
|
16
|
+
|
17
|
+
import {
|
18
|
+
mydir,
|
19
|
+
mkpath
|
20
|
+
} from '@jdeighan/coffee-utils/fs';
|
21
|
+
|
22
|
+
setDebugging(true);
|
23
|
+
|
24
|
+
dir = mydir(import.meta.url);
|
25
|
+
|
26
|
+
say(`dir = ${dir}`);
|
package/.save/block.test.coffee
DELETED
@@ -1,185 +0,0 @@
|
|
1
|
-
# block.test.coffee
|
2
|
-
|
3
|
-
import assert from 'assert'
|
4
|
-
|
5
|
-
import {UnitTester} from '@jdeighan/coffee-utils/test'
|
6
|
-
import {
|
7
|
-
blockToArray, arrayToBlock, firstLine, remainingLines,
|
8
|
-
normalizeBlock, truncateBlock,
|
9
|
-
joinBlocks, forEachLine, forEachBlock, forEachSetOfBlocks,
|
10
|
-
} from '@jdeighan/coffee-utils/block'
|
11
|
-
|
12
|
-
simple = new UnitTester()
|
13
|
-
|
14
|
-
# ---------------------------------------------------------------------------
|
15
|
-
|
16
|
-
simple.equal 108, blockToArray("abc\nxyz\n"), [
|
17
|
-
'abc'
|
18
|
-
'xyz'
|
19
|
-
]
|
20
|
-
|
21
|
-
simple.equal 113, blockToArray("abc\nxyz\n\n\n\n"), [
|
22
|
-
'abc'
|
23
|
-
'xyz'
|
24
|
-
]
|
25
|
-
|
26
|
-
simple.equal 118, blockToArray("abc\n\nxyz\n"), [
|
27
|
-
'abc'
|
28
|
-
''
|
29
|
-
'xyz'
|
30
|
-
]
|
31
|
-
|
32
|
-
# ---------------------------------------------------------------------------
|
33
|
-
|
34
|
-
simple.equal 126, arrayToBlock(['a','b','c']), "a\nb\nc\n"
|
35
|
-
|
36
|
-
# ---------------------------------------------------------------------------
|
37
|
-
|
38
|
-
simple.equal 225, firstLine("""
|
39
|
-
#starbucks
|
40
|
-
do this
|
41
|
-
do that
|
42
|
-
"""), '#starbucks'
|
43
|
-
|
44
|
-
# ---------------------------------------------------------------------------
|
45
|
-
|
46
|
-
simple.equal 225, remainingLines("""
|
47
|
-
#starbucks
|
48
|
-
do this
|
49
|
-
do that
|
50
|
-
"""), """
|
51
|
-
do this
|
52
|
-
do that
|
53
|
-
"""
|
54
|
-
|
55
|
-
# ---------------------------------------------------------------------------
|
56
|
-
|
57
|
-
(() ->
|
58
|
-
str = joinBlocks('import me', '', 'do this\ndo that')
|
59
|
-
simple.equal 17, str, """
|
60
|
-
import me
|
61
|
-
do this
|
62
|
-
do that
|
63
|
-
"""
|
64
|
-
)()
|
65
|
-
|
66
|
-
# ---------------------------------------------------------------------------
|
67
|
-
|
68
|
-
simple.equal 49, normalizeBlock("""
|
69
|
-
line 1
|
70
|
-
line 2
|
71
|
-
"""), """
|
72
|
-
line 1
|
73
|
-
line 2
|
74
|
-
""" + '\n'
|
75
|
-
|
76
|
-
simple.equal 57, normalizeBlock("""
|
77
|
-
line 1
|
78
|
-
|
79
|
-
line 2
|
80
|
-
"""), """
|
81
|
-
line 1
|
82
|
-
line 2
|
83
|
-
""" + '\n'
|
84
|
-
|
85
|
-
simple.equal 66, normalizeBlock("""
|
86
|
-
|
87
|
-
line 1
|
88
|
-
|
89
|
-
line 2
|
90
|
-
|
91
|
-
|
92
|
-
"""), """
|
93
|
-
line 1
|
94
|
-
line 2
|
95
|
-
""" + '\n'
|
96
|
-
|
97
|
-
# ---------------------------------------------------------------------------
|
98
|
-
|
99
|
-
simple.equal 96, truncateBlock("""
|
100
|
-
line 1
|
101
|
-
line 2
|
102
|
-
line 3
|
103
|
-
line 4
|
104
|
-
""", 2), """
|
105
|
-
line 1
|
106
|
-
line 2
|
107
|
-
""" + '\n'
|
108
|
-
|
109
|
-
# ---------------------------------------------------------------------------
|
110
|
-
|
111
|
-
(() ->
|
112
|
-
lBlocks = [
|
113
|
-
"import {say} from '@jdeighan/coffee-utils'",
|
114
|
-
"",
|
115
|
-
"<script>\n\tx = 42\n</script>",
|
116
|
-
"",
|
117
|
-
]
|
118
|
-
str = joinBlocks(lBlocks...)
|
119
|
-
simple.equal 34, str, """
|
120
|
-
import {say} from '@jdeighan/coffee-utils'
|
121
|
-
<script>
|
122
|
-
x = 42
|
123
|
-
</script>
|
124
|
-
"""
|
125
|
-
)()
|
126
|
-
|
127
|
-
# ---------------------------------------------------------------------------
|
128
|
-
|
129
|
-
(() ->
|
130
|
-
lImports = [
|
131
|
-
"import {say} from '@jdeighan/coffee-utils'",
|
132
|
-
]
|
133
|
-
code = """
|
134
|
-
if (x==42)
|
135
|
-
log "line 2 in unit test"
|
136
|
-
"""
|
137
|
-
str = joinBlocks(lImports..., code)
|
138
|
-
simple.equal 34, str, """
|
139
|
-
|
140
|
-
import {say} from '@jdeighan/coffee-utils'
|
141
|
-
if (x==42)
|
142
|
-
log "line 2 in unit test"
|
143
|
-
"""
|
144
|
-
)()
|
145
|
-
|
146
|
-
# ---------------------------------------------------------------------------
|
147
|
-
# test forEachLine()
|
148
|
-
|
149
|
-
(() ->
|
150
|
-
lLines = []
|
151
|
-
|
152
|
-
callback = (line) ->
|
153
|
-
lLines.push line
|
154
|
-
return
|
155
|
-
|
156
|
-
filepath = "c:/Users/johnd/coffee-utils/test/data/file2.txt"
|
157
|
-
await forEachLine filepath, callback
|
158
|
-
|
159
|
-
simple.equal 55, lLines, [
|
160
|
-
"abc",
|
161
|
-
"def",
|
162
|
-
"ghi",
|
163
|
-
"jkl",
|
164
|
-
]
|
165
|
-
)()
|
166
|
-
|
167
|
-
# ---------------------------------------------------------------------------
|
168
|
-
# test forEachBlock()
|
169
|
-
|
170
|
-
(() ->
|
171
|
-
lBlocks = []
|
172
|
-
|
173
|
-
callback = (block) ->
|
174
|
-
lBlocks.push block
|
175
|
-
return
|
176
|
-
|
177
|
-
filepath = "c:/Users/johnd/coffee-utils/test/data/file3.txt"
|
178
|
-
await forEachBlock filepath, callback
|
179
|
-
|
180
|
-
simple.equal 76, lBlocks, [
|
181
|
-
"abc\ndef",
|
182
|
-
"abc\ndef\nghi",
|
183
|
-
"abc\ndef\nghi\njkl",
|
184
|
-
]
|
185
|
-
)()
|