61 lines
1.8 KiB
JavaScript
61 lines
1.8 KiB
JavaScript
'use strict'
|
|
|
|
var xtend = require('xtend')
|
|
var toggle = require('state-toggle')
|
|
|
|
module.exports = Compiler
|
|
|
|
// Construct a new compiler.
|
|
function Compiler(tree, file) {
|
|
this.inLink = false
|
|
this.inTable = false
|
|
this.tree = tree
|
|
this.file = file
|
|
this.options = xtend(this.options)
|
|
this.setOptions({})
|
|
}
|
|
|
|
var proto = Compiler.prototype
|
|
|
|
// Enter and exit helpers. */
|
|
proto.enterLink = toggle('inLink', false)
|
|
proto.enterTable = toggle('inTable', false)
|
|
proto.enterLinkReference = require('./util/enter-link-reference')
|
|
|
|
// Configuration.
|
|
proto.options = require('./defaults')
|
|
proto.setOptions = require('./set-options')
|
|
|
|
proto.compile = require('./macro/compile')
|
|
proto.visit = require('./macro/one')
|
|
proto.all = require('./macro/all')
|
|
proto.block = require('./macro/block')
|
|
proto.visitOrderedItems = require('./macro/ordered-items')
|
|
proto.visitUnorderedItems = require('./macro/unordered-items')
|
|
|
|
// Expose visitors.
|
|
proto.visitors = {
|
|
root: require('./visitors/root'),
|
|
text: require('./visitors/text'),
|
|
heading: require('./visitors/heading'),
|
|
paragraph: require('./visitors/paragraph'),
|
|
blockquote: require('./visitors/blockquote'),
|
|
list: require('./visitors/list'),
|
|
listItem: require('./visitors/list-item'),
|
|
inlineCode: require('./visitors/inline-code'),
|
|
code: require('./visitors/code'),
|
|
html: require('./visitors/html'),
|
|
thematicBreak: require('./visitors/thematic-break'),
|
|
strong: require('./visitors/strong'),
|
|
emphasis: require('./visitors/emphasis'),
|
|
break: require('./visitors/break'),
|
|
delete: require('./visitors/delete'),
|
|
link: require('./visitors/link'),
|
|
linkReference: require('./visitors/link-reference'),
|
|
imageReference: require('./visitors/image-reference'),
|
|
definition: require('./visitors/definition'),
|
|
image: require('./visitors/image'),
|
|
table: require('./visitors/table'),
|
|
tableCell: require('./visitors/table-cell')
|
|
}
|