Exemple #1
0
  exports.join = function() {
    var path = '';
    var vPathSep = SEP.PATH_SEP;
    for (var i = 0; i < arguments.length; i++) {
      var segment = arguments[i];
      // Skip empty and invalid entries
      if (util.isArray(segment)) {
          if (segment.length === 0 && path.length === 0) {
              path = vPathSep
          } else {
            segment = segment.filter(Boolean).join(vPathSep);
            if (segment) {
              path += vPathSep + segment;
            }
          }
          continue;
      } else if (!util.isString(segment)) {
        throw new TypeError('Arguments to path.resolve must be strings');
      } else if (!segment) {
        continue;
      }

      if (!util.isString(segment)) {
        throw new TypeError('Arguments to path.join must be strings');
      }
      if (segment) {
        if (!path) {
          path += segment;
        } else {
          path += vPathSep + segment;
        }
      }
    }
    return exports.normalize(path);
  };
Exemple #2
0
  resolveArray = exports.resolveArray = function() {
    var resolvedPath = [],
        resolvedAbsolute = false;

    for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {
      var path = (i >= 0) ? arguments[i] : ".";

      // Skip empty and invalid entries
      if (util.isArray(path)) {
          if (path.length === 0) {
            //treat empty array as root path
            resolvedAbsolute = true;
          } else {
            resolvedPath = path.filter(Boolean).concat(resolvedPath);
            resolvedAbsolute = path[0] === "" || path[0] !== '.'
          }
          continue;
      } else if (!util.isString(path)) {
        throw new TypeError('Arguments to path.resolve must be strings');
      } else if (!path) {
        continue;
      }

      resolvedPath = path.split(SEP.PATH_SEP).filter(Boolean).concat(resolvedPath);
      //resolvedPath = path + '/' + resolvedPath;
      resolvedAbsolute = path.charAt(0) === SEP.PATH_SEP;
    }

    // At this point the path should be resolved to a full absolute path, but
    // handle relative paths to be safe (might happen when process.cwd() fails)

    // Normalize the path
    //resolvedPath = normalizeArray(resolvedPath.split('/').filter(function(p) {
    //  return !!p;
    //}), !resolvedAbsolute).join('/');
    resolvedPath = normalizeArray(resolvedPath, !resolvedAbsolute);
    resolvedPath.unshift(resolvedAbsolute);
    return resolvedPath;
  };