Refactor micromark token handling to remove optional Token.htmlFlowChildren property and make related code more efficient for a ~6% elapsed time reduction.

This commit is contained in:
David Anson 2023-09-02 12:07:14 -07:00
parent e282874fe3
commit 24c97a54fb
16 changed files with 274 additions and 283 deletions

View file

@ -3,8 +3,7 @@
"use strict";
const { addError, addErrorDetailIf } = require("../helpers");
const { filterByHtmlTokens, filterByTypes, getHtmlTagInfo } =
require("../helpers/micromark.cjs");
const { filterByTypes, getHtmlTagInfo } = require("../helpers/micromark.cjs");
// Regular expression for identifying HTML anchor names
const idRe = /\sid\s*=\s*['"]?([^'"\s>]+)/iu;
@ -68,7 +67,7 @@ module.exports = {
}
// Process HTML anchors
for (const token of filterByHtmlTokens(tokens)) {
for (const token of filterByTypes(tokens, [ "htmlText" ])) {
const htmlTagInfo = getHtmlTagInfo(token);
if (htmlTagInfo && !htmlTagInfo.close) {
const anchorMatch = idRe.exec(token.text) ||