lib/regexp_parser/expression/classes/group.rb
module Regexp::Expression
module Group
class Base < Regexp::Expression::Subexpression
end
class Passive < Group::Base
attr_writer :implicit
def initialize(*)
@implicit = false
super
end
def implicit?
@implicit
end
end
class Absence < Group::Base; end
class Atomic < Group::Base; end
# TODO: should split off OptionsSwitch in v3.0.0. Maybe even make it no
# longer inherit from Group because it is effectively a terminal expression.
class Options < Group::Base
attr_accessor :option_changes
def initialize_copy(orig)
self.option_changes = orig.option_changes.dup
super
end
def quantify(*args)
if token == :options_switch
raise Regexp::Parser::Error, 'Can not quantify an option switch'
else
super
end
end
end
class Capture < Group::Base
attr_accessor :number, :number_at_level
alias identifier number
end
class Named < Group::Capture
attr_reader :name
alias identifier name
def initialize(token, options = {})
@name = token.text[3..-2]
super
end
def initialize_copy(orig)
@name = orig.name.dup
super
end
end
class Comment < Group::Base
end
end
module Assertion
class Base < Regexp::Expression::Group::Base; end
class Lookahead < Assertion::Base; end
class NegativeLookahead < Assertion::Base; end
class Lookbehind < Assertion::Base; end
class NegativeLookbehind < Assertion::Base; end
end
end