Skip to content

Commit a8e9c2f

Browse files
committed
fix: rewrite getLineOffset function
1 parent 9f7d6a8 commit a8e9c2f

File tree

1 file changed

+3
-27
lines changed

1 file changed

+3
-27
lines changed

lib/common/utils.js

Lines changed: 3 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -293,33 +293,9 @@ function normalizeReference(str) {
293293
var _g = typeof global !== 'undefined' ? global : window;
294294
var tokensRef = new _g.WeakMap();
295295

296-
// TODO: performance tweaks for emphasis **_* pattern which has only 1/10 performance after adding line offset
297-
function getLineOffset(state, tokenIdx) {
298-
var blockState = state.env.state_block;
299-
var parentToken = state.env.parentToken;
300-
var tokensBefore = typeof tokenIdx !== 'undefined' ? state.tokens.slice(0, tokenIdx) : state.tokens;
301-
302-
var resultsMap = tokensRef.get(state.tokens);
303-
if (resultsMap) {
304-
var cachedResult = resultsMap.get(tokenIdx);
305-
if (typeof cachedResult !== 'undefined') {
306-
return cachedResult;
307-
}
308-
} else {
309-
resultsMap = new _g.Map();
310-
tokensRef.set(state.tokens, resultsMap);
311-
}
312-
313-
var linesBefore = tokensBefore.filter(function (t) { return t.type === 'softbreak' || t.type === 'hardbreak'; }).length;
314-
315-
var lineOffset = 0;
316-
for (var i = 0; i < linesBefore; i++) {
317-
var startLine = i + parentToken.map[0] + 1;
318-
lineOffset += blockState.tShift[startLine];
319-
}
320-
321-
resultsMap.set(tokenIdx, lineOffset);
322-
return lineOffset;
296+
function getLineOffset(state) {
297+
const blockState = state.env.state_block;
298+
return blockState.lineOffsets[state.currentLine] ?? 0;
323299
}
324300

325301
function trimLeftOffset(str) {

0 commit comments

Comments
 (0)