Module: LetMeSendEmail::Models

Defined in:
lib/letmesendemail/models.rb

Overview

Plain-data wrappers for API responses.

Defined Under Namespace

Classes: Model

Class Method Summary collapse

Class Method Details

.unwrap(value) ⇒ Object

Recursively converts models into plain mutable Ruby data.

Parameters:

  • value (Object)

Returns:

  • (Object)


90
91
92
93
94
95
96
97
# File 'lib/letmesendemail/models.rb', line 90

def unwrap(value)
  return value.dup if value.is_a?(String)
  return value.to_h if value.is_a?(Model)
  return value.to_h { |key, item| [key.dup, unwrap(item)] } if value.is_a?(Hash)
  return value.map { |item| unwrap(item) } if value.is_a?(Array)

  value
end

.wrap(value) ⇒ Object

Recursively wraps hashes returned by the API.

Parameters:

  • value (Object)

Returns:

  • (Object)


79
80
81
82
83
84
85
# File 'lib/letmesendemail/models.rb', line 79

def wrap(value)
  return value.dup.freeze if value.is_a?(String)
  return Model.new(value) if value.is_a?(Hash)
  return value.map { |item| wrap(item) }.freeze if value.is_a?(Array)

  value
end