module Rekkyo::Type::ClassMethods

Constants

UNSPECIFIED

Public Instance Methods

all() click to toggle source
# File lib/rekkyo/type.rb, line 36
def all
  @members.dup
end
Also aliased as: members
member(key, value = UNSPECIFIED) click to toggle source
# File lib/rekkyo/type.rb, line 19
def member(key, value = UNSPECIFIED)
  value = key if value == UNSPECIFIED
  key = key.upcase.to_sym

  validate_member(key, value)

  self::Member.new(key, value).freeze.tap do |m|
    @members << m

    self.const_set(key, m)

    self::Member.class_exec do
      define_method(:"#{key.downcase}?") { self.match?(m) }
    end
  end
end
members()
Alias for: all

Private Instance Methods

validate_member(key, value) click to toggle source
# File lib/rekkyo/type.rb, line 44
def validate_member(key, value)
  raise DuplicateMemberError if self.const_defined?(key, false) ||
                                @members.any? { |m| m.match? value }
end