Skip to content

Commit

Permalink
Merge pull request #88 from msftrncs/noWhileInCapture
Browse files Browse the repository at this point in the history
no while checks if scanning a capture
  • Loading branch information
alexdima committed Jul 12, 2019
2 parents 504885d + 2d17859 commit c349c70
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 21 deletions.
20 changes: 11 additions & 9 deletions release/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -2317,7 +2317,6 @@ function nameMatcher(identifers, scopes) {
return false;
});
}
;
function collectInjections(result, selector, rule, ruleFactoryHelper, grammar) {
var matchers = matcher_1.createMatchers(selector, nameMatcher);
var ruleId = rule_1.RuleFactory.getCompiledRuleId(rule, ruleFactoryHelper, grammar.repository);
Expand Down Expand Up @@ -2579,7 +2578,7 @@ var Grammar = /** @class */ (function () {
var onigLineText = this.createOnigString(lineText);
var lineLength = onigLineText.content.length;
var lineTokens = new LineTokens(emitBinaryTokens, lineText, this._tokenTypeMatchers);
var nextState = _tokenizeString(this, onigLineText, isFirstLine, 0, prevState, lineTokens);
var nextState = _tokenizeString(this, onigLineText, isFirstLine, 0, prevState, lineTokens, true);
disposeOnigString(onigLineText);
return {
lineLength: lineLength,
Expand Down Expand Up @@ -2649,7 +2648,7 @@ function handleCaptures(grammar, lineText, isFirstLine, stack, lineTokens, captu
var contentNameScopesList = nameScopesList.push(grammar, contentName);
var stackClone = stack.push(captureRule.retokenizeCapturedWithRuleId, captureIndex.start, -1, null, nameScopesList, contentNameScopesList);
var onigSubStr = grammar.createOnigString(lineTextContent.substring(0, captureIndex.end));
_tokenizeString(grammar, onigSubStr, (isFirstLine && captureIndex.start === 0), captureIndex.start, stackClone, lineTokens);
_tokenizeString(grammar, onigSubStr, (isFirstLine && captureIndex.start === 0), captureIndex.start, stackClone, lineTokens, false);
disposeOnigString(onigSubStr);
continue;
}
Expand Down Expand Up @@ -2814,14 +2813,17 @@ function _checkWhileConditions(grammar, lineText, isFirstLine, linePos, stack, l
}
return { stack: stack, linePos: linePos, anchorPosition: anchorPosition, isFirstLine: isFirstLine };
}
function _tokenizeString(grammar, lineText, isFirstLine, linePos, stack, lineTokens) {
function _tokenizeString(grammar, lineText, isFirstLine, linePos, stack, lineTokens, checkWhileConditions) {
var lineLength = lineText.content.length;
var STOP = false;
var whileCheckResult = _checkWhileConditions(grammar, lineText, isFirstLine, linePos, stack, lineTokens);
stack = whileCheckResult.stack;
linePos = whileCheckResult.linePos;
isFirstLine = whileCheckResult.isFirstLine;
var anchorPosition = whileCheckResult.anchorPosition;
var anchorPosition = -1;
if (checkWhileConditions) {
var whileCheckResult = _checkWhileConditions(grammar, lineText, isFirstLine, linePos, stack, lineTokens);
stack = whileCheckResult.stack;
linePos = whileCheckResult.linePos;
isFirstLine = whileCheckResult.isFirstLine;
anchorPosition = whileCheckResult.anchorPosition;
}
while (!STOP) {
scanNext(); // potentially modifies linePos && anchorPosition
}
Expand Down
24 changes: 12 additions & 12 deletions src/grammar.ts
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ function nameMatcher(identifers: string[], scopes: string[]) {
}
return false;
});
};
}

function collectInjections(result: Injection[], selector: string, rule: IRawRule, ruleFactoryHelper: IRuleFactoryHelper, grammar: IRawGrammar): void {
let matchers = createMatchers(selector, nameMatcher);
Expand Down Expand Up @@ -455,7 +455,7 @@ export class Grammar implements IGrammar, IRuleFactoryHelper, IOnigLib {
let onigLineText = this.createOnigString(lineText);
let lineLength = onigLineText.content.length;
let lineTokens = new LineTokens(emitBinaryTokens, lineText, this._tokenTypeMatchers);
let nextState = _tokenizeString(this, onigLineText, isFirstLine, 0, prevState, lineTokens);
let nextState = _tokenizeString(this, onigLineText, isFirstLine, 0, prevState, lineTokens, true);

disposeOnigString(onigLineText);

Expand Down Expand Up @@ -538,10 +538,7 @@ function handleCaptures(grammar: Grammar, lineText: OnigString, isFirstLine: boo

let stackClone = stack.push(captureRule.retokenizeCapturedWithRuleId, captureIndex.start, -1, null, nameScopesList, contentNameScopesList);
let onigSubStr = grammar.createOnigString(lineTextContent.substring(0, captureIndex.end));
_tokenizeString(grammar,
onigSubStr,
(isFirstLine && captureIndex.start === 0), captureIndex.start, stackClone, lineTokens
);
_tokenizeString(grammar, onigSubStr, (isFirstLine && captureIndex.start === 0), captureIndex.start, stackClone, lineTokens, false);
disposeOnigString(onigSubStr);
continue;
}
Expand Down Expand Up @@ -753,16 +750,19 @@ function _checkWhileConditions(grammar: Grammar, lineText: OnigString, isFirstLi
return { stack: stack, linePos: linePos, anchorPosition: anchorPosition, isFirstLine: isFirstLine };
}

function _tokenizeString(grammar: Grammar, lineText: OnigString, isFirstLine: boolean, linePos: number, stack: StackElement, lineTokens: LineTokens): StackElement {
function _tokenizeString(grammar: Grammar, lineText: OnigString, isFirstLine: boolean, linePos: number, stack: StackElement, lineTokens: LineTokens, checkWhileConditions: boolean): StackElement {
const lineLength = lineText.content.length;

let STOP = false;
let anchorPosition = -1;

let whileCheckResult = _checkWhileConditions(grammar, lineText, isFirstLine, linePos, stack, lineTokens);
stack = whileCheckResult.stack;
linePos = whileCheckResult.linePos;
isFirstLine = whileCheckResult.isFirstLine;
let anchorPosition = whileCheckResult.anchorPosition;
if (checkWhileConditions) {
let whileCheckResult = _checkWhileConditions(grammar, lineText, isFirstLine, linePos, stack, lineTokens);
stack = whileCheckResult.stack;
linePos = whileCheckResult.linePos;
isFirstLine = whileCheckResult.isFirstLine;
anchorPosition = whileCheckResult.anchorPosition;
}

while (!STOP) {
scanNext(); // potentially modifies linePos && anchorPosition
Expand Down

0 comments on commit c349c70

Please sign in to comment.