Module: Replaceability

Included in:
Treetop::Runtime::SyntaxNode
Defined in:
lib/vsql_node_extensions.rb

Instance Method Summary collapse

Instance Method Details

#adjust_intervals!(idx, delta) ⇒ Object



23
24
25
26
27
28
29
30
31
32
# File 'lib/vsql_node_extensions.rb', line 23

def adjust_intervals!(idx, delta)
  case
  when @interval.include?(idx)
    @interval = (@interval.first)...[@interval.first, @interval.last + delta].max
  when @interval.first > idx
    @interval = (@interval.first + delta)...(@interval.last + delta)
  end
  elements && elements.each { |e| e.adjust_intervals!(idx, delta) }
  true
end

#gsub!(pattern, replacement) ⇒ Object



34
35
36
37
38
39
40
# File 'lib/vsql_node_extensions.rb', line 34

def gsub!(pattern, replacement)
  ScanHelpers.gsub_replacements(text_value, pattern, replacement).reverse.each do |(range, delta, rep_str)|
    end_idx = (@interval.min + range.max)
    @input[(@interval.min + range.min)..end_idx] = rep_str
    root.adjust_intervals!(end_idx, delta)
  end
end

#index_of(str) ⇒ Object



19
20
21
# File 'lib/vsql_node_extensions.rb', line 19

def index_of(str)
  e.text_value.index(str) + e.interval.first
end