class Regexp::Syntax::Base

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

Public Class Methods

inspect() click to toggle source
# File lib/regexp_parser/syntax/base.rb, line 91
def self.inspect
  "#{super} (feature set of #{ancestors[1].to_s.split('::').last})"
end
new() click to toggle source
# File lib/regexp_parser/syntax/base.rb, line 14
def initialize
  @implements = {}

  implements Token::Literal::Type,   Token::Literal::All
  implements Token::FreeSpace::Type, Token::FreeSpace::All
end

Public Instance Methods

check!(type, token)
Alias for: implements!
check?(type, token)
Alias for: implements?
excludes(type, tokens) click to toggle source
# File lib/regexp_parser/syntax/base.rb, line 33
def excludes(type, tokens)
  implementations(type).subtract(Array(tokens))
end
features() click to toggle source
# File lib/regexp_parser/syntax/base.rb, line 21
def features
  @implements
end
implementations(type) click to toggle source
# File lib/regexp_parser/syntax/base.rb, line 25
def implementations(type)
  @implements[type] ||= Set.new
end
implements(type, tokens) click to toggle source
# File lib/regexp_parser/syntax/base.rb, line 29
def implements(type, tokens)
  implementations(type).merge(Array(tokens))
end
implements!(type, token) click to toggle source
# File lib/regexp_parser/syntax/base.rb, line 42
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 37
def implements?(type, token)
  implementations(type).include?(token)
end
Also aliased as: check?
normalize(type, token) click to toggle source
# File lib/regexp_parser/syntax/base.rb, line 48
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 68
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
normalize_group(type, token) click to toggle source
# File lib/regexp_parser/syntax/base.rb, line 59
def normalize_group(type, token)
  case token
  when :named_ab, :named_sq
    [:group, :named]
  else
    [type, token]
  end
end