diff --git a/lib/shared.js b/lib/shared.js index ffee555e..472a60e5 100644 --- a/lib/shared.js +++ b/lib/shared.js @@ -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