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