All files / src match.js

94.44% Statements 17/18
50% Branches 1/2
100% Functions 7/7
92.31% Lines 12/13

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28  1x           1x 5x   9x 3x       3x 2x 1x     3x 2x   4x     1x  
 
import _match from '@mattstyles/match'
 
/**
 * Cache match function, pass through update arguments and expect match
 * arms to comply to update arity.
 */
const match = matcher => {
  const _matcher = _match(
    matcher
      .map(([p, arm]) => {
        Iif (!arm) {
          return null
        }
 
        return [
          ({ event }) => p(event),
          ({ state, event }) => arm(state, event)
        ]
      })
      .filter(v => !!v)
      .concat([[({ state }) => state]])
  )
  return (state, event) => _matcher({ state, event })
}
 
export default match