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)
Returns The lowest acceptable repetition count.
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)
Returns The highest possible repetition count.
12 13 14 |
# File 'lib/regex/multiplicity.rb', line 12 def upper_bound @upper_bound end |
Instance Method Details
#to_str ⇒ String
Returns String representation of the multiplicity.
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: '+' } return subresult + policy2suffix[policy] end |