# multimatcher

> multimatcher ============

Latest version **2.1.0** (published 2016-04-29) · MIT license · 0 weekly downloads

## Install

```sh
npm install multimatcher
pnpm add multimatcher
yarn add multimatcher
bun add multimatcher
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 2.1.0 |
| Published | 2016-04-29 |
| First published | 2015-08-19 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 1 |
| Known vulnerabilities | 0 (+5 in 1 direct dependencies) |
| Install scripts | no |
| GitHub stars | 0 |
| Author | Quentin Engles |
| Maintainers | hollowdoor |

## Links

- npm: https://www.npmjs.com/package/multimatcher
- Repository: https://github.com/hollowdoor/multimatcher
- Homepage: https://github.com/hollowdoor/multimatcher#readme
- Issues: https://github.com/hollowdoor/multimatcher/issues
- npm.io page: https://npm.io/package/multimatcher

## Dependencies (1)

- [minimatch](https://npm.io/package/minimatch.md) ^2.0.8

## Recent versions

- 2.1.0 (latest) — 2016-04-29
- 2.0.2 — 2016-01-06
- 1.0.2 — 2015-12-23
- 1.0.1 — 2015-11-24
- 1.0.0 — 2015-11-24
- 0.0.2 — 2015-08-22
- 0.0.1 — 2015-08-19

## README

multimatcher
============

Install
-------

`npm install multimatcher`

News
----

Version 2 of `multimatcher` has breaking changes. There is now an options argument, and the default for matching basename was true, but is now false.

Usage
-----

```javascript
var Matcher = require("multimatcher");

var m = new Matcher(["*.js"]);

m.test("file.js"); //returns true

m.test("file.txt"); //returns false

```

The Match Array
---------------

The array passed to the **Matcher** constructor can be:

-	glob pattern
-	RegExp
-	String that matches the end of a path

```javascript
var Matcher = require("multimatcher");

var m = new Matcher([
    //Only one of these needs to match.
    "*.js",     //glob
    /\.js$/,    //RegExp
    '.js']);    //End of file name string.

m.test("file.js"); //returns true

m.test("file.txt"); //returns false

```

The end of the string matcher can be `.js`, `file.js`, or `le.js`. As long as it's an end of a file name.

Longer names will be more precise.

Just In Case
------------

The order of patterns checking is:

1.	RegExp
2.	glob pattern
3.	End of file name string

API
---

### multimatcher(array, options) -> matcher

The first argument to `multimatcher` should be an array of regular expression, glob strings, or path names.

The `options` argument should be the same as [minimatch](https://www.npmjs.com/package/minimatch), and will only be used to control glob patterns.

### matcher.find(array)

Using **patterns** find all the file name strings that match.

```javascript
var m = new Matcher(['*.js']);
//Will print ['one.js', 'two.js']
console.log(m.find('one.js', 'two.js', 'three.xml']));
```

### matcher.index(name)

Find the index of name in **patterns**.

If the name string does not match a pattern then the returned value equals `-1`.

```javascript
var m = new Matcher(['*.xml', '*.js']);
//Will print 1
console.log(m.index('file.js'));
```

### matcher.indexes(name)

Find all the indexes of name in **patterns**.

If the name string does not match an empty array is returned.

If there are matches an array of indexes returned.

```javascript
var m = new Matcher(['*.js', '*.xml', '*.js']);
//Will print [0, 2]
console.log(m.indexes('file.js'));
//Will print []
console.log(m.indexes("I don't match."));
```

---
_Source: https://npm.io/package/multimatcher · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
