Skip to content

Commit

Permalink
Hooks: Update hooks public API to make it possible to apply to wp.hoo…
Browse files Browse the repository at this point in the history
…ks directly (#45)
  • Loading branch information
gziolo authored Nov 27, 2017
1 parent d62ecb7 commit 12b5c6c
Show file tree
Hide file tree
Showing 4 changed files with 325 additions and 260 deletions.
5 changes: 4 additions & 1 deletion packages/hooks/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ A lightweight & efficient filter and action manager.

### API Usage

* `createHooks()`
* `addAction( 'hookName', 'functionName', callback, priority )`
* `addFilter( 'hookName', 'functionName', callback, priority )`
* `removeAction( 'hookName', 'functionName' )`
Expand All @@ -32,9 +33,11 @@ A lightweight & efficient filter and action manager.
* `didFilter( 'hookName' )`
* `hasAction( 'hookName' )`
* `hasFilter( 'hookName' )`
* `actions`
* `filters`

Hooks can be added to an object via composition:
`import createHooks from '../';`
`import { createHooks } from '@wordpress/hooks';`

`myObject.hooks = createHooks();`

Expand Down
40 changes: 40 additions & 0 deletions packages/hooks/src/createHooks.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
import createAddHook from './createAddHook';
import createRemoveHook from './createRemoveHook';
import createHasHook from './createHasHook';
import createRunHook from './createRunHook';
import createCurrentHook from './createCurrentHook';
import createDoingHook from './createDoingHook';
import createDidHook from './createDidHook';

/**
* Returns an instance of the hooks object.
*
* @return {Object} Object that contains all hooks.
*/
function createHooks() {
const actions = {};
const filters = {};

return {
addAction: createAddHook( actions ),
addFilter: createAddHook( filters ),
removeAction: createRemoveHook( actions ),
removeFilter: createRemoveHook( filters ),
hasAction: createHasHook( actions ),
hasFilter: createHasHook( filters ),
removeAllActions: createRemoveHook( actions, true ),
removeAllFilters: createRemoveHook( filters, true ),
doAction: createRunHook( actions ),
applyFilters: createRunHook( filters, true ),
currentAction: createCurrentHook( actions ),
currentFilter: createCurrentHook( filters ),
doingAction: createDoingHook( actions ),
doingFilter: createDoingHook( filters ),
didAction: createDidHook( actions ),
didFilter: createDidHook( filters ),
actions: actions,
filters: filters,
};
}

export default createHooks;
72 changes: 41 additions & 31 deletions packages/hooks/src/index.js
Original file line number Diff line number Diff line change
@@ -1,34 +1,44 @@
import createAddHook from './createAddHook';
import createRemoveHook from './createRemoveHook';
import createHasHook from './createHasHook';
import createRunHook from './createRunHook';
import createCurrentHook from './createCurrentHook';
import createDoingHook from './createDoingHook';
import createDidHook from './createDidHook';
import createHooks from './createHooks';

function createHooks() {
const actions = {};
const filters = {};
const {
addAction,
addFilter,
removeAction,
removeFilter,
hasAction,
hasFilter,
removeAllActions,
removeAllFilters,
doAction,
applyFilters,
currentAction,
currentFilter,
doingAction,
doingFilter,
didAction,
didFilter,
actions,
filters,
} = createHooks();

return {
addAction: createAddHook( actions ),
addFilter: createAddHook( filters ),
removeAction: createRemoveHook( actions ),
removeFilter: createRemoveHook( filters ),
hasAction: createHasHook( actions ),
hasFilter: createHasHook( filters ),
removeAllActions: createRemoveHook( actions, true ),
removeAllFilters: createRemoveHook( filters, true ),
doAction: createRunHook( actions ),
applyFilters: createRunHook( filters, true ),
currentAction: createCurrentHook( actions ),
currentFilter: createCurrentHook( filters ),
doingAction: createDoingHook( actions ),
doingFilter: createDoingHook( filters ),
didAction: createDidHook( actions ),
didFilter: createDidHook( filters ),
actions: actions,
filters: filters,
};
export {
createHooks,
addAction,
addFilter,
removeAction,
removeFilter,
hasAction,
hasFilter,
removeAllActions,
removeAllFilters,
doAction,
applyFilters,
currentAction,
currentFilter,
doingAction,
doingFilter,
didAction,
didFilter,
actions,
filters,
};
export default createHooks;
Loading

0 comments on commit 12b5c6c

Please sign in to comment.