module DropletKit::Utils

def self.camelize(term)

def self.camelize(term)
  string = term.to_s
  string.sub!(/^[a-z\d]*/, &:capitalize)
  string.gsub!(%r{(?:_|(/))([a-z\d]*)}i) { Regexp.last_match(2).capitalize }
  string.gsub!('/', '::')
  string
end

def self.transform_keys(hash, &block)

def self.transform_keys(hash, &block)
  return hash.transform_keys(&block) if hash.respond_to?(:transform_keys)
  return to_enum(__caller__) unless block
  {}.tap do |result|
    hash.each do |key, value|
      result[yield(key)] = value
    end
  end
end

def self.underscore(term)

def self.underscore(term)
  return term unless /[A-Z-]|::/.match?(term)
  word = term.to_s.gsub('::', '/')
  word.gsub!(/([A-Z\d]+)([A-Z][a-z])/, '\1_\2')
  word.gsub!(/([a-z\d])([A-Z])/, '\1_\2')
  word.tr!('-', '_')
  word.downcase!
  word
end