class NamedStruct::Config

Attributes

members[R]

Public Class Methods

attr_required(*keys) click to toggle source
# File lib/named_struct/config.rb, line 6
def attr_required(*keys)
  @members = keys
  @members.freeze
  attr_reader(*@members)
end
new(*positional_args, **args) click to toggle source
# 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
    missing_keys = required_keys - keys
    raise(ArgumentError, "missing keyword: %s"%missing_keys.join(', '))
  end
  args.each{|k, v| instance_variable_set("@#{k}".to_sym, v)}
end

Public Instance Methods

to_h() click to toggle source
# File lib/named_struct/config.rb, line 33
def to_h
  self.class.members.map{|k| [k, public_send(k)] }.to_h
end