Blame view

node_modules/gaze/lib/helper.js 2.2 KB
aaac7fed   liuqimichale   add
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
  'use strict';
  
  var path = require('path');
  var helper = module.exports = {};
  
  // Returns boolean whether filepath is dir terminated
  helper.isDir = function isDir (dir) {
    if (typeof dir !== 'string') {
      return false;
    }
    return (dir.slice(-(path.sep.length)) === path.sep);
  };
  
  // Create a `key:[]` if doesnt exist on `obj` then push or concat the `val`
  helper.objectPush = function objectPush (obj, key, val) {
    if (obj[key] == null) {
      obj[key] = [];
    }
    if (Array.isArray(val)) {
      obj[key] = obj[key].concat(val);
    } else if (val) {
      obj[key].push(val);
    }
    obj[key] = helper.unique(obj[key]);
    return obj[key];
  };
  
  // Ensures the dir is marked with path.sep
  helper.markDir = function markDir (dir) {
    if (typeof dir === 'string' &&
      dir.slice(-(path.sep.length)) !== path.sep &&
      dir !== '.') {
      dir += path.sep;
    }
    return dir;
  };
  
  // Changes path.sep to unix ones for testing
  helper.unixifyPathSep = function unixifyPathSep (filepath) {
    return (process.platform === 'win32') ? String(filepath).replace(/\\/g, '/') : filepath;
  };
  
  /**
   * Lo-Dash 1.0.1 <http://lodash.com/>
   * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
   * Based on Underscore.js 1.4.4 <http://underscorejs.org/>
   * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud Inc.
   * Available under MIT license <http://lodash.com/license>
   */
  helper.unique = function unique () {
    var array = Array.prototype.concat.apply(Array.prototype, arguments);
    var result = [];
    for (var i = 0; i < array.length; i++) {
      if (result.indexOf(array[i]) === -1) {
        result.push(array[i]);
      }
    }
    return result;
  };
  
  /**
   * Copyright (c) 2010 Caolan McMahon
   * Available under MIT license <https://raw.github.com/caolan/async/master/LICENSE>
   */
  helper.forEachSeries = function forEachSeries (arr, iterator, callback) {
    if (!arr.length) { return callback(); }
    var completed = 0;
    var iterate = function () {
      iterator(arr[completed], function (err) {
        if (err) {
          callback(err);
          callback = function () {};
        } else {
          completed += 1;
          if (completed === arr.length) {
            callback(null);
          } else {
            iterate();
          }
        }
      });
    };
    iterate();
  };