class Monobank::Resources::Base

Attributes

attributes[R]

Public Class Methods

define_fields(attributes) click to toggle source
# File lib/monobank/resources/base.rb, line 4
def self.define_fields(attributes)
  attributes.each do |attribute|
    define_method(attribute) { instance_variable_get("@attributes")[attribute] }
  end
end
new(attributes) click to toggle source
# File lib/monobank/resources/base.rb, line 10
def initialize(attributes)
  @attributes = {}
  snake_case_attributes = deep_snake_case(attributes)
  snake_case_attributes.each { |key, value| @attributes[method_name(key)] = value }
end

Public Instance Methods

deep_snake_case(hash) click to toggle source
# File lib/monobank/resources/base.rb, line 20
def deep_snake_case(hash)
  return hash unless hash.is_a?(Array) || hash.is_a?(Hash)

  hash.each_with_object({}) do |(key, value), object|
    object[method_name(key)] =
      if value.is_a? Hash
        deep_snake_case(value)
      elsif value.is_a? Array
        value.map { |element| deep_snake_case(element) }
      else
        value
      end
  end
end
method_name(key) click to toggle source
# File lib/monobank/resources/base.rb, line 16
def method_name(key)
  key.gsub(/(.)([A-Z])/,'\1_\2').downcase
end