header.js 921 B

123456789101112131415161718192021222324252627282930313233
  1. export default class HeaderConfigurer {
  2. constructor() {
  3. this.injectRevisionHeadClass = this.injectRevisionHeadClass.bind(this);
  4. }
  5. configure(md) {
  6. const rules = md.renderer.rules;
  7. const original = rules.heading_open;
  8. // combine rule and set
  9. // rules.heading_open = this.combineRules(this.injectRevisionHeadClass, headingOpenOrg);
  10. rules.heading_open = (tokens, idx, options, env, self) => {
  11. // Inject 'revision-head' class
  12. this.injectRevisionHeadClass(tokens, idx, options, env, self);
  13. if (original) {
  14. return original(tokens, idx, options, env, self);
  15. }
  16. return self.renderToken(tokens, idx, options, env, self);
  17. };
  18. }
  19. /**
  20. * Inject 'revision-head' class
  21. */
  22. injectRevisionHeadClass(tokens, idx, options, env, slf) {
  23. if (tokens[idx].map && tokens[idx].level === 0) {
  24. tokens[idx].attrJoin('class', 'revision-head');
  25. }
  26. }
  27. }