Module: Mongoose::Util

Defined in:
lib/mongoose/util.rb

Constant Summary collapse

SINGULAR_TO_PLURAL =
Hash.new { |h, k| h[k] = k.to_s + 's' }
PLURAL_TO_SINGULAR =
Hash.new do |h, k| 
  h[k] =  if md = k.to_s.match(/\A(.*)s\z/)
            md[1]
          else
            raise(ArgumentError, "Please use " +
             "plural_form for this special case")
          end
end
SPECIAL_PLURALIZATION_CASES =
{ "child" => "children", "person" => "people",
"mouse" => "mice" }

Class Method Summary collapse

Class Method Details

.class_case_to_us_case(name) ⇒ Object

converts from things like UserName to things like user_name



32
33
34
# File 'lib/mongoose/util.rb', line 32

def self.class_case_to_us_case(name)
  name.split(/(?=[A-Z])/).map { |s| s.downcase }.join('_')
end

.class_name_for_col(name) ⇒ Object



50
51
52
# File 'lib/mongoose/util.rb', line 50

def self.class_name_for_col(name)
  us_case_to_class_case(name.sub(/_id\z/, ''))
end

.col_name_for_class(name) ⇒ Object



46
47
48
# File 'lib/mongoose/util.rb', line 46

def self.col_name_for_class(name)
  class_case_to_us_case(name) + "_id"
end

.pluralize(name) ⇒ Object

Adds an s



37
38
39
# File 'lib/mongoose/util.rb', line 37

def self.pluralize(name)
  SINGULAR_TO_PLURAL[name]
end

.singularize(name) ⇒ Object

chops an s



42
43
44
# File 'lib/mongoose/util.rb', line 42

def self.singularize(name)
  PLURAL_TO_SINGULAR[name]
end

.us_case_to_class_case(name) ⇒ Object

converts from things like user_name to things like UserName



25
26
27
28
29
# File 'lib/mongoose/util.rb', line 25

def self.us_case_to_class_case(name)
  name.to_s.split(/_/).map do |word|
    word.capitalize
  end.join
end