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