class Regexp::Syntax::Base
A lookup map of supported types and tokens in a given syntax
Attributes
features[RW]
Public Class Methods
added_features()
click to toggle source
# File lib/regexp_parser/syntax/base.rb, line 46 def added_features @added_features ||= {} end
excludes(type, tokens)
click to toggle source
# File lib/regexp_parser/syntax/base.rb, line 26 def excludes(type, tokens) tokens.each { |tok| features[type].delete(tok) } removed_features[type] = tokens end
implementations(type)
click to toggle source
# File lib/regexp_parser/syntax/base.rb, line 36 def implementations(type) features[type] || [] end
implements(type, tokens)
click to toggle source
# File lib/regexp_parser/syntax/base.rb, line 21 def implements(type, tokens) (features[type] ||= []).concat(tokens) added_features[type] = tokens end
implements!(type, token)
click to toggle source
# File lib/regexp_parser/syntax/base.rb, line 40 def implements!(type, token) raise NotImplementedError.new(self, type, token) unless implements?(type, token) end
Also aliased as: check!
implements?(type, token)
click to toggle source
# File lib/regexp_parser/syntax/base.rb, line 31 def implements?(type, token) implementations(type).include?(token) end
Also aliased as: check?
inherited(subclass)
click to toggle source
automatically inherit features through the syntax class hierarchy
Calls superclass method
# File lib/regexp_parser/syntax/base.rb, line 16 def inherited(subclass) super subclass.features = features.to_h.map { |k, v| [k, v.dup] }.to_h end
new()
click to toggle source
TODO: drop this backwards compatibility code in v3.0.0, do ‘private :new`
# File lib/regexp_parser/syntax/base.rb, line 99 def initialize warn 'Using instances of Regexp::Parser::Syntax is deprecated ' \ "and will no longer be supported in v3.0.0." end
normalize(type, token)
click to toggle source
# File lib/regexp_parser/syntax/base.rb, line 54 def normalize(type, token) case type when :group normalize_group(type, token) when :backref normalize_backref(type, token) else [type, token] end end
normalize_backref(type, token)
click to toggle source
# File lib/regexp_parser/syntax/base.rb, line 74 def normalize_backref(type, token) case token when :name_ref_ab, :name_ref_sq %i[backref name_ref] when :name_call_ab, :name_call_sq %i[backref name_call] when :name_recursion_ref_ab, :name_recursion_ref_sq %i[backref name_recursion_ref] when :number_ref_ab, :number_ref_sq %i[backref number_ref] when :number_call_ab, :number_call_sq %i[backref number_call] when :number_rel_ref_ab, :number_rel_ref_sq %i[backref number_rel_ref] when :number_rel_call_ab, :number_rel_call_sq %i[backref number_rel_call] when :number_recursion_ref_ab, :number_recursion_ref_sq %i[backref number_recursion_ref] else [type, token] end end
normalize_group(type, token)
click to toggle source
# File lib/regexp_parser/syntax/base.rb, line 65 def normalize_group(type, token) case token when :named_ab, :named_sq %i[group named] else [type, token] end end
removed_features()
click to toggle source
# File lib/regexp_parser/syntax/base.rb, line 50 def removed_features @removed_features ||= {} end
Public Instance Methods
method_missing(name, *args)
click to toggle source
Calls superclass method
# File lib/regexp_parser/syntax/base.rb, line 104 def method_missing(name, *args) if self.class.respond_to?(name) warn 'Using instances of Regexp::Parser::Syntax is deprecated ' \ "and will no longer be supported in v3.0.0. Please call "\ "methods on the class directly, e.g.: #{self.class}.#{name}" self.class.send(name, *args) else super end end
respond_to_missing?(name, include_private = false)
click to toggle source
Calls superclass method
# File lib/regexp_parser/syntax/base.rb, line 115 def respond_to_missing?(name, include_private = false) self.class.respond_to?(name) || super end