Class: JsRegex::Converter::Context
- Inherits:
-
Object
- Object
- JsRegex::Converter::Context
- 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
-
#buffered_set_extractions ⇒ Object
readonly
Returns the value of attribute buffered_set_extractions.
-
#buffered_set_members ⇒ Object
readonly
Returns the value of attribute buffered_set_members.
-
#captured_group_count ⇒ Object
readonly
Returns the value of attribute captured_group_count.
-
#group_count_changed ⇒ Object
readonly
Returns the value of attribute group_count_changed.
-
#group_level_for_backreference ⇒ Object
readonly
Returns the value of attribute group_level_for_backreference.
-
#negative_lookbehind ⇒ Object
readonly
Returns the value of attribute negative_lookbehind.
Instance Method Summary collapse
- #atomic_group? ⇒ Boolean
- #base_level_of_atomic_group? ⇒ Boolean
- #capture_group ⇒ Object
- #close_atomic_group ⇒ Object
- #close_group ⇒ Object
- #close_negative_lookbehind ⇒ Object
- #close_set ⇒ Object
-
#initialize ⇒ Context
constructor
A new instance of Context.
- #negate_set ⇒ Object
- #negative_set?(level = set_level) ⇒ Boolean
- #nested_negation? ⇒ Boolean
- #nested_set? ⇒ Boolean
-
#open_group ⇒ Object
group context.
-
#open_set ⇒ Object
set context.
- #set? ⇒ Boolean
- #stacked_quantifier?(quantifier_start_index, quantifier_end_index) ⇒ Boolean
- #start_atomic_group ⇒ Object
- #start_negative_lookbehind ⇒ Object
- #valid? ⇒ Boolean
Constructor Details
#initialize ⇒ Context
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_extractions ⇒ Object
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_members ⇒ Object
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_count ⇒ Object
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_changed ⇒ Object
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_backreference ⇒ Object
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_lookbehind ⇒ Object
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
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
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_group ⇒ Object
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_group ⇒ Object
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_group ⇒ Object
90 91 92 |
# File 'lib/js_regex/converter/context.rb', line 90 def close_group self.group_level = group_level - 1 end |
#close_negative_lookbehind ⇒ Object
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_set ⇒ Object
52 53 54 |
# File 'lib/js_regex/converter/context.rb', line 52 def close_set self.set_level = set_level - 1 end |
#negate_set ⇒ Object
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
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
64 65 66 |
# File 'lib/js_regex/converter/context.rb', line 64 def nested_negation? nested_set? && negative_set? end |
#nested_set? ⇒ Boolean
68 69 70 |
# File 'lib/js_regex/converter/context.rb', line 68 def nested_set? set_level > 1 end |
#open_group ⇒ Object
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_set ⇒ Object
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
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
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_group ⇒ Object
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_lookbehind ⇒ Object
86 87 88 |
# File 'lib/js_regex/converter/context.rb', line 86 def start_negative_lookbehind self.negative_lookbehind = true end |
#valid? ⇒ Boolean
27 28 29 |
# File 'lib/js_regex/converter/context.rb', line 27 def valid? !negative_lookbehind end |