From 1407f6c1f0c4811f42317fdcfeeb9fe79c4e7024 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Thu, 18 Apr 2013 08:37:42 -0700 Subject: [PATCH] Add getRegex() helper to Pattern --- src/app/text-mate-grammar.coffee | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/app/text-mate-grammar.coffee b/src/app/text-mate-grammar.coffee index 5fcd1b898..3796dc6c6 100644 --- a/src/app/text-mate-grammar.coffee +++ b/src/app/text-mate-grammar.coffee @@ -175,9 +175,7 @@ class Rule getScanner: (ruleStack, baseGrammar, position, firstLine) -> return scanner if scanner = @scannersByBaseGrammarName[baseGrammar.name] - anchored = false injected = false - regexes = [] patterns = @getIncludedPatterns(baseGrammar) scopes = scopesFromStack(ruleStack) for injection in @injections @@ -185,13 +183,10 @@ class Rule patterns.push(injection.patterns...) injected = true - patterns.forEach (pattern) => - if pattern.anchored - anchored = true - regex = pattern.replaceAnchor(firstLine, position, @anchorPosition) - else - regex = pattern.regexSource - regexes.push regex if regex + anchored = false + regexes = _.map patterns, (pattern) => + anchored = true if pattern.anchored + pattern.getRegex(firstLine, position, @anchorPosition) regexScanner = new OnigScanner(regexes) regexScanner.patterns = patterns @@ -249,6 +244,12 @@ class Pattern @pushRule = new Rule(@grammar, { @scopeName, patterns, endPattern }) @anchored = @hasAnchor() + getRegex: (firstLine, position, anchorPosition) -> + if @anchored + @replaceAnchor(firstLine, position, anchorPosition) + else + @regexSource + hasAnchor: -> return false unless @regexSource escape = false