1 | 'use strict';
|
2 |
|
3 |
|
4 | var has = require('has');
|
5 | var xtend = require('xtend');
|
6 |
|
7 |
|
8 | module.exports = one;
|
9 |
|
10 |
|
11 | var handlers = {};
|
12 |
|
13 | handlers.root = require('./all');
|
14 | handlers.heading = require('./types/heading');
|
15 | handlers.paragraph = require('./types/paragraph');
|
16 | handlers.comment = require('./types/comment');
|
17 |
|
18 | handlers.text = require('./types/text');
|
19 | handlers.link = require('./types/link');
|
20 | handlers.list = require('./types/list');
|
21 | handlers.listItem = require('./types/listItem');
|
22 | handlers.break = require('./types/break');
|
23 | handlers.code = require('./types/code');
|
24 | handlers.strong = require('./types/strong');
|
25 | handlers.emphasis = require('./types/emphasis');
|
26 | handlers.delete = require('./types/delete');
|
27 | handlers.inlineCode = require('./types/inlinecode');
|
28 | handlers.blockquote = require('./types/blockquote');
|
29 | handlers.tableCell = require('./types/tableCell');
|
30 | handlers.tableRow = require('./types/tableRow');
|
31 | handlers.table = require('./types/table');
|
32 | handlers.thematicBreak = require('./types/thematic-break');
|
33 | handlers.footnote = require('./types/footnote');
|
34 | handlers.footnoteDefinition = require('./types/footnoteDefinition');
|
35 | handlers.footnoteReference = require('./types/footnoteReference');
|
36 | handlers.linkReference = require('./types/linkReference');
|
37 | handlers.definition = require('./types/definition');
|
38 | handlers.tableHeader = require('./types/tableHeader');
|
39 | handlers.image = require('./types/image');
|
40 |
|
41 |
|
42 | function one(ctx, node, index, parent, root) {
|
43 | var handlersOverride = has(ctx, 'override') ? ctx.override : {};
|
44 | var h = xtend(handlers, handlersOverride);
|
45 |
|
46 | var type = node && node.type;
|
47 |
|
48 | if (!type) {
|
49 | throw new Error('Expected node, not `' + node + '`');
|
50 | }
|
51 |
|
52 | if (!has(h, type)) {
|
53 | throw new Error('Cannot compile unknown node `' + type + '`');
|
54 | }
|
55 |
|
56 | return h[type](ctx, node, index, parent, root);
|
57 | } |
\ | No newline at end of file |