All files / src/plugins/default markbind-plugin-anchors.ts

100% Statements 7/7
100% Branches 3/3
100% Functions 2/2
100% Lines 6/6

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25        2x   2x   10x         2x 60x 11x                  
import cheerio from 'cheerio';
import { MbNode } from '../../utils/node.js';
import { PluginContext } from '../Plugin.js';
 
const CSS_FILE_NAME = 'markbind-plugin-anchors.css';
 
const HEADER_REGEX = /^h[1-6]$/;
 
const getLinks = () => [`<link rel="stylesheet" href="${CSS_FILE_NAME}">`];
 
/**
 * Adds anchor links to headers
 */
const postProcessNode = (_pluginContext: PluginContext, node: MbNode) => {
  if (HEADER_REGEX.test(node.name) && node.attribs.id) {
    cheerio(node).append(
      `<a class="fa fa-anchor" href="#${node.attribs.id}" onclick="event.stopPropagation()"></a>`);
  }
};
 
export {
  getLinks,
  postProcessNode,
};