Class: BetterStruct

Inherits:
Object
  • Object
show all
Includes:
ActiveModel::Validations
Defined in:
lib/better-struct.rb

Class Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(hashish) ⇒ BetterStruct

Returns a new instance of BetterStruct.



8
9
10
11
12
# File 'lib/better-struct.rb', line 8

def initialize(hashish)
  hashish.each do |key, val|
    send(:"#{key}=", val)
  end
end

Class Attribute Details

._optional_paramsObject

Returns the value of attribute _optional_params.



38
39
40
# File 'lib/better-struct.rb', line 38

def _optional_params
  @_optional_params
end

._required_paramsObject

Returns the value of attribute _required_params.



38
39
40
# File 'lib/better-struct.rb', line 38

def _required_params
  @_required_params
end

Class Method Details

.optional_params(*optional_keys) ⇒ Object



31
32
33
34
# File 'lib/better-struct.rb', line 31

def self.optional_params(*optional_keys)
  _optional_params |= Array.wrap(optional_keys)
  optional_keys.each(&method(:attr_accessor))
end

.required_params(*required_keys) ⇒ Object



25
26
27
28
29
# File 'lib/better-struct.rb', line 25

def self.required_params(*required_keys)
  _required_params |= Array.wrap(required_keys)
  required_keys.each(&method(:attr_accessor))
  required_keys.each(&method(:validates_presence_of))
end

Instance Method Details

#to_hObject



14
15
16
17
18
19
20
21
22
23
# File 'lib/better-struct.rb', line 14

def to_h
  {}.tap do |attrs|
    instance_variables.each do |var|
      str = var.to_s.gsub /^@/, ''
      if respond_to? "#{str}="
        attrs[str.to_sym] = instance_variable_get var
      end
    end
  end.compact
end