globrex

globrex

version travis appveyor downloads
Simple but powerful glob to regular expression compiler.

## Install ``` npm install globrex --save ``` ## Core Features - 💪 **extended globbing:** transform advance `ExtGlob` features - 📦 **simple**: no dependencies - 🛣️ **paths**: split paths into multiple `RegExp` segments ## Usage ```js const globrex = require('globrex'); const result = globrex('p*uck') // => { regex: /^p.*uck$/, string: '^p.*uck$', segments: [ /^p.*uck$/ ] } result.regex.test('pluck'); // true ``` ## API ### globrex(glob, options) Type: `function`
Returns: `Object` Transform globs intp regular expressions. Returns object with the following properties: #### regex Type: `RegExp` JavaScript `RegExp` instance. > **Note**: Read more about how to use [RegExp](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp) on MDN. #### path This property only exists if the option `filepath` is true. > **Note:** `filepath` is `false` by default #### path.segments Type: `Array` Array of `RegExp` instances seperated by `/`. This can be usable when working with file paths or urls. Example array could be: ```js [ /^foo$/, /^bar$/, /^([^\/]*)$/, '^baz\\.(md|js|txt)$' ] ``` #### path.regex Type: `RegExp` JavaScript `RegExp` instance build for testign against paths. The regex have different path seperators depending on host OS. ### glob Type: `String` Glob string to transform. ### options.extended Type: `Boolean`
Default: `false` Enable all advanced features from `extglob`. Matching so called "extended" globs pattern like single character matching, matching ranges of characters, group matching, etc. > **Note**: Interprets `[a-d]` as `[abcd]`. To match a literal `-`, include it as first or last character. ### options.globstar Type: `Boolean`
Default: `false` When globstar is `false` globs like `'/foo/*'` are transformed to the following `'^\/foo\/.*$'` which will match any string beginning with `'/foo/'`. When the globstar option is `true`, the same `'/foo/*'` glob is transformed to `'^\/foo\/[^/]*$'` which will match any string beginning with `'/foo/'` that **does not have** a `'/'` to the right of it. `'/foo/*'` will match: `'/foo/bar'`, `'/foo/bar.txt'` but not `'/foo/bar/baz'` or `'/foo/bar/baz.txt'`. > **Note**: When globstar is `true`, `'/foo/**'` is equivelant to `'/foo/*'` when globstar is `false`. ### options.strict Type: `Boolean`
Default: `false` Be forgiving about mutiple slashes, like `///` and make everything after the first `/` optional. This is how bash glob works. ### options.flags Type: `String`
Default: `''` RegExp flags (e.g. `'i'` ) to pass to the RegExp constructor. ### options.filepath Type: `Boolean`
Default: `false` Parse input strings as it was a file path for special path related features. This feature only makes sense if the input is a POSIX path like `/foo/bar/hello.js` or URLs. When `true` the returned object will have an additional `path` object. - `segment`: Array containing a `RegExp` object for each path segment. - `regex`: OS specific file path `RegExp`. Path seperator used is based on the operating system. - `globstar`: Regex string used to test for globstars. > **Note: Please only use forward-slashes in file path glob expressions** > Though windows uses either `/` or `\` as its path separator, only `/` > characters are used by this glob implementation. You must use > forward-slashes **only** in glob expressions. Back-slashes will always > be interpreted as escape characters, not path separators. ## References Learn more about advanced globbing here - [mywiki.wooledge.org/glob](http://mywiki.wooledge.org/glob) - [linuxjournal](http://www.linuxjournal.com/content/bash-extended-globbing) ## License MIT © [Terkel Gjervig](https://terkel.com)