Module: ScanHelpers

Extended by:
ScanHelpers
Included in:
ScanHelpers
Defined in:
lib/vsql_node_extensions.rb

Instance Method Summary collapse

Instance Method Details

#gsub_replacements(string, pattern, replacement) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
# File 'lib/vsql_node_extensions.rb', line 4

def gsub_replacements(string, pattern, replacement)
  pattern = Regexp.new(Regexp.escape(pattern)) if pattern.is_a?(String)
  [].tap do |matches|
    scanner = StringScanner.new(string)
    until scanner.eos?
      return matches unless scanner.scan_until(pattern)
      matches.push([(scanner.pos - scanner.matched_size)..(scanner.pos - 1),
                    replacement.size - scanner.matched_size,
                    replacement])
    end
  end
end