2.0.0 • Published 5 years ago

match-fn v2.0.0

Weekly downloads
5
License
MIT
Repository
github
Last release
5 years ago

Match-Fn

Pattern matching with functions. Work in Progress.

ToC

  1. Installation
  2. Using
  3. Examples
  4. API

Installation

yarn add match-fn
npm install match-fn

Using

  1. Create cases with createCase function:
import { createCase } from 'match-fn';

const one = createCase(1);
const two = createCase(value => value === 2);
const three = createCase(3);
const nothing = createCase();
  1. Pass value and cases to match function:
import { match } from 'match-fn';

const value = 3;
const result = match(
  one(value => 'Number is 1!'),
  two(value => 'Number is 2!'),
  three(value => 'Number is 3!'),
  nothing(value => `Not matched. Result: ${value}`),
)(value);

console.log(result); // -> 'Number is 2!'

With Promises:

  1. Create cases with createCase function:
import { createCase } from 'match-fn';

const checkPaymentType = type => createCase(res => res.data.type === type);

const Cash = checkPaymentType('cash');
const Card = checkPaymentType('card');
const PayPal = checkPaymentType('paypal');
const nothing = createCase();
  1. Pass Promise and cases to match function:
import { match } from 'match-fn';
import axios from 'axios';

const result = await match(
  Cash(res => `${res.data.amount}$ with Cash`),
  Card(res => `${res.data.amount}$ with Card`),
  PayPal(res => `${res.data.amount}$ with PayPal`),
  nothing(res => `Payment method is not selected`),
)(axios.get('/getPayment.json'));

console.log(result); // -> '10$ with PayPal'

Extend "match" and override callback:

/* common.js */
import { match, createCase } from 'match-fn';

const commonCase = createCase(val => val > 5);
const doubleUp = value => value * 2;

const commonMatch = match(commonCase(doubleUp));

export { commonCase, commonMatch };

/* local.js */
import { extend } from 'match-fn/tools';
import { commonMatch, commonCase } from './common';

const square = value => value * value;

// override callback in common case, with local callback
const localMatch = extend(commonMatch, commonCase(square));
const result = localMatch(6);

console.log(result); // -> 36
2.0.0

5 years ago

1.1.5

5 years ago

1.1.4

5 years ago

1.1.3

5 years ago

1.1.2

5 years ago

1.1.1

5 years ago

1.1.0

5 years ago

1.0.0

5 years ago