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.



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

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.



11
12
13
# File 'lib/js_regex/converter/context.rb', line 11

def capturing_group_count
  @capturing_group_count
end

#case_insensitive_rootObject

Returns the value of attribute case_insensitive_root.



11
12
13
# File 'lib/js_regex/converter/context.rb', line 11

def case_insensitive_root
  @case_insensitive_root
end

#in_atomic_groupObject

Returns the value of attribute in_atomic_group.



11
12
13
# File 'lib/js_regex/converter/context.rb', line 11

def in_atomic_group
  @in_atomic_group
end

#warningsObject

Returns the value of attribute warnings.



11
12
13
# File 'lib/js_regex/converter/context.rb', line 11

def warnings
  @warnings
end

Instance Method Details

#capture_groupObject

group context



26
27
28
# File 'lib/js_regex/converter/context.rb', line 26

def capture_group
  self.capturing_group_count = capturing_group_count + 1
end

#end_atomic_groupObject



34
35
36
# File 'lib/js_regex/converter/context.rb', line 34

def end_atomic_group
  self.in_atomic_group = false
end

#increment_local_capturing_group_countObject



38
39
40
41
# File 'lib/js_regex/converter/context.rb', line 38

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.



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

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



53
54
55
# File 'lib/js_regex/converter/context.rb', line 53

def original_capturing_group_count
  capturing_group_count - total_added_capturing_groups
end

#start_atomic_groupObject



30
31
32
# File 'lib/js_regex/converter/context.rb', line 30

def start_atomic_group
  self.in_atomic_group = true
end