The pattern matching library for javascript.
Match-Toy is a pattern matching library for javascript with a powerful DSL and support for a wide range of patterns. The best kick off is read the tests, there are tons of them covering all the cases. For complete documentation, please check out the wiki. Another way is by examples:
$ npm install match-toy --saveOr yarn:
$ yarn add match-toyThen import/require the module.
const { match } = require('match-toy');
// or
import { match } from 'match-toy';Place the snippet into your html:
<script src="https://cdn.jsdelivr.net/npm/match-toy/dist/bundle/index.min.js"></script>For specific version append the desired version (on the format @x.x.x) before the word match-toy just like this: https://cdn.jsdelivr.net/npm/[email protected]/dist/bundle/index.min.js.
This file is a bundle in the UMD format. In browser's environments, the module name is in camelcase and available on window scope.
var myFunc = matchToy.match
.case('1', () => 'one')
.end()See more in examples.
Most basic usage:
import { match } from 'match-toy';
// Create a new pattern matching function
const convertOneToString = match
.case('1', () => 'one')
.end();
convertOneToString(1); // return 'one'
convertOneToString(2); // return undefined
// Create another one, but now we only need
// the value returned by the match
const one = match
.case('1', () => 'one')
.return(1); // using `return()` match runs immediately
one === 'one'; // trueSee more about usage in depth.
Syntax proposals:
- https://github.com/tc39/proposal-pattern-matching
- https://github.com/eborden/JS-Pattern-Matching
- https://gist.github.com/bterlson/da8f02b95b484cd4f8d9
Other JavaScript libraries:
- https://codemix.github.io/flow-runtime/#/docs/pattern-matching
- https://github.com/HerringtonDarkholme/Pat-Mat
- https://github.com/natefaubion/sparkler
- https://github.com/bramstein/funcy
- https://github.com/FGRibreau/match-when
- https://github.com/z-pattern-matching/z
- https://github.com/dherman/pattern-match
- https://github.com/mcollina/bloomrun
- Improving or correcting the documentation.
- Translating.
- Finding bugs
- Sharing this project.
- PR are very welcome.
This project is licensed under the MIT License - see the LICENSE file for details.
See CHANGELOG file for details.