Module: Rekkyo::Type::DSLMethods

Defined in:
lib/rekkyo/type/dsl_methods.rb

Instance Method Summary collapse

Instance Method Details

#member(key, value = UNSPECIFIED) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/rekkyo/type/dsl_methods.rb', line 9

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