Class: Regexp::Expression::Quantifier

Inherits:
Object
  • Object
show all
Includes:
Shared
Defined in:
lib/regexp_parser/expression/quantifier.rb

Overview

TODO: in v3.0.0, maybe put Shared back into Base, and inherit from Base and call super in #initialize, but raise in #quantifier= and #quantify, or introduce an Expression::Quantifiable intermediate class. Or actually allow chaining as a more concise but tricky solution than PR#69.

Constant Summary collapse

MODES =
%i[greedy possessive reluctant]

Instance Method Summary collapse

Methods included from Shared

#==, #base_length, #coded_offset, #ends_at, #full_length, #human_name, included, #initialize_copy, #inspect, #is?, #negated?, #negative?, #nesting_level=, #offset, #one_of?, #optional?, #parts, #pre_quantifier_decoration, #pretty_print, #pretty_print_instance_variables, #quantified?, #quantifier=, #quantifier_affix, #starts_at, #to_s, #token_class, #type?

Constructor Details

#initialize(*args) ⇒ Quantifier

Returns a new instance of Quantifier.



11
12
13
14
15
16
17
# File 'lib/regexp_parser/expression/quantifier.rb', line 11

def initialize(*args)
  deprecated_old_init(*args) and return if args.count == 4 || args.count == 5

  init_from_token_and_options(*args)
  # TODO: remove in v3.0.0, stop removing parts of #token (?)
  self.token = token.to_s.sub(/_(greedy|possessive|reluctant)/, '').to_sym
end

Instance Method Details

#maxObject



42
43
44
# File 'lib/regexp_parser/expression/quantifier.rb', line 42

def max
  derived_data[:max]
end

#minObject



38
39
40
# File 'lib/regexp_parser/expression/quantifier.rb', line 38

def min
  derived_data[:min]
end

#modeObject



46
47
48
# File 'lib/regexp_parser/expression/quantifier.rb', line 46

def mode
  derived_data[:mode]
end

#to_hObject



19
20
21
22
23
24
25
26
27
# File 'lib/regexp_parser/expression/quantifier.rb', line 19

def to_h
  {
    token: token,
    text:  text,
    mode:  mode,
    min:   min,
    max:   max,
  }
end