Refactor micromark helper getTokenTextByType to be more efficient, remove tokenIfType helper for being redundant.

This commit is contained in:
David Anson 2024-09-16 20:50:54 -07:00
parent b749d9fbb4
commit 2ea3f95fd1
6 changed files with 82 additions and 120 deletions

View file

@ -3,7 +3,7 @@
"use strict";
const { addErrorContext } = require("../helpers");
const { tokenIfType } = require("../helpers/micromark.cjs");
const { getDescendantsByType } = require("../helpers/micromark.cjs");
const { filterByTypesCached } = require("./cache");
const leftSpaceRe = /^\s(?:[^`]|$)/;
@ -29,17 +29,12 @@ module.exports = {
"function": function MD038(params, onError) {
const codeTexts = filterByTypesCached([ "codeText" ]);
for (const codeText of codeTexts) {
const { children } = codeText;
const first = 0;
const last = children.length - 1;
const startSequence = tokenIfType(children[first], "codeTextSequence");
const endSequence = tokenIfType(children[last], "codeTextSequence");
const startData =
tokenIfType(children[first + 1], "codeTextData") ||
tokenIfType(children[first + 2], "codeTextData");
const endData =
tokenIfType(children[last - 1], "codeTextData") ||
tokenIfType(children[last - 2], "codeTextData");
const sequences = getDescendantsByType(codeText, [ "codeTextSequence" ]);
const startSequence = sequences[0];
const endSequence = sequences[sequences.length - 1];
const datas = getDescendantsByType(codeText, [ "codeTextData" ]);
const startData = datas[0];
const endData = datas[datas.length - 1];
if (startSequence && endSequence && startData && endData) {
const spaceLeft = leftSpaceRe.test(startData.text);
const spaceRight = rightSpaceRe.test(endData.text);