Implement regex addresses using Buffer.traverseRegexMatchesInRange

This commit is contained in:
Nathan Sobo
2012-03-27 17:57:11 -07:00
parent e867c43b17
commit 2b77452f4f
2 changed files with 5 additions and 15 deletions

View File

@@ -3,6 +3,3 @@ _ = require 'underscore'
module.exports =
class Command
isAddress: -> false
regexForPattern: (pattern) ->
new RegExp(pattern, 'm')

View File

@@ -6,23 +6,16 @@ class RegexAddress extends Address
regex: null
constructor: (pattern) ->
@regex = @regexForPattern(pattern)
@regex = new RegExp(pattern)
getRange: (editor) ->
selectedRange = editor.getSelection().getBufferRange()
rangeToSearch = new Range(selectedRange.end, editor.getEofPosition())
text = editor.getTextInRange(rangeToSearch)
if match = text.match(@regex)
buffer = editor.buffer
startIndex = buffer.characterIndexForPosition(rangeToSearch.start) + match.index
endIndex = startIndex + match[0].length
rangeToReturn = selectedRange
editor.buffer.traverseRegexMatchesInRange @regex, rangeToSearch, (match, range) ->
rangeToReturn = range
startPosition = buffer.positionForCharacterIndex(startIndex)
endPosition = buffer.positionForCharacterIndex(endIndex)
return new Range(startPosition, endPosition)
else
return selectedRange
rangeToReturn
isRelative: -> true