module Paysafe::Refinements::SnakeCase

Public Instance Methods

to_snake_case(data = self) click to toggle source
# File lib/paysafe/refinements/snake_case.rb, line 6
def to_snake_case(data = self)
  case data
  when Array
    data.map { |value| to_snake_case(value) }
  when Hash
    data.map { |key, value| [underscore_key(key), to_snake_case(value)] }.to_h
  else
    data
  end
end
underscore(string) click to toggle source
# File lib/paysafe/refinements/snake_case.rb, line 30
def underscore(string)
  @__memoize_underscore ||= {}
  return @__memoize_underscore[string] if @__memoize_underscore[string]
  @__memoize_underscore[string] =
    string.gsub(/::/, '/')
          .gsub(/([A-Z\d]+)([A-Z][a-z])/, '\1_\2')
          .gsub(/([a-z\d])([A-Z])/, '\1_\2')
          .tr('-', '_')
          .downcase
  @__memoize_underscore[string]
end
underscore_key(key) click to toggle source
# File lib/paysafe/refinements/snake_case.rb, line 19
def underscore_key(key)
  case key
  when Symbol
    underscore(key.to_s).to_sym
  when String
    underscore(key).to_sym
  else
    key
  end
end