module QuestradeApi module Util private def hash_to_snakecase(hash) values = hash.map do |k, v| [underscore(k.to_s).to_sym, v] end Hash[values] end def underscore(camel_cased_word) camel_cased_word .gsub(/::/, '/') .gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2') .gsub(/([a-z\d])([A-Z])/, '\1_\2') .tr('-', '_') .downcase end end end