Class: RegexpExamples::ChargroupParser
- Inherits:
-
Object
- Object
- RegexpExamples::ChargroupParser
- Defined in:
- lib/regexp-examples/chargroup_parser.rb
Overview
A “sub-parser”, for char groups in a regular expression Some examples of what this class needs to parse:
Instance Attribute Summary collapse
-
#regexp_string ⇒ Object
readonly
Returns the value of attribute regexp_string.
Instance Method Summary collapse
-
#initialize(regexp_string, is_sub_group: false) ⇒ ChargroupParser
constructor
A new instance of ChargroupParser.
- #length ⇒ Object
- #parse ⇒ Object
- #result ⇒ Object
Constructor Details
#initialize(regexp_string, is_sub_group: false) ⇒ ChargroupParser
Returns a new instance of ChargroupParser.
14 15 16 17 18 19 |
# File 'lib/regexp-examples/chargroup_parser.rb', line 14 def initialize(regexp_string, is_sub_group: false) @regexp_string = regexp_string @is_sub_group = is_sub_group @current_position = 0 parse end |
Instance Attribute Details
#regexp_string ⇒ Object (readonly)
Returns the value of attribute regexp_string.
13 14 15 |
# File 'lib/regexp-examples/chargroup_parser.rb', line 13 def regexp_string @regexp_string end |
Instance Method Details
#length ⇒ Object
43 44 45 |
# File 'lib/regexp-examples/chargroup_parser.rb', line 43 def length @current_position end |
#parse ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/regexp-examples/chargroup_parser.rb', line 21 def parse @charset = [] @negative = false parse_first_chars until next_char == ']' case next_char when '[' parse_sub_group_concat when '-' parse_after_hyphen when '&' parse_after_ampersand else @charset.concat parse_checking_backlash @current_position += 1 end end @charset.uniq! @current_position += 1 # To account for final "]" end |
#result ⇒ Object
47 48 49 |
# File 'lib/regexp-examples/chargroup_parser.rb', line 47 def result @negative ? (CharSets::Any - @charset) : @charset end |