Class: JsRegex::Converter::Context

Inherits:
Object
  • Object
show all
Defined in:
lib/js_regex/converter/context.rb

Overview

Passed among Converters to globalize basic status data.

The Converters themselves are stateless.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(case_insensitive_root: false) ⇒ Context

Returns a new instance of Context.



14
15
16
17
18
19
20
# File 'lib/js_regex/converter/context.rb', line 14

def initialize(case_insensitive_root: false)
  self.added_capturing_groups_after_group = Hash.new(0)
  self.capturing_group_count = 0
  self.warnings = []

  self.case_insensitive_root = case_insensitive_root
end

Instance Attribute Details

#capturing_group_countObject

Returns the value of attribute capturing_group_count.



9
10
11
# File 'lib/js_regex/converter/context.rb', line 9

def capturing_group_count
  @capturing_group_count
end

#case_insensitive_rootObject

Returns the value of attribute case_insensitive_root.



9
10
11
# File 'lib/js_regex/converter/context.rb', line 9

def case_insensitive_root
  @case_insensitive_root
end

#in_atomic_groupObject

Returns the value of attribute in_atomic_group.



9
10
11
# File 'lib/js_regex/converter/context.rb', line 9

def in_atomic_group
  @in_atomic_group
end

#warningsObject

Returns the value of attribute warnings.



9
10
11
# File 'lib/js_regex/converter/context.rb', line 9

def warnings
  @warnings
end

Instance Method Details

#capture_groupObject

group context



24
25
26
# File 'lib/js_regex/converter/context.rb', line 24

def capture_group
  self.capturing_group_count = capturing_group_count + 1
end

#end_atomic_groupObject



32
33
34
# File 'lib/js_regex/converter/context.rb', line 32

def end_atomic_group
  self.in_atomic_group = false
end

#increment_local_capturing_group_countObject



36
37
38
39
# File 'lib/js_regex/converter/context.rb', line 36

def increment_local_capturing_group_count
  added_capturing_groups_after_group[original_capturing_group_count] += 1
  capture_group
end

#new_capturing_group_position(old_position) ⇒ Object

takes and returns 1-indexed group positions. new is different from old if capturing groups were added in between.



43
44
45
46
47
48
49
# File 'lib/js_regex/converter/context.rb', line 43

def new_capturing_group_position(old_position)
  increment = 0
  added_capturing_groups_after_group.each do |after_n_groups, count|
    increment += count if after_n_groups < old_position
  end
  old_position + increment
end

#original_capturing_group_countObject



51
52
53
# File 'lib/js_regex/converter/context.rb', line 51

def original_capturing_group_count
  capturing_group_count - total_added_capturing_groups
end

#start_atomic_groupObject



28
29
30
# File 'lib/js_regex/converter/context.rb', line 28

def start_atomic_group
  self.in_atomic_group = true
end