Skip to content
poor man's pattern matching 🚥
TypeScript JavaScript
Branch: master
Clone or download
dependabot and gillchristian Bump lodash from 4.17.11 to 4.17.15 (#4)
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.11 to 4.17.15.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](lodash/lodash@4.17.11...4.17.15)

Signed-off-by: dependabot[bot] <support@github.com>
Latest commit c1f13ce Sep 5, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci
src Add wildMatch (#1) Apr 12, 2019
.gitignore
.npmignore
.prettierignore
.prettierrc
LICENSE
jest.config.js
package.json
readme.md
tsconfig.json
yarn.lock

readme.md

poor man's pattern matching 🚥

npm version CircleCI

Install

yarn add @housinganywhere/match

npm i @housinganywhere/match

Use

Edit @housinganywhere/match

import * as React from 'react';
import match from '@housinganywhere/match';

type Status = 'loading' | 'error' | 'success';

enum Status {
  loading = 'loading',
  error = 'error',
  success = 'success',
}

const StatusMsg: React.SFC<{ status: Status }> = ({ status }) =>
  match<Status, React.ReactNode>({
    loading: () => <Spinner />,
    error: () => <Alert type="danger">There was an error</Alert>,
    success: () => <Alert type="success">Yay! It worked</Alert>,
  })(status);

For matching several cases together use wildMatch. All the missing cases will be handled by case _.

import { wildMatch } from '@housinganywhere/match';

type Vowels = 'a' | 'e' | 'i' | 'o' | 'u';

const isA = wildMatch<Vowels, string>({
  a: () => 'Yay!',
  _: (v) => `Nope, "${v}" is not "a"`,
});

isA('a'); // 'Yay!'
isA('e'); // 'Nope, "e" is not "a"'
isA('i'); // 'Nope, "i" is not "a"'
isA('o'); // 'Nope, "o" is not "a"'
isA('u'); // 'Nope, "u" is not "a"'

License

MIT © 2019 HousingAnywhere

You can’t perform that action at this time.