Class: NamedStruct::Config

Inherits:
Object
  • Object
show all
Defined in:
lib/named_struct/config.rb

Class Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(*positional_args, **args) ⇒ Config

Returns a new instance of Config.



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/named_struct/config.rb', line 16

def initialize(*positional_args, **args)
  if !positional_args.empty?
    raise ArgumentError, "wrong arguments accepts only keyword arguments"
  end
  keys = args.keys
  required_keys = self.class.members
  if keys.sort != required_keys.sort
    if keys.size > required_keys.size
      raise(ArgumentError, "wrong number of arguments (%d for %d)"%
            [keys.size, required_keys.size])
    end
    mising_keys = required_keys - keys
    raise(ArgumentError, "missing keyword: %s"%mising_keys.join(', '))
  end
  args.each{|k, v| instance_variable_set("@#{k}".to_sym, v)}
end

Class Attribute Details

.membersObject (readonly)

Returns the value of attribute members.



5
6
7
# File 'lib/named_struct/config.rb', line 5

def members
  @members
end

Class Method Details

.attr_required(*keys) ⇒ Object



6
7
8
9
10
# File 'lib/named_struct/config.rb', line 6

def attr_required(*keys)
  @members = keys
  @members.freeze
  attr_reader(*@members)
end