mirror of
https://github.com/ether/etherpad-lite.git
synced 2025-04-21 16:06:16 -04:00
docs: Revise hooks overview section
This commit is contained in:
parent
ec01e4c947
commit
9f288480e8
1 changed files with 46 additions and 6 deletions
|
@ -1,11 +1,51 @@
|
||||||
# Hooks
|
# Hooks
|
||||||
All hooks are called with two arguments:
|
|
||||||
|
|
||||||
1. name - the name of the hook being called
|
A hook function is registered with a hook via the plugin's `ep.json` file. See
|
||||||
2. context - an object with some relevant information about the context of the call
|
the Plugins section for details. A hook may have many registered functions from
|
||||||
|
different plugins.
|
||||||
|
|
||||||
|
When a hook is invoked, its registered functions are called with three
|
||||||
|
arguments:
|
||||||
|
|
||||||
|
1. hookName - The name of the hook being invoked.
|
||||||
|
2. context - An object with some relevant information about the context of the
|
||||||
|
call. See the hook-specific documentation for details.
|
||||||
|
3. callback - Function to call when done. This callback takes a single argument,
|
||||||
|
the meaning of which depends on the hook. See the "Return values" section for
|
||||||
|
general information that applies to most hooks. The value returned by this
|
||||||
|
callback must be returned by the hook function unless otherwise specified.
|
||||||
|
|
||||||
## Return values
|
## Return values
|
||||||
A hook should always return a list or undefined. Returning undefined is equivalent to returning an empty list.
|
|
||||||
All the returned lists are appended to each other, so if the return values where `[1, 2]`, `undefined`, `[3, 4,]`, `undefined` and `[5]`, the value returned by callHook would be `[1, 2, 3, 4, 5]`.
|
|
||||||
|
|
||||||
This is, because it should never matter if you have one plugin or several plugins doing some work - a single plugin should be able to make callHook return the same value a set of plugins are able to return collectively. So, any plugin can return a list of values, of any length, not just one value.
|
Note: This section applies to every hook unless the hook-specific documentation
|
||||||
|
says otherwise.
|
||||||
|
|
||||||
|
Hook functions return zero or more values to Etherpad by passing an array to the
|
||||||
|
provided callback. Hook functions typically provide a single value (array of
|
||||||
|
length one). If the function does not want to or need to provide a value, it may
|
||||||
|
pass an empty array or `undefined` (which is treated the same as an empty
|
||||||
|
array). Hook functions may also provide more than one value (array of length two
|
||||||
|
or more).
|
||||||
|
|
||||||
|
Some hooks concatenate the arrays provided by its registered functions. For
|
||||||
|
example, if a hook's registered functions pass `[1, 2]`, `undefined`, `[3, 4]`,
|
||||||
|
`[]`, and `[5]` to the provided callback, then the hook's return value is `[1,
|
||||||
|
2, 3, 4, 5]`.
|
||||||
|
|
||||||
|
Other hooks only use the first non-empty array provided by a registered
|
||||||
|
function. In this case, each of the hook's registered functions is called one at
|
||||||
|
a time until one provides a non-empty array. The remaining functions are
|
||||||
|
skipped. If none of the functions provide a non-empty array, or there are no
|
||||||
|
registered functions, the hook's return value is `[]`.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
```
|
||||||
|
exports.abstractHook = (hookName, context, callback) => {
|
||||||
|
if (notApplicableToThisPlugin(context)) {
|
||||||
|
return callback();
|
||||||
|
}
|
||||||
|
const value = doSomeProcessing(context);
|
||||||
|
return callback([value]);
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue