From c9edc3b2d66ac63dcfe994de8ec2404ce68dd2bb Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Thu, 18 Apr 2013 08:41:40 -0700 Subject: [PATCH] Add createScanner() helper to Rule --- src/app/text-mate-grammar.coffee | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/src/app/text-mate-grammar.coffee b/src/app/text-mate-grammar.coffee index 3796dc6c6..5626d88a7 100644 --- a/src/app/text-mate-grammar.coffee +++ b/src/app/text-mate-grammar.coffee @@ -172,6 +172,17 @@ class Rule clearAnchorPosition: -> @anchorPosition = -1 + createScanner: (patterns, firstLine, position) -> + anchored = false + regexes = _.map patterns, (pattern) => + anchored = true if pattern.anchored + pattern.getRegex(firstLine, position, @anchorPosition) + + scanner = new OnigScanner(regexes) + scanner.patterns = patterns + scanner.anchored = anchored + scanner + getScanner: (ruleStack, baseGrammar, position, firstLine) -> return scanner if scanner = @scannersByBaseGrammarName[baseGrammar.name] @@ -183,16 +194,10 @@ class Rule patterns.push(injection.patterns...) injected = true - anchored = false - regexes = _.map patterns, (pattern) => - anchored = true if pattern.anchored - pattern.getRegex(firstLine, position, @anchorPosition) - - regexScanner = new OnigScanner(regexes) - regexScanner.patterns = patterns - unless anchored or injected - @scannersByBaseGrammarName[baseGrammar.name] = regexScanner - regexScanner + scanner = @createScanner(patterns, firstLine, position) + unless scanner.anchored or injected + @scannersByBaseGrammarName[baseGrammar.name] = scanner + scanner getNextTokens: (ruleStack, line, position, firstLine) -> baseGrammar = ruleStack[0].grammar