compiler.js 2.0 KB

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