3 var xtend = require('xtend');
4 var toggle = require('state-toggle');
6 module.exports = Compiler;
8 /* Construct a new compiler. */
9 function Compiler(tree, file) {
14 this.options = xtend(this.options);
18 var proto = Compiler.prototype;
20 /* Enter and exit helpers. */
21 proto.enterLink = toggle('inLink', false);
22 proto.enterTable = toggle('inTable', false);
23 proto.enterLinkReference = require('./util/enter-link-reference');
26 proto.options = require('./defaults');
27 proto.setOptions = require('./set-options');
29 proto.compile = require('./macro/compile');
30 proto.visit = require('./macro/one');
31 proto.all = require('./macro/all');
32 proto.block = require('./macro/block');
33 proto.visitOrderedItems = require('./macro/ordered-items');
34 proto.visitUnorderedItems = require('./macro/unordered-items');
36 /* Expose visitors. */
38 root: require('./visitors/root'),
39 text: require('./visitors/text'),
40 heading: require('./visitors/heading'),
41 paragraph: require('./visitors/paragraph'),
42 blockquote: require('./visitors/blockquote'),
43 list: require('./visitors/list'),
44 listItem: require('./visitors/list-item'),
45 inlineCode: require('./visitors/inline-code'),
46 code: require('./visitors/code'),
47 html: require('./visitors/html'),
48 thematicBreak: require('./visitors/thematic-break'),
49 strong: require('./visitors/strong'),
50 emphasis: require('./visitors/emphasis'),
51 break: require('./visitors/break'),
52 delete: require('./visitors/delete'),
53 link: require('./visitors/link'),
54 linkReference: require('./visitors/link-reference'),
55 imageReference: require('./visitors/image-reference'),
56 definition: require('./visitors/definition'),
57 image: require('./visitors/image'),
58 footnote: require('./visitors/footnote'),
59 footnoteReference: require('./visitors/footnote-reference'),
60 footnoteDefinition: require('./visitors/footnote-definition'),
61 table: require('./visitors/table'),
62 tableCell: require('./visitors/table-cell')