Class: DataClass::Definition

Inherits:
Object
  • Object
show all
Defined in:
lib/data_class/definition.rb

Overview

An internal class for providing validation of ‘Data.define` and its initializer.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(attribute_names) ⇒ Definition

Returns a new instance of Definition.

Parameters:

  • attribute_names (Array<Symbol>)


9
10
11
12
# File 'lib/data_class/definition.rb', line 9

def initialize(attribute_names)
  validate_attribute_names(attribute_names)
  @attribute_names = attribute_names.each { |key| validate_attribute_name(key) }
end

Instance Attribute Details

#attribute_namesObject (readonly)

Returns the value of attribute attribute_names.



13
14
15
# File 'lib/data_class/definition.rb', line 13

def attribute_names
  @attribute_names
end

Instance Method Details

#validate(kwargs) ⇒ Object

Parameters:

  • kwargs (Hash<Symbol, Object>)


16
17
18
19
20
21
22
23
24
25
26
# File 'lib/data_class/definition.rb', line 16

def validate(kwargs)
  if attribute_names - kwargs.keys != []
    raise ArgumentError, "missing keyword: #{(attribute_names - kwargs.keys).join(', ')}"
  end

  if kwargs.keys - attribute_names != []
    raise ArgumentError, "unknown keyword: #{(kwargs.keys - attribute_names).join(', ')}"
  end

  nil
end