Class: Riveter::Model

Inherits:
Object
  • Object
show all
Defined in:
lib/riveter/models.rb

Overview

Read-only view over a response hash: declared fields become reader methods, unknown fields stay reachable via #raw / #[].

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(raw) ⇒ Model

Returns a new instance of Model.



9
10
11
# File 'lib/riveter/models.rb', line 9

def initialize(raw)
  @raw = raw.is_a?(Hash) ? raw : {}
end

Instance Attribute Details

#rawObject (readonly)

Returns the value of attribute raw.



7
8
9
# File 'lib/riveter/models.rb', line 7

def raw
  @raw
end

Class Method Details

.field(*names) ⇒ Object



25
26
27
28
29
# File 'lib/riveter/models.rb', line 25

def self.field(*names)
  names.each do |name|
    define_method(name) { @raw[name.to_s] }
  end
end

.model_field(name, model_class) ⇒ Object



31
32
33
34
35
36
# File 'lib/riveter/models.rb', line 31

def self.model_field(name, model_class)
  define_method(name) do
    value = @raw[name.to_s]
    value.nil? ? nil : model_class.new(value)
  end
end

Instance Method Details

#[](key) ⇒ Object



13
14
15
# File 'lib/riveter/models.rb', line 13

def [](key)
  @raw[key.to_s]
end

#inspectObject



21
22
23
# File 'lib/riveter/models.rb', line 21

def inspect
  "#<#{self.class.name} #{@raw.inspect}>"
end

#to_hObject



17
18
19
# File 'lib/riveter/models.rb', line 17

def to_h
  @raw
end