fixes npm audit errors in parse-glob
This repository has been archived on 2021-12-11. You can view files and clone it, but cannot push or open issues or pull requests.
Go to file
jonschlinkert 2d91c3f5a4 clean up
2015-02-17 07:53:27 -05:00
.editorconfig first commit 2015-02-07 16:02:39 -05:00
.gitattributes first commit 2015-02-07 16:02:39 -05:00
.gitignore update dotfiles 2015-02-17 06:15:20 -05:00
.jshintrc update dotfiles 2015-02-17 06:15:20 -05:00
.verb.md clean up 2015-02-17 07:53:27 -05:00
index.js clean up 2015-02-17 07:53:27 -05:00
LICENSE first commit 2015-02-07 16:02:39 -05:00
package.json 2.0 2015-02-17 06:25:06 -05:00
README.md clean up 2015-02-17 07:53:27 -05:00
test.js clean up 2015-02-17 07:53:27 -05:00

parse-glob NPM version

Parse a glob pattern into an object of tokens.

BREAKING CHANGES in 2.0

  • all path-related properties are now on the path object
  • all boolean properties are now on the is object
  • adds base property

See the properties section for details.

Install with npm

npm i parse-glob --save
  • parses 1,000+ glob patterns in 29ms (2.3 GHz Intel Core i7)
  • Extensive unit tests (more than 1,000 lines), covering wildcards, globstars, character classes, brace patterns, extglobs, dotfiles and other complex patterns.

See the tests for hundreds of examples.

Usage

var parseGlob = require('parse-glob');
parseGlob('a/b/{c,d}/*.js');

Returns:

{ path:
   { dirname: 'a/b/{c,d}/',
     filename: '*.js',
     basename: '*',
     extname: '.js',
     ext: 'js' },
  is: { glob: true, braces: true, negated: false, globstar: false, 
    dotfile: false, dotdir: false },
  original: 'a/b/{c,d}/*.js',
  pattern: 'a/b/{c,d}/*.js' }

Properties

The object returned by parseGlob has the following properties:

  • pattern: the glob pattern
  • base: when true is passed as the second argument, a base path is extracted and stripped from pattern. See more below
  • original: a copy of the original, unmodified glob pattern
  • path: file path segments
    • path.dirname: directory
    • path.filename: filename, including extension
    • path.basename: filename, without extension
    • path.extname: file extension, with dot
    • path.ext: file extension, without dot
  • is: an object with boolean information about the glob:
    • is.glob: true if the pattern actually a glob pattern
    • is.negated: true if it's a negation pattern (!**/foo.js)
    • is.globstar: true if the pattern has a double star (**)
    • is.dotfile: true if the pattern should match dotfiles
    • is.dotdir: true if the pattern should match dot-directories (like .git)

base property

The base property is created by taking any leading dirname segments in the pattern that do not contain any glob symbols (!*{}?(|)[]). If a base cannot be extracted, the value of base will be an empty string.

Examples

Without base defined:

var tokens = parseGlob('a/b/{c,d}/*.js');
// tokens.base => 'undefined'
// tokens.pattern => 'a/b/{c,d}/*.js'

With base defined:

var tokens = parseGlob('a/b/{c,d}/*.js', true);
// tokens.base => 'a/b'
// tokens.pattern => '{c,d}/*.js'

The resulting object would be:

{ path:
   { dirname: 'a/b/{c,d}/',
     filename: '*.js',
     basename: '*',
     extname: '.js',
     ext: 'js' },
  is: { glob: true, negated: false, globstar: false, 
    dotfile: false, dotdir: false },
  original: 'a/b/{c,d}/*.js',
  pattern: '{c,d}/*.js',
  base: 'a/b' }

Run tests

Install dev dependencies:

npm i -d && npm test

Contributing

Pull requests and stars are always welcome. For bugs and feature requests, please create an issue

Author

Jon Schlinkert

License

Copyright (c) 2015 Jon Schlinkert
Released under the MIT license


This file was generated by verb on February 17, 2015.