1 | 'use strict';
|
2 |
|
3 | var path = require('path');
|
4 | var helper = module.exports = {};
|
5 |
|
6 |
|
7 | helper.isDir = function isDir (dir) {
|
8 | if (typeof dir !== 'string') {
|
9 | return false;
|
10 | }
|
11 | return (dir.slice(-(path.sep.length)) === path.sep);
|
12 | };
|
13 |
|
14 |
|
15 | helper.objectPush = function objectPush (obj, key, val) {
|
16 | if (obj[key] == null) {
|
17 | obj[key] = [];
|
18 | }
|
19 | if (Array.isArray(val)) {
|
20 | obj[key] = obj[key].concat(val);
|
21 | } else if (val) {
|
22 | obj[key].push(val);
|
23 | }
|
24 | obj[key] = helper.unique(obj[key]);
|
25 | return obj[key];
|
26 | };
|
27 |
|
28 |
|
29 | helper.markDir = function markDir (dir) {
|
30 | if (typeof dir === 'string' &&
|
31 | dir.slice(-(path.sep.length)) !== path.sep &&
|
32 | dir !== '.') {
|
33 | dir += path.sep;
|
34 | }
|
35 | return dir;
|
36 | };
|
37 |
|
38 |
|
39 | helper.unixifyPathSep = function unixifyPathSep (filepath) {
|
40 | return (process.platform === 'win32') ? String(filepath).replace(/\\/g, '/') : filepath;
|
41 | };
|
42 |
|
43 |
|
44 |
|
45 |
|
46 |
|
47 |
|
48 |
|
49 |
|
50 | helper.unique = function unique () {
|
51 | var array = Array.prototype.concat.apply(Array.prototype, arguments);
|
52 | var result = [];
|
53 | for (var i = 0; i < array.length; i++) {
|
54 | if (result.indexOf(array[i]) === -1) {
|
55 | result.push(array[i]);
|
56 | }
|
57 | }
|
58 | return result;
|
59 | };
|
60 |
|
61 |
|
62 |
|
63 |
|
64 |
|
65 | helper.forEachSeries = function forEachSeries (arr, iterator, callback) {
|
66 | if (!arr.length) { return callback(); }
|
67 | var completed = 0;
|
68 | var iterate = function () {
|
69 | iterator(arr[completed], function (err) {
|
70 | if (err) {
|
71 | callback(err);
|
72 | callback = function () {};
|
73 | } else {
|
74 | completed += 1;
|
75 | if (completed === arr.length) {
|
76 | callback(null);
|
77 | } else {
|
78 | iterate();
|
79 | }
|
80 | }
|
81 | });
|
82 | };
|
83 | iterate();
|
84 | };
|