UNPKG

1.89 kBJavaScriptView Raw
1'use strict';
2
3/* Dependencies. */
4var has = require('has');
5var xtend = require('xtend');
6
7/* Expose. */
8module.exports = one;
9
10/* Handlers. */
11var handlers = {};
12
13handlers.root = require('./all');
14handlers.heading = require('./types/heading');
15handlers.paragraph = require('./types/paragraph');
16handlers.comment = require('./types/comment');
17
18handlers.text = require('./types/text');
19handlers.link = require('./types/link');
20handlers.list = require('./types/list');
21handlers.listItem = require('./types/listItem');
22handlers.break = require('./types/break');
23handlers.code = require('./types/code');
24handlers.strong = require('./types/strong');
25handlers.emphasis = require('./types/emphasis');
26handlers.delete = require('./types/delete');
27handlers.inlineCode = require('./types/inlinecode');
28handlers.blockquote = require('./types/blockquote');
29handlers.tableCell = require('./types/tableCell');
30handlers.tableRow = require('./types/tableRow');
31handlers.table = require('./types/table');
32handlers.thematicBreak = require('./types/thematic-break');
33handlers.footnote = require('./types/footnote');
34handlers.footnoteDefinition = require('./types/footnoteDefinition');
35handlers.footnoteReference = require('./types/footnoteReference');
36handlers.linkReference = require('./types/linkReference');
37handlers.definition = require('./types/definition');
38handlers.tableHeader = require('./types/tableHeader');
39handlers.image = require('./types/image');
40
41/* Stringify `node`. */
42function 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