class Regexp::Syntax::Base

A lookup map of supported types and tokens in a given syntax

def self.inspect

def self.inspect
  "#{super} (feature set of #{ancestors[1].to_s.split('::').last})"
end

def excludes(type, tokens)

def excludes(type, tokens)
  implementations(type).subtract(Array(tokens))
end

def features

def features
  @implements
end

def implementations(type)

def implementations(type)
  @implements[type] ||= Set.new
end

def implements(type, tokens)

def implements(type, tokens)
  implementations(type).merge(Array(tokens))
end

def implements!(type, token)

def implements!(type, token)
  raise NotImplementedError.new(self, type, token) unless
    implements?(type, token)
end

def implements?(type, token)

def implements?(type, token)
  implementations(type).include?(token)
end

def initialize

def initialize
  @implements = {}
  implements Token::Literal::Type,   Token::Literal::All
  implements Token::FreeSpace::Type, Token::FreeSpace::All
end

def normalize(type, token)

def normalize(type, token)
  case type
  when :group
    normalize_group(type, token)
  when :backref
    normalize_backref(type, token)
  else
    [type, token]
  end
end

def normalize_backref(type, token)

def normalize_backref(type, token)
  case token
  when :name_ref_ab, :name_ref_sq
    [:backref, :name_ref]
  when :name_call_ab, :name_call_sq
    [:backref, :name_call]
  when :name_recursion_ref_ab, :name_recursion_ref_sq
    [:backref, :name_recursion_ref]
  when :number_ref_ab, :number_ref_sq
    [:backref, :number_ref]
  when :number_call_ab, :number_call_sq
    [:backref, :number_call]
  when :number_rel_ref_ab, :number_rel_ref_sq
    [:backref, :number_rel_ref]
  when :number_rel_call_ab, :number_rel_call_sq
    [:backref, :number_rel_call]
  when :number_recursion_ref_ab, :number_recursion_ref_sq
    [:backref, :number_recursion_ref]
  else
    [type, token]
  end
end

def normalize_group(type, token)

def normalize_group(type, token)
  case token
  when :named_ab, :named_sq
    [:group, :named]
  else
    [type, token]
  end
end