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

#initializeContext

Returns a new instance of Context.



18
19
20
21
22
23
24
25
# File 'lib/js_regex/converter/context.rb', line 18

def initialize
  self.buffered_set_members = []
  self.buffered_set_extractions = []
  self.captured_group_count = 0
  self.group_level = 0
  self.negative_set_levels = []
  self.set_level = 0
end

Instance Attribute Details

#buffered_set_extractionsObject

Returns the value of attribute buffered_set_extractions.



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

def buffered_set_extractions
  @buffered_set_extractions
end

#buffered_set_membersObject

Returns the value of attribute buffered_set_members.



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

def buffered_set_members
  @buffered_set_members
end

#captured_group_countObject

Returns the value of attribute captured_group_count.



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

def captured_group_count
  @captured_group_count
end

#group_count_changedObject

Returns the value of attribute group_count_changed.



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

def group_count_changed
  @group_count_changed
end

#group_level_for_backreferenceObject

Returns the value of attribute group_level_for_backreference.



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

def group_level_for_backreference
  @group_level_for_backreference
end

#negative_lookbehindObject

Returns the value of attribute negative_lookbehind.



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

def negative_lookbehind
  @negative_lookbehind
end

Instance Method Details

#atomic_group?Boolean

Returns:

  • (Boolean)


105
106
107
# File 'lib/js_regex/converter/context.rb', line 105

def atomic_group?
  group_level_for_backreference
end

#base_level_of_atomic_group?Boolean

Returns:

  • (Boolean)


109
110
111
112
# File 'lib/js_regex/converter/context.rb', line 109

def base_level_of_atomic_group?
  group_level_for_backreference &&
    group_level.equal?(group_level_for_backreference + 1)
end

#capture_groupObject



78
79
80
# File 'lib/js_regex/converter/context.rb', line 78

def capture_group
  self.captured_group_count = captured_group_count + 1
end

#close_atomic_groupObject



94
95
96
97
98
# File 'lib/js_regex/converter/context.rb', line 94

def close_atomic_group
  close_group
  self.group_level_for_backreference = nil
  self.group_count_changed = true
end

#close_groupObject



90
91
92
# File 'lib/js_regex/converter/context.rb', line 90

def close_group
  self.group_level = group_level - 1
end

#close_negative_lookbehindObject



100
101
102
103
# File 'lib/js_regex/converter/context.rb', line 100

def close_negative_lookbehind
  close_group
  self.negative_lookbehind = false
end

#close_setObject



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

def close_set
  self.set_level = set_level - 1
end

#negate_setObject



48
49
50
# File 'lib/js_regex/converter/context.rb', line 48

def negate_set
  self.negative_set_levels = negative_set_levels | [set_level]
end

#negative_set?(level = set_level) ⇒ Boolean

Returns:

  • (Boolean)


60
61
62
# File 'lib/js_regex/converter/context.rb', line 60

def negative_set?(level = set_level)
  negative_set_levels.include?(level)
end

#nested_negation?Boolean

Returns:

  • (Boolean)


64
65
66
# File 'lib/js_regex/converter/context.rb', line 64

def nested_negation?
  nested_set? && negative_set?
end

#nested_set?Boolean

Returns:

  • (Boolean)


68
69
70
# File 'lib/js_regex/converter/context.rb', line 68

def nested_set?
  set_level > 1
end

#open_groupObject

group context



74
75
76
# File 'lib/js_regex/converter/context.rb', line 74

def open_group
  self.group_level = group_level + 1
end

#open_setObject

set context



39
40
41
42
43
44
45
46
# File 'lib/js_regex/converter/context.rb', line 39

def open_set
  self.set_level = set_level + 1
  if set_level == 1
    buffered_set_members.clear
    buffered_set_extractions.clear
  end
  negative_set_levels.delete(set_level)
end

#set?Boolean

Returns:

  • (Boolean)


56
57
58
# File 'lib/js_regex/converter/context.rb', line 56

def set?
  set_level > 0
end

#stacked_quantifier?(quantifier_start_index, quantifier_end_index) ⇒ Boolean

Returns:

  • (Boolean)


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

def stacked_quantifier?(quantifier_start_index, quantifier_end_index)
  is_stacked = last_quantifier_end_index.equal?(quantifier_start_index)
  self.last_quantifier_end_index = quantifier_end_index
  is_stacked
end

#start_atomic_groupObject



82
83
84
# File 'lib/js_regex/converter/context.rb', line 82

def start_atomic_group
  self.group_level_for_backreference = group_level
end

#start_negative_lookbehindObject



86
87
88
# File 'lib/js_regex/converter/context.rb', line 86

def start_negative_lookbehind
  self.negative_lookbehind = true
end

#valid?Boolean

Returns:

  • (Boolean)


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

def valid?
  !negative_lookbehind
end