<commit_before>[![Build Status](https://travis-ci.org/JiriChara/redux-blower.svg?branch=master)](https://travis-ci.org/JiriChara/redux-blower)
[![Code Climate](https://codeclimate.com/github/JiriChara/redux-blower/badges/gpa.svg)](https://codeclimate.com/github/JiriChara/redux-blower)
[![Test Coverage](https://codeclimate.com/github/JiriChara/redux-blower/badges/coverage.svg)](https://codeclimate.com/github/JiriChara/redux-blower/coverage)
[![Issue Count](https://codeclimate.com/github/JiriChara/redux-blower/badges/issue_count.svg)](https://codeclimate.com/github/JiriChara/redux-blower)
[![Dependency Status](https://gemnasium.com/badges/github.com/JiriChara/redux-blower.svg)](https://gemnasium.com/github.com/JiriChara/redux-blower)
[![NPM Dowloads](https://img.shields.io/npm/dm/redux-blower.svg)](https://www.npmjs.com/package/redux-blower)
[![NPM Version](https://img.shields.io/npm/v/redux-blower.svg)](https://www.npmjs.com/package/redux-blower)
[![GitHub issues](https://img.shields.io/github/issues/JiriChara/redux-blower.svg)](https://github.com/JiriChara/redux-blower/issues)
[![GitHub stars](https://img.shields.io/github/stars/JiriChara/redux-blower.svg)](https://github.com/JiriChara/redux-blower/stargazers)
[![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/JiriChara/redux-blower/master/LICENSE)

![redux-blower](https://raw.github.com/JiriChara/redux-blower/master/images/blower.jpg)

**redux-blower** is a tiny library that helps you to improve the readability and the performance of your [Redux](https://github.com/reactjs/redux) applications.

## How?

Typical [Redux](https://github.com/reactjs/redux) application has couple of reducers which are usually functions with big switch statements. When an action is triggered, Redux is going through ALL reducers, ALL switch statements and  ALL `case`s  in order to decide if something should happen. Imagine that you have a Redux application with 100 reducers of average 5 case callbacks. That would mean that for each triggered action up to 500 comparisons has to be made. Additionally reducers will most-likely end up as functions with high complexity and they are not easy to read. Now let me show you what **redux-blower** can do!

```javascript
import createReducer from 'redux-blower';

const actions = [
  'counter:INCREMENT',
  'counter:DECREMENT'
];

const [inc, dec] = actions;
<commit_msg>Improve README<commit_after>[![Build Status](https://travis-ci.org/JiriChara/redux-blower.svg?branch=master)](https://travis-ci.org/JiriChara/redux-blower)
[![Code Climate](https://codeclimate.com/github/JiriChara/redux-blower/badges/gpa.svg)](https://codeclimate.com/github/JiriChara/redux-blower)
[![Test Coverage](https://codeclimate.com/github/JiriChara/redux-blower/badges/coverage.svg)](https://codeclimate.com/github/JiriChara/redux-blower/coverage)
[![Issue Count](https://codeclimate.com/github/JiriChara/redux-blower/badges/issue_count.svg)](https://codeclimate.com/github/JiriChara/redux-blower)
[![Dependency Status](https://gemnasium.com/badges/github.com/JiriChara/redux-blower.svg)](https://gemnasium.com/github.com/JiriChara/redux-blower)
[![NPM Dowloads](https://img.shields.io/npm/dm/redux-blower.svg)](https://www.npmjs.com/package/redux-blower)
[![NPM Version](https://img.shields.io/npm/v/redux-blower.svg)](https://www.npmjs.com/package/redux-blower)
[![GitHub issues](https://img.shields.io/github/issues/JiriChara/redux-blower.svg)](https://github.com/JiriChara/redux-blower/issues)
[![GitHub stars](https://img.shields.io/github/stars/JiriChara/redux-blower.svg)](https://github.com/JiriChara/redux-blower/stargazers)
[![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/JiriChara/redux-blower/master/LICENSE)

![redux-blower](https://raw.github.com/JiriChara/redux-blower/master/images/blower.jpg)

**redux-blower** is a tiny library that helps you to improve the readability and the performance of your [Redux](https://github.com/reactjs/redux) applications.

## How?

Typical [Redux](https://github.com/reactjs/redux) application has couple of reducers which are usually functions with big switch statements. When an action is triggered, Redux is going through ALL reducers, ALL switch statements and  ALL `case`s  in order to decide if something should happen. Imagine that you have a Redux application with 100 reducers of average 5 case callbacks. That would mean that for each triggered action up to 500 comparisons has to be made. Additionally reducers will most-likely end up as functions with high complexity and they are not easy to read. Now let me show you what **redux-blower** can do!

```javascript
import { createReducer } from 'redux-blower';

const actions = [
  'counter:INCREMENT',
  'counter:DECREMENT'
];

const [inc, dec] = actions;

{'fraction_non_alphanumeric': 0.15258071149496197, 'fraction_numerical': 0.0028788813489615465, 'mean_word_length': 5.520107238605898, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 46, 'lorem ipsum': 0, 'www.': 4, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2690192', 'n_tokens_mistral': 1725, 'n_tokens_neox': 1607, 'n_words': 305}