Add includesSorted function, use for faster searches of sorted arrays.

This commit is contained in:
David Anson 2019-03-28 22:06:42 -07:00
parent d7c0d195d7
commit 9b9532e163
8 changed files with 86 additions and 50 deletions

View file

@ -3,9 +3,8 @@
"use strict";
const shared = require("./shared");
const {
addErrorDetailIf, filterTokens, forEachHeading, forEachLine, rangeFromRegExp
} = shared;
const { addErrorDetailIf, filterTokens, forEachHeading, forEachLine,
includesSorted, rangeFromRegExp } = shared;
const longLineRePrefix = "^(.{";
const longLineRePostfix = "})(.*\\s.*)$";
@ -59,13 +58,13 @@ module.exports = {
});
forEachLine((line, lineIndex, inCode, onFence, inTable) => {
const lineNumber = lineIndex + 1;
const isHeading = headingLineNumbers.indexOf(lineNumber) >= 0;
const isHeading = includesSorted(headingLineNumbers, lineNumber);
const length = isHeading ? headingLineLength : lineLength;
const lengthRe = isHeading ? longHeadingLineRe : longLineRe;
if ((includeCodeBlocks || !inCode) &&
(includeTables || !inTable) &&
(includeHeadings || !isHeading) &&
(linkOnlyLineNumbers.indexOf(lineNumber) < 0) &&
!includesSorted(linkOnlyLineNumbers, lineNumber) &&
lengthRe.test(line) &&
!labelRe.test(line)) {
addErrorDetailIf(onError, lineNumber, length, line.length,