0.0.11 • Published 8 years ago

babel-plugin-transform-pattern-matching v0.0.11

Weekly downloads
6
License
MIT
Repository
github
Last release
8 years ago

babel-plugin-transform-pattern-matching

Generate switch/case structure from class method type annotation. Usable with flowtype and redux.

Transform code like this:

import {babelPatternMatch} from 'babel-plugin-transform-pattern-matching/expr'

class Action {}
class TodoAddMultipleAction extends Action {}
class TodoAddMultipleErrorAction extends Action {}
class TodoAddErrorAction extends Action {}
class TodoCompleteErrorAction extends Action {}
class TodoDestroyErrorAction extends Action {}

class A {}
class B {}

type AnyAction = Object & Action

class ExampleReducer {
    reduce(a: A, action: AnyAction, b: B): A {
        babelPatternMatch(action)
        return a
    }

    addMultiple(a: A, action: TodoAddMultipleAction, b: B): A {
        return a
    }

    addError(
        a: A,
        {error}: TodoAddMultipleErrorAction
            | TodoAddErrorAction
            | TodoCompleteErrorAction
            | TodoDestroyErrorAction,
        b: B
    ): A {
        return a
    }
}

to this:

import { babelPatternMatch } from 'babel-plugin-transform-pattern-matching/expr';

class Action {}
class TodoAddMultipleAction extends Action {}
class TodoAddMultipleErrorAction extends Action {}
class TodoAddErrorAction extends Action {}
class TodoCompleteErrorAction extends Action {}
class TodoDestroyErrorAction extends Action {}

class A {}
class B {}

type AnyAction = Object & Action;

class ExampleReducer {
    reduce(a: A, action: AnyAction, b: B): A {
        switch (action.constructor) {
            case TodoAddMultipleAction:
                return this.addMultiple(a, action, b);

            case TodoAddMultipleErrorAction:
            case TodoAddErrorAction:
            case TodoCompleteErrorAction:
            case TodoDestroyErrorAction:
                return this.addError(a, action, b);

            default:
                break;
        }

        return a;
    }

    addMultiple(a: A, action: TodoAddMultipleAction, b: B): A {
        return a;
    }

    addError(a: A, { error }: TodoAddMultipleErrorAction | TodoAddErrorAction | TodoCompleteErrorAction | TodoDestroyErrorAction, b: B): A {
        return a;
    }
}
0.0.11

8 years ago

0.0.10

8 years ago

0.0.9

8 years ago

0.0.8

8 years ago

0.0.7

8 years ago

0.0.6

8 years ago

0.0.5

8 years ago

0.0.4

8 years ago

0.0.3

8 years ago

0.0.2

8 years ago