Add getRegex() helper to Pattern

This commit is contained in:
Kevin Sawicki
2013-04-18 08:37:42 -07:00
parent 3542e879bc
commit 1407f6c1f0

View File

@@ -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