Class: Regex::Multiplicity
- Inherits:
-
Object
- Object
- Regex::Multiplicity
- Defined in:
- lib/regex/multiplicity.rb
Overview
The multiplicity specifies by how much a given expression can be repeated.
Instance Attribute Summary collapse
-
#lower_bound ⇒ Integer
readonly
The lowest acceptable repetition count.
-
#policy ⇒ Symbol
An indicator that specifies how to repeat.
-
#upper_bound ⇒ Integer, Symbol
readonly
The highest possible repetition count.
Instance Method Summary collapse
-
#initialize(aLowerBound, anUpperBound, aPolicy) ⇒ Multiplicity
constructor
A new instance of Multiplicity.
-
#to_str ⇒ String
String representation of the multiplicity.
Constructor Details
#initialize(aLowerBound, anUpperBound, aPolicy) ⇒ Multiplicity
Returns a new instance of Multiplicity.
24 25 26 27 28 |
# File 'lib/regex/multiplicity.rb', line 24 def initialize(aLowerBound, anUpperBound, aPolicy) @lower_bound = valid_lower_bound(aLowerBound) @upper_bound = valid_upper_bound(anUpperBound) @policy = valid_policy(aPolicy) end |
Instance Attribute Details
#lower_bound ⇒ Integer (readonly)
9 10 11 |
# File 'lib/regex/multiplicity.rb', line 9 def lower_bound @lower_bound end |
#policy ⇒ Symbol
Returns An indicator that specifies how to repeat.
16 17 18 |
# File 'lib/regex/multiplicity.rb', line 16 def policy @policy end |
#upper_bound ⇒ Integer, Symbol (readonly)
12 13 14 |
# File 'lib/regex/multiplicity.rb', line 12 def upper_bound @upper_bound end |
Instance Method Details
#to_str ⇒ String
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/regex/multiplicity.rb', line 31 def to_str case upper_bound when :more case lower_bound when 0 subresult = '*' when 1 subresult = '+' else subresult = "{#{lower_bound},}" end when lower_bound subresult = "{#{lower_bound}}" else if [lower_bound, upper_bound] == [0, 1] subresult = '?' else subresult = "{#{lower_bound},#{upper_bound}}" end end policy2suffix = { greedy: '', lazy: '?', possessive: '+' } subresult + policy2suffix[policy] end |