class JsRegex::Converter::Context

Passed among Converters to globalize basic status data.

The Converters themselves are stateless.

Attributes

added_capturing_groups_after_group[RW]
capturing_group_count[RW]
case_insensitive_root[RW]
in_atomic_group[RW]
warnings[RW]

Public Class Methods

new(case_insensitive_root: false) click to toggle source
# 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

Public Instance Methods

capture_group() click to toggle source

group context

# File lib/js_regex/converter/context.rb, line 24
def capture_group
  self.capturing_group_count = capturing_group_count + 1
end
end_atomic_group() click to toggle source
# File lib/js_regex/converter/context.rb, line 32
def end_atomic_group
  self.in_atomic_group = false
end
increment_local_capturing_group_count() click to toggle source
# 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) click to toggle source

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

# 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_count() click to toggle source
# File lib/js_regex/converter/context.rb, line 51
def original_capturing_group_count
  capturing_group_count - total_added_capturing_groups
end
start_atomic_group() click to toggle source
# File lib/js_regex/converter/context.rb, line 28
def start_atomic_group
  self.in_atomic_group = true
end

Private Instance Methods

total_added_capturing_groups() click to toggle source
# File lib/js_regex/converter/context.rb, line 64
def total_added_capturing_groups
  added_capturing_groups_after_group.values.inject(0, &:+)
end