Sha256: 3de27f108133a575c0bd8160f7b3b2035dba797af990a102f37c5ee45ef63db3

Contents?: true

Size: 1.08 KB

Versions: 29

Compression:

Stored size: 1.08 KB

Contents

'use strict';

var isGlob = require('is-glob');
var pathPosixDirname = require('path').posix.dirname;
var isWin32 = require('os').platform() === 'win32';

var slash = '/';
var backslash = /\\/g;
var enclosure = /[\{\[].*[\/]*.*[\}\]]$/;
var globby = /(^|[^\\])([\{\[]|\([^\)]+$)/;
var escaped = /\\([\!\*\?\|\[\]\(\)\{\}])/g;

/**
 * @param {string} str
 * @param {Object} opts
 * @param {boolean} [opts.flipBackslashes=true]
 */
module.exports = function globParent(str, opts) {
  var options = Object.assign({ flipBackslashes: true }, opts);

  // flip windows path separators
  if (options.flipBackslashes && isWin32 && str.indexOf(slash) < 0) {
    str = str.replace(backslash, slash);
  }

  // special case for strings ending in enclosure containing path separator
  if (enclosure.test(str)) {
    str += slash;
  }

  // preserves full path in case of trailing path separator
  str += 'a';

  // remove path parts that are globby
  do {
    str = pathPosixDirname(str);
  } while (isGlob(str) || globby.test(str));

  // remove escape chars and return result
  return str.replace(escaped, '$1');
};

Version data entries

29 entries across 28 versions & 3 rubygems

Version Path
optimacms-0.1.61 spec/dummy/node_modules/watchpack/node_modules/glob-parent/index.js
optimacms-0.1.61 spec/dummy/node_modules/sass/node_modules/glob-parent/index.js
trusty-cms-5.0.7 node_modules/glob-parent/index.js
trusty-cms-5.0.6 node_modules/glob-parent/index.js
trusty-cms-5.0.5 node_modules/glob-parent/index.js
trusty-cms-5.0.4 node_modules/glob-parent/index.js
trusty-cms-5.0.3 node_modules/glob-parent/index.js
trusty-cms-5.0.2 node_modules/glob-parent/index.js
trusty-cms-5.0.1 node_modules/glob-parent/index.js
trusty-cms-4.3.5 node_modules/glob-parent/index.js
trusty-cms-5.0.0 node_modules/glob-parent/index.js
trusty-cms-4.3.4 node_modules/glob-parent/index.js
trusty-cms-4.3.3 node_modules/glob-parent/index.js
trusty-cms-4.3.2 node_modules/glob-parent/index.js
trusty-cms-4.3.1 node_modules/glob-parent/index.js
trusty-cms-4.3 node_modules/glob-parent/index.js
trusty-cms-4.2.3 node_modules/glob-parent/index.js
tang-0.2.1 spec/tang_app/node_modules/watchpack/node_modules/glob-parent/index.js
trusty-cms-4.2.2 node_modules/glob-parent/index.js
trusty-cms-4.2.1 node_modules/glob-parent/index.js