| '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'), |
| footnote: require('./visitors/footnote'), |
| footnoteReference: require('./visitors/footnote-reference'), |
| footnoteDefinition: require('./visitors/footnote-definition'), |
| table: require('./visitors/table'), |
| tableCell: require('./visitors/table-cell') |
| } |