module SmartEnum::Utilities

Public Class Methods

camelize(string) click to toggle source

Convert snake case string to camelcase string. Adapted from github.com/jeremyevans/sequel/blob/5.10.0/lib/sequel/model/inflections.rb#L103

# File lib/smart_enum/utilities.rb, line 36
def self.camelize(string)
  string.to_s
    .gsub(/\/(.?)/){|x| "::#{x[-1..-1].upcase unless x == '/'}"}
    .gsub(/(^|_)(.)/){|x| x[-1..-1].upcase}
end
classify(string) click to toggle source
# File lib/smart_enum/utilities.rb, line 30
def self.classify(string)
  singularize(camelize(string))
end
constantize(string) click to toggle source
# File lib/smart_enum/utilities.rb, line 14
def self.constantize(string)
  Object.const_get(string)
end
foreign_key(string) click to toggle source
# File lib/smart_enum/utilities.rb, line 18
def self.foreign_key(string)
  singularize(tableize(string)) + "_id"
end
singularize(string) click to toggle source
# File lib/smart_enum/utilities.rb, line 22
def self.singularize(string)
  string.to_s.chomp("s")
end
symbolize_hash_keys(original_hash) click to toggle source
# File lib/smart_enum/utilities.rb, line 5
def self.symbolize_hash_keys(original_hash)
  return original_hash if original_hash.each_key.all?{|key| Symbol === key }
  symbolized_hash = {}
  original_hash.each_key do |key|
    symbolized_hash[key.to_sym] = original_hash[key]
  end
  symbolized_hash
end
tableize(string) click to toggle source
# File lib/smart_enum/utilities.rb, line 26
def self.tableize(string)
  underscore(string) + "s"
end
underscore(string) click to toggle source

Adapted from github.com/jeremyevans/sequel/blob/5.10.0/lib/sequel/model/inflections.rb#L147-L148

# File lib/smart_enum/utilities.rb, line 44
def self.underscore(string)
  string
    .to_s
    .gsub(/::/, '/')
    .gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2')
    .gsub(/([a-z\d])([A-Z])/,'\1_\2')
    .tr("-", "_")
    .downcase
end