@jdeighan/coffee-utils 7.0.21 → 7.0.22
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/fs_utils.coffee +36 -14
- package/src/fs_utils.js +42 -14
package/package.json
CHANGED
package/src/fs_utils.coffee
CHANGED
@@ -62,7 +62,12 @@ export isFile = (fullpath) ->
|
|
62
62
|
|
63
63
|
export isDir = (fullpath) ->
|
64
64
|
|
65
|
-
|
65
|
+
try
|
66
|
+
obj = fs.lstatSync(fullpath)
|
67
|
+
if !obj? then return false
|
68
|
+
return obj.isDirectory()
|
69
|
+
catch
|
70
|
+
return false
|
66
71
|
|
67
72
|
# ---------------------------------------------------------------------------
|
68
73
|
|
@@ -73,6 +78,16 @@ export isSimpleFileName = (path) ->
|
|
73
78
|
|
74
79
|
# ---------------------------------------------------------------------------
|
75
80
|
|
81
|
+
export fileStub = (path) ->
|
82
|
+
|
83
|
+
assert isString(path), "fileExt(): path not a string"
|
84
|
+
if lMatches = path.match(/^(.*)\.[A-Za-z0-9_]+$/)
|
85
|
+
return lMatches[1]
|
86
|
+
else
|
87
|
+
return ''
|
88
|
+
|
89
|
+
# ---------------------------------------------------------------------------
|
90
|
+
|
76
91
|
export fileExt = (path) ->
|
77
92
|
|
78
93
|
assert isString(path), "fileExt(): path not a string"
|
@@ -343,6 +358,7 @@ export parseSource = (source) ->
|
|
343
358
|
# --- returns {
|
344
359
|
# dir
|
345
360
|
# filename
|
361
|
+
# fullpath
|
346
362
|
# stub
|
347
363
|
# ext
|
348
364
|
# }
|
@@ -356,22 +372,28 @@ export parseSource = (source) ->
|
|
356
372
|
if source.match(/^file\:\/\//)
|
357
373
|
source = urllib.fileURLToPath(source)
|
358
374
|
|
359
|
-
|
360
|
-
if hInfo.dir
|
361
|
-
dir = mkpath(hInfo.dir) # change \ to /
|
375
|
+
if isDir(source)
|
362
376
|
hSourceInfo = {
|
363
|
-
dir
|
364
|
-
fullpath:
|
365
|
-
filename: hInfo.base
|
366
|
-
stub: hInfo.name
|
367
|
-
ext: hInfo.ext
|
377
|
+
dir: source
|
378
|
+
fullpath: source
|
368
379
|
}
|
369
380
|
else
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
381
|
+
hInfo = pathlib.parse(source)
|
382
|
+
if hInfo.dir
|
383
|
+
dir = mkpath(hInfo.dir) # change \ to /
|
384
|
+
hSourceInfo = {
|
385
|
+
dir
|
386
|
+
fullpath: mkpath(dir, hInfo.base)
|
387
|
+
filename: hInfo.base
|
388
|
+
stub: hInfo.name
|
389
|
+
ext: hInfo.ext
|
390
|
+
}
|
391
|
+
else
|
392
|
+
hSourceInfo = {
|
393
|
+
filename: hInfo.base
|
394
|
+
stub: hInfo.name
|
395
|
+
ext: hInfo.ext
|
396
|
+
}
|
375
397
|
debug "return from parseSource()", hSourceInfo
|
376
398
|
return hSourceInfo
|
377
399
|
|
package/src/fs_utils.js
CHANGED
@@ -85,7 +85,16 @@ export var isFile = function(fullpath) {
|
|
85
85
|
|
86
86
|
// ---------------------------------------------------------------------------
|
87
87
|
export var isDir = function(fullpath) {
|
88
|
-
|
88
|
+
var obj;
|
89
|
+
try {
|
90
|
+
obj = fs.lstatSync(fullpath);
|
91
|
+
if (obj == null) {
|
92
|
+
return false;
|
93
|
+
}
|
94
|
+
return obj.isDirectory();
|
95
|
+
} catch (error1) {
|
96
|
+
return false;
|
97
|
+
}
|
89
98
|
};
|
90
99
|
|
91
100
|
// ---------------------------------------------------------------------------
|
@@ -95,6 +104,17 @@ export var isSimpleFileName = function(path) {
|
|
95
104
|
return !h.root && !h.dir && h.base;
|
96
105
|
};
|
97
106
|
|
107
|
+
// ---------------------------------------------------------------------------
|
108
|
+
export var fileStub = function(path) {
|
109
|
+
var lMatches;
|
110
|
+
assert(isString(path), "fileExt(): path not a string");
|
111
|
+
if (lMatches = path.match(/^(.*)\.[A-Za-z0-9_]+$/)) {
|
112
|
+
return lMatches[1];
|
113
|
+
} else {
|
114
|
+
return '';
|
115
|
+
}
|
116
|
+
};
|
117
|
+
|
98
118
|
// ---------------------------------------------------------------------------
|
99
119
|
export var fileExt = function(path) {
|
100
120
|
var lMatches;
|
@@ -406,6 +426,7 @@ export var parseSource = function(source) {
|
|
406
426
|
// --- returns {
|
407
427
|
// dir
|
408
428
|
// filename
|
429
|
+
// fullpath
|
409
430
|
// stub
|
410
431
|
// ext
|
411
432
|
// }
|
@@ -418,22 +439,29 @@ export var parseSource = function(source) {
|
|
418
439
|
if (source.match(/^file\:\/\//)) {
|
419
440
|
source = urllib.fileURLToPath(source);
|
420
441
|
}
|
421
|
-
|
422
|
-
if (hInfo.dir) {
|
423
|
-
dir = mkpath(hInfo.dir); // change \ to /
|
442
|
+
if (isDir(source)) {
|
424
443
|
hSourceInfo = {
|
425
|
-
dir,
|
426
|
-
fullpath:
|
427
|
-
filename: hInfo.base,
|
428
|
-
stub: hInfo.name,
|
429
|
-
ext: hInfo.ext
|
444
|
+
dir: source,
|
445
|
+
fullpath: source
|
430
446
|
};
|
431
447
|
} else {
|
432
|
-
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
|
448
|
+
hInfo = pathlib.parse(source);
|
449
|
+
if (hInfo.dir) {
|
450
|
+
dir = mkpath(hInfo.dir); // change \ to /
|
451
|
+
hSourceInfo = {
|
452
|
+
dir,
|
453
|
+
fullpath: mkpath(dir, hInfo.base),
|
454
|
+
filename: hInfo.base,
|
455
|
+
stub: hInfo.name,
|
456
|
+
ext: hInfo.ext
|
457
|
+
};
|
458
|
+
} else {
|
459
|
+
hSourceInfo = {
|
460
|
+
filename: hInfo.base,
|
461
|
+
stub: hInfo.name,
|
462
|
+
ext: hInfo.ext
|
463
|
+
};
|
464
|
+
}
|
437
465
|
}
|
438
466
|
debug("return from parseSource()", hSourceInfo);
|
439
467
|
return hSourceInfo;
|