class Regexp::Expression::Sequence
A sequence of expressions. Differs from a Subexpressions by how it handles quantifiers, as it applies them to its last element instead of itself as a whole subexpression.
Used as the base class for the Alternation
alternatives, Conditional
branches, and CharacterSet::Intersection
intersected sequences.
Public Class Methods
add_to(subexpression, params = {}, active_opts = {})
click to toggle source
# File lib/regexp_parser/expression/sequence.rb, line 11 def add_to(subexpression, params = {}, active_opts = {}) sequence = at_levels( subexpression.level, subexpression.set_level, params[:conditional_level] || subexpression.conditional_level ) sequence.nesting_level = subexpression.nesting_level + 1 sequence.options = active_opts subexpression.expressions << sequence sequence end
at_levels(level, set_level, conditional_level)
click to toggle source
# File lib/regexp_parser/expression/sequence.rb, line 23 def at_levels(level, set_level, conditional_level) token = Regexp::Token.new( :expression, :sequence, '', nil, # ts nil, # te level, set_level, conditional_level ) new(token) end
Public Instance Methods
quantify(token, text, min = nil, max = nil, mode = :greedy)
click to toggle source
# File lib/regexp_parser/expression/sequence.rb, line 43 def quantify(token, text, min = nil, max = nil, mode = :greedy) target = expressions.reverse.find { |exp| !exp.is_a?(FreeSpace) } target or raise Regexp::Parser::Error, "No valid target found for '#{text}' quantifier" target.quantify(token, text, min, max, mode) end
starts_at()
click to toggle source
# File lib/regexp_parser/expression/sequence.rb, line 38 def starts_at expressions.first.starts_at end
Also aliased as: ts