Module: Inflector
Overview
The Inflector transforms words from singular to plural, class names to table names, modularized class names to ones without, and class names to foreign keys.
Instance Method Summary collapse
- #camelize(lower_case_and_underscored_word) ⇒ Object
- #classify(table_name) ⇒ Object
- #constantize(camel_cased_word) ⇒ Object
- #demodulize(class_name_in_module) ⇒ Object
- #foreign_key(class_name, separate_class_name_and_id_with_underscore = true) ⇒ Object
- #humanize(lower_case_and_underscored_word) ⇒ Object
- #pluralize(word) ⇒ Object
- #singularize(word) ⇒ Object
- #tableize(class_name) ⇒ Object
- #underscore(camel_cased_word) ⇒ Object
Instance Method Details
#camelize(lower_case_and_underscored_word) ⇒ Object
28 29 30 |
# File 'lib/inflector.rb', line 28 def camelize(lower_case_and_underscored_word) lower_case_and_underscored_word.to_s.gsub(/\/(.?)/) { "::" + $1.upcase }.gsub(/(^|_)(.)/) { $2.upcase } end |
#classify(table_name) ⇒ Object
48 49 50 |
# File 'lib/inflector.rb', line 48 def classify(table_name) camelize(singularize(table_name)) end |
#constantize(camel_cased_word) ⇒ Object
57 58 59 60 61 |
# File 'lib/inflector.rb', line 57 def constantize(camel_cased_word) camel_cased_word.split("::").inject(Object) do |final_type, part| final_type = final_type.const_get(part) end end |
#demodulize(class_name_in_module) ⇒ Object
40 41 42 |
# File 'lib/inflector.rb', line 40 def demodulize(class_name_in_module) class_name_in_module.to_s.gsub(/^.*::/, '') end |
#foreign_key(class_name, separate_class_name_and_id_with_underscore = true) ⇒ Object
52 53 54 55 |
# File 'lib/inflector.rb', line 52 def foreign_key(class_name, separate_class_name_and_id_with_underscore = true) Inflector.underscore(Inflector.demodulize(class_name)) + (separate_class_name_and_id_with_underscore ? "_id" : "id") end |
#humanize(lower_case_and_underscored_word) ⇒ Object
36 37 38 |
# File 'lib/inflector.rb', line 36 def humanize(lower_case_and_underscored_word) lower_case_and_underscored_word.to_s.gsub(/_/, " ").capitalize end |
#pluralize(word) ⇒ Object
6 7 8 9 10 11 12 13 14 15 |
# File 'lib/inflector.rb', line 6 def pluralize(word) result = word.to_s.dup if uncountable_words.include?(result.downcase) result else plural_rules.each { |(rule, replacement)| break if result.gsub!(rule, replacement) } result end end |
#singularize(word) ⇒ Object
17 18 19 20 21 22 23 24 25 26 |
# File 'lib/inflector.rb', line 17 def singularize(word) result = word.to_s.dup if uncountable_words.include?(result.downcase) result else singular_rules.each { |(rule, replacement)| break if result.gsub!(rule, replacement) } result end end |
#tableize(class_name) ⇒ Object
44 45 46 |
# File 'lib/inflector.rb', line 44 def tableize(class_name) pluralize(underscore(class_name)) end |
#underscore(camel_cased_word) ⇒ Object
32 33 34 |
# File 'lib/inflector.rb', line 32 def underscore(camel_cased_word) camel_cased_word.to_s.gsub(/::/, '/').gsub(/([A-Z]+)([A-Z])/,'\1_\2').gsub(/([a-z\d])([A-Z])/,'\1_\2').downcase end |