0.0.11 • Published 10 years ago

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

Weekly downloads
6
License
MIT
Repository
github
Last release
10 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

10 years ago

0.0.10

10 years ago

0.0.9

10 years ago

0.0.8

10 years ago

0.0.7

10 years ago

0.0.6

10 years ago

0.0.5

10 years ago

0.0.4

10 years ago

0.0.3

10 years ago

0.0.2

10 years ago