Stop caching forEachLine/flattenLists results on params object.

This commit is contained in:
David Anson 2018-02-02 22:29:50 -08:00
parent 5adbf30628
commit bc8776c582

View file

@ -106,9 +106,11 @@ function filterTokens(params, type, callback) {
}
module.exports.filterTokens = filterTokens;
var lastForEachLineParams = null;
var lastForEachLineResult = null;
// Calls the provided function for each line (with context)
module.exports.forEachLine = function forEachLine(params, callback) {
if (!params.forEachLine) {
if (params !== lastForEachLineParams) {
var lineMetadata = new Array(params.lines.length);
var fenceStart = null;
var inFence = false;
@ -139,11 +141,12 @@ module.exports.forEachLine = function forEachLine(params, callback) {
lineMetadata[i] += 8;
}
});
params.forEachLine = lineMetadata;
lastForEachLineParams = params;
lastForEachLineResult = lineMetadata;
}
// Invoke callback
params.lines.forEach(function forLine(line, lineIndex) {
var metadata = params.forEachLine[lineIndex];
var metadata = lastForEachLineResult[lineIndex];
callback(
line,
lineIndex,
@ -179,9 +182,11 @@ module.exports.forEachHeading = function forEachHeading(params, callback) {
});
};
var lastFlattenListsParams = null;
var lastFlattenListsResult = null;
// Returns (nested) lists as a flat array (in order)
module.exports.flattenLists = function flattenLists(params) {
if (!params.flattenLists) {
if (lastFlattenListsParams !== params) {
var lists = [];
var stack = [];
var current = null;
@ -216,9 +221,10 @@ module.exports.flattenLists = function flattenLists(params) {
lastWithMap = token;
}
});
params.flattenLists = lists;
lastFlattenListsParams = params;
lastFlattenListsResult = lists;
}
return params.flattenLists;
return lastFlattenListsResult;
};
// Adds a generic error object via the onError callback