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