@jdeighan/coffee-utils 7.0.31 → 7.0.32
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/package.json +1 -1
- package/src/coffee_utils.coffee +11 -3
- package/src/coffee_utils.js +17 -2
- package/src/fs_utils.coffee +8 -0
- package/src/fs_utils.js +6 -1
package/package.json
CHANGED
package/src/coffee_utils.coffee
CHANGED
|
@@ -19,12 +19,13 @@ export error = (message) ->
|
|
|
19
19
|
|
|
20
20
|
# ---------------------------------------------------------------------------
|
|
21
21
|
# assert - mimic nodejs's assert
|
|
22
|
+
# return true so we can use it in boolean expressions
|
|
22
23
|
|
|
23
24
|
export assert = (cond, msg) ->
|
|
24
25
|
|
|
25
26
|
if ! cond
|
|
26
27
|
error(msg)
|
|
27
|
-
return
|
|
28
|
+
return true
|
|
28
29
|
|
|
29
30
|
# ---------------------------------------------------------------------------
|
|
30
31
|
# croak - throws an error after possibly printing useful info
|
|
@@ -85,9 +86,16 @@ export isArray = (x) ->
|
|
|
85
86
|
|
|
86
87
|
# ---------------------------------------------------------------------------
|
|
87
88
|
|
|
88
|
-
export isHash = (x) ->
|
|
89
|
+
export isHash = (x, lKeys) ->
|
|
89
90
|
|
|
90
|
-
|
|
91
|
+
if ! x || (getClassName(x) != 'Object')
|
|
92
|
+
return false
|
|
93
|
+
if defined(lKeys)
|
|
94
|
+
assert isArray(lKeys), "isHash(): lKeys not an array"
|
|
95
|
+
for key in lKeys
|
|
96
|
+
if ! x.hasOwnProperty(key)
|
|
97
|
+
return false
|
|
98
|
+
return true
|
|
91
99
|
|
|
92
100
|
# ---------------------------------------------------------------------------
|
|
93
101
|
|
package/src/coffee_utils.js
CHANGED
|
@@ -25,10 +25,12 @@ export var error = function(message) {
|
|
|
25
25
|
|
|
26
26
|
// ---------------------------------------------------------------------------
|
|
27
27
|
// assert - mimic nodejs's assert
|
|
28
|
+
// return true so we can use it in boolean expressions
|
|
28
29
|
export var assert = function(cond, msg) {
|
|
29
30
|
if (!cond) {
|
|
30
31
|
error(msg);
|
|
31
32
|
}
|
|
33
|
+
return true;
|
|
32
34
|
};
|
|
33
35
|
|
|
34
36
|
// ---------------------------------------------------------------------------
|
|
@@ -77,8 +79,21 @@ export var isArray = function(x) {
|
|
|
77
79
|
};
|
|
78
80
|
|
|
79
81
|
// ---------------------------------------------------------------------------
|
|
80
|
-
export var isHash = function(x) {
|
|
81
|
-
|
|
82
|
+
export var isHash = function(x, lKeys) {
|
|
83
|
+
var i, key, len;
|
|
84
|
+
if (!x || (getClassName(x) !== 'Object')) {
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
if (defined(lKeys)) {
|
|
88
|
+
assert(isArray(lKeys), "isHash(): lKeys not an array");
|
|
89
|
+
for (i = 0, len = lKeys.length; i < len; i++) {
|
|
90
|
+
key = lKeys[i];
|
|
91
|
+
if (!x.hasOwnProperty(key)) {
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return true;
|
|
82
97
|
};
|
|
83
98
|
|
|
84
99
|
// ---------------------------------------------------------------------------
|
package/src/fs_utils.coffee
CHANGED
|
@@ -361,6 +361,7 @@ export parseSource = (source) ->
|
|
|
361
361
|
# fullpath
|
|
362
362
|
# stub
|
|
363
363
|
# ext
|
|
364
|
+
# purpose
|
|
364
365
|
# }
|
|
365
366
|
# --- NOTE: source may be a file URL, e.g. import.meta.url
|
|
366
367
|
|
|
@@ -394,6 +395,13 @@ export parseSource = (source) ->
|
|
|
394
395
|
stub: hInfo.name
|
|
395
396
|
ext: hInfo.ext
|
|
396
397
|
}
|
|
398
|
+
|
|
399
|
+
# --- check for a 'purpose'
|
|
400
|
+
if lMatches = hSourceInfo.stub.match(///
|
|
401
|
+
\.
|
|
402
|
+
([A-Za-z_]+)
|
|
403
|
+
$///)
|
|
404
|
+
hSourceInfo.purpose = lMatches[1]
|
|
397
405
|
debug "return from parseSource()", hSourceInfo
|
|
398
406
|
return hSourceInfo
|
|
399
407
|
|
package/src/fs_utils.js
CHANGED
|
@@ -422,13 +422,14 @@ export var shortenPath = function(path) {
|
|
|
422
422
|
|
|
423
423
|
// ---------------------------------------------------------------------------
|
|
424
424
|
export var parseSource = function(source) {
|
|
425
|
-
var dir, hInfo, hSourceInfo;
|
|
425
|
+
var dir, hInfo, hSourceInfo, lMatches;
|
|
426
426
|
// --- returns {
|
|
427
427
|
// dir
|
|
428
428
|
// filename
|
|
429
429
|
// fullpath
|
|
430
430
|
// stub
|
|
431
431
|
// ext
|
|
432
|
+
// purpose
|
|
432
433
|
// }
|
|
433
434
|
// --- NOTE: source may be a file URL, e.g. import.meta.url
|
|
434
435
|
debug("enter parseSource()");
|
|
@@ -462,6 +463,10 @@ export var parseSource = function(source) {
|
|
|
462
463
|
ext: hInfo.ext
|
|
463
464
|
};
|
|
464
465
|
}
|
|
466
|
+
// --- check for a 'purpose'
|
|
467
|
+
if (lMatches = hSourceInfo.stub.match(/\.([A-Za-z_]+)$/)) {
|
|
468
|
+
hSourceInfo.purpose = lMatches[1];
|
|
469
|
+
}
|
|
465
470
|
}
|
|
466
471
|
debug("return from parseSource()", hSourceInfo);
|
|
467
472
|
return hSourceInfo;
|