diff options
author | Florian Dold <florian.dold@gmail.com> | 2017-05-28 00:38:50 +0200 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2017-05-28 00:40:43 +0200 |
commit | 7fff4499fd915bcea3fa93b1aa8b35f4fe7a6027 (patch) | |
tree | 6de9a1aebd150a23b7f8c273ec657a5d0a18fe3e /node_modules/matcher | |
parent | 963b7a41feb29cc4be090a2446bdfe0c1f1bcd81 (diff) | |
download | wallet-core-7fff4499fd915bcea3fa93b1aa8b35f4fe7a6027.tar.xz |
add linting (and some initial fixes)
Diffstat (limited to 'node_modules/matcher')
-rw-r--r-- | node_modules/matcher/index.js | 72 | ||||
-rw-r--r-- | node_modules/matcher/license | 21 | ||||
-rw-r--r-- | node_modules/matcher/package.json | 44 | ||||
-rw-r--r-- | node_modules/matcher/readme.md | 78 |
4 files changed, 215 insertions, 0 deletions
diff --git a/node_modules/matcher/index.js b/node_modules/matcher/index.js new file mode 100644 index 000000000..796e7c8d0 --- /dev/null +++ b/node_modules/matcher/index.js @@ -0,0 +1,72 @@ +'use strict'; +var escapeStringRegexp = require('escape-string-regexp'); +var reCache = {}; + +function makeRe(pattern, shouldNegate) { + var cacheKey = pattern + shouldNegate; + + if (reCache[cacheKey]) { + return reCache[cacheKey]; + } + + var negated = false; + + if (pattern[0] === '!') { + negated = true; + pattern = pattern.slice(1); + } + + pattern = escapeStringRegexp(pattern).replace(/\\\*/g, '.*'); + + if (negated && shouldNegate) { + pattern = '(?!' + pattern + ')'; + } + + var re = new RegExp('^' + pattern + '$', 'i'); + + re.negated = negated; + + reCache[cacheKey] = re; + + return re; +} + +module.exports = function (inputs, patterns) { + if (!(Array.isArray(inputs) && Array.isArray(patterns))) { + throw new TypeError('Expected two arrays, got ' + typeof inputs + ' ' + typeof patterns); + } + + if (patterns.length === 0) { + return inputs; + } + + var firstNegated = patterns[0][0] === '!'; + + patterns = patterns.map(function (x) { + return makeRe(x, false); + }); + + var ret = []; + + for (var i = 0; i < inputs.length; i++) { + // if first pattern is negated we include + // everything to match user expectation + var matches = firstNegated; + + for (var j = 0; j < patterns.length; j++) { + if (patterns[j].test(inputs[i])) { + matches = !patterns[j].negated; + } + } + + if (matches) { + ret.push(inputs[i]); + } + } + + return ret; +}; + +module.exports.isMatch = function (input, pattern) { + return makeRe(pattern, true).test(input); +}; diff --git a/node_modules/matcher/license b/node_modules/matcher/license new file mode 100644 index 000000000..654d0bfe9 --- /dev/null +++ b/node_modules/matcher/license @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/matcher/package.json b/node_modules/matcher/package.json new file mode 100644 index 000000000..cc1523794 --- /dev/null +++ b/node_modules/matcher/package.json @@ -0,0 +1,44 @@ +{ + "name": "matcher", + "version": "0.1.2", + "description": "Simple wildcard matching", + "license": "MIT", + "repository": "sindresorhus/matcher", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "sindresorhus.com" + }, + "engines": { + "node": ">=0.10.0" + }, + "scripts": { + "test": "xo && ava" + }, + "files": [ + "index.js" + ], + "keywords": [ + "matcher", + "matching", + "match", + "regex", + "regexp", + "regular", + "expression", + "wildcard", + "pattern", + "string", + "filter", + "glob", + "globbing", + "minimatch" + ], + "dependencies": { + "escape-string-regexp": "^1.0.4" + }, + "devDependencies": { + "ava": "*", + "xo": "*" + } +} diff --git a/node_modules/matcher/readme.md b/node_modules/matcher/readme.md new file mode 100644 index 000000000..42488b5a7 --- /dev/null +++ b/node_modules/matcher/readme.md @@ -0,0 +1,78 @@ +# matcher [![Build Status](https://travis-ci.org/sindresorhus/matcher.svg?branch=master)](https://travis-ci.org/sindresorhus/matcher) + +> Simple [wildcard](https://en.wikipedia.org/wiki/Wildcard_character) matching + +Useful when you want to accept loose string input and regexes/globs are too convoluted. + + +## Install + +``` +$ npm install --save matcher +``` + + +## Usage + +```js +const matcher = require('matcher'); + +matcher(['foo', 'bar', 'moo'], ['*oo', '!foo']); +//=> ['moo'] + +matcher(['foo', 'bar', 'moo'], ['!*oo']); +//=> ['bar'] + +matcher.isMatch('unicorn', 'uni*'); +//=> true + +matcher.isMatch('unicorn', '*corn'); +//=> true + +matcher.isMatch('unicorn', 'un*rn'); +//=> true + +matcher.isMatch('rainbow', '!unicorn'); +//=> true + +matcher.isMatch('foo bar baz', 'foo b* b*'); +//=> true + +matcher.isMatch('unicorn', 'uni\\*'); +//=> false +``` + + +## API + +### matcher(inputs, patterns) + +Accepts an array of `input`'s and `pattern`'s. + +Returns an array of of `inputs` filtered based on the `patterns`. + +### matcher.isMatch(input, pattern) + +Returns a boolean of whether the `input` matches the `pattern`. + +#### input + +Type: `string` + +String to match. + +#### pattern + +Type: `string` + +Case-insensitive. Use `*` to match zero or more characters. A pattern starting with `!` will be negated. + + +## Related + +- [multimatch](https://github.com/sindresorhus/multimatch) - Extends `minimatch.match()` with support for multiple patterns + + +## License + +MIT © [Sindre Sorhus](http://sindresorhus.com) |