Module: ActiveSupport::CoreExtensions::String::Inflections
- Included in:
- String
- Defined in:
- lib/active_support/core_ext/string/inflections.rb
Overview
String inflections define new methods on the String class to transform names for different purposes. For instance, you can figure out the name of a database from the name of a class.
"ScaleScore".tableize # => "scale_scores"
Instance Method Summary collapse
-
#camelize(first_letter = :upper) ⇒ Object
(also: #camelcase)
By default,
camelize
converts strings to UpperCamelCase. -
#classify ⇒ Object
Create a class name from a plural table name like Rails does for table names to models.
-
#constantize ⇒ Object
constantize
tries to find a declared constant with the name specified in the string. -
#dasherize ⇒ Object
Replaces underscores with dashes in the string.
-
#demodulize ⇒ Object
Removes the module part from the constant expression in the string.
-
#foreign_key(separate_class_name_and_id_with_underscore = true) ⇒ Object
Creates a foreign key name from a class name.
-
#humanize ⇒ Object
Capitalizes the first word, turns underscores into spaces, and strips ‘_id’.
-
#parameterize(sep = '-') ⇒ Object
Replaces special characters in a string so that it may be used as part of a ‘pretty’ URL.
-
#pluralize ⇒ Object
Returns the plural form of the word in the string.
-
#singularize ⇒ Object
The reverse of
pluralize
, returns the singular form of a word in a string. -
#tableize ⇒ Object
Creates the name of a table like Rails does for models to table names.
-
#titleize ⇒ Object
(also: #titlecase)
Capitalizes all the words and replaces some characters in the string to create a nicer looking title.
-
#underscore ⇒ Object
The reverse of
camelize
.
Instance Method Details
#camelize(first_letter = :upper) ⇒ Object Also known as: camelcase
By default, camelize
converts strings to UpperCamelCase. If the argument to camelize is set to :lower
then camelize produces lowerCamelCase.
camelize
will also convert ‘/’ to ‘::’ which is useful for converting paths to namespaces.
"active_record".camelize # => "ActiveRecord"
"active_record".camelize(:lower) # => "activeRecord"
"active_record/errors".camelize # => "ActiveRecord::Errors"
"active_record/errors".camelize(:lower) # => "activeRecord::Errors"
44 45 46 47 48 49 |
# File 'lib/active_support/core_ext/string/inflections.rb', line 44 def camelize(first_letter = :upper) case first_letter when :upper then Inflector.camelize(self, true) when :lower then Inflector.camelize(self, false) end end |
#classify ⇒ Object
Create a class name from a plural table name like Rails does for table names to models. Note that this returns a string and not a class. (To convert to an actual class follow classify
with constantize
.)
"egg_and_hams".classify # => "EggAndHam"
"posts".classify # => "Post"
Singular names are not handled correctly.
"business".classify # => "Busines"
129 130 131 |
# File 'lib/active_support/core_ext/string/inflections.rb', line 129 def classify Inflector.classify(self) end |
#constantize ⇒ Object
constantize
tries to find a declared constant with the name specified in the string. It raises a NameError when the name is not in CamelCase or is not initialized.
Examples
"Module".constantize # => Module
"Class".constantize # => Class
161 162 163 |
# File 'lib/active_support/core_ext/string/inflections.rb', line 161 def constantize Inflector.constantize(self) end |
#dasherize ⇒ Object
Replaces underscores with dashes in the string.
"puni_puni" # => "puni-puni"
78 79 80 |
# File 'lib/active_support/core_ext/string/inflections.rb', line 78 def dasherize Inflector.dasherize(self) end |
#demodulize ⇒ Object
Removes the module part from the constant expression in the string.
"ActiveRecord::CoreExtensions::String::Inflections".demodulize # => "Inflections"
"Inflections".demodulize # => "Inflections"
86 87 88 |
# File 'lib/active_support/core_ext/string/inflections.rb', line 86 def demodulize Inflector.demodulize(self) end |
#foreign_key(separate_class_name_and_id_with_underscore = true) ⇒ Object
Creates a foreign key name from a class name. separate_class_name_and_id_with_underscore
sets whether the method should put ‘_’ between the name and ‘id’.
Examples
"Message".foreign_key # => "message_id"
"Message".foreign_key(false) # => "messageid"
"Admin::Post".foreign_key # => "post_id"
150 151 152 |
# File 'lib/active_support/core_ext/string/inflections.rb', line 150 def foreign_key(separate_class_name_and_id_with_underscore = true) Inflector.foreign_key(self, separate_class_name_and_id_with_underscore) end |
#humanize ⇒ Object
Capitalizes the first word, turns underscores into spaces, and strips ‘_id’. Like titleize
, this is meant for creating pretty output.
"employee_salary" # => "Employee salary"
"author_id" # => "Author"
138 139 140 |
# File 'lib/active_support/core_ext/string/inflections.rb', line 138 def humanize Inflector.humanize(self) end |
#parameterize(sep = '-') ⇒ Object
Replaces special characters in a string so that it may be used as part of a ‘pretty’ URL.
Examples
class Person
def to_param
"#{id}-#{name.parameterize}"
end
end
@person = Person.find(1)
# => #<Person id: 1, name: "Donald E. Knuth">
<%= link_to(@person.name, person_path %>
# => <a href="/person/1-donald-e-knuth">Donald E. Knuth</a>
105 106 107 |
# File 'lib/active_support/core_ext/string/inflections.rb', line 105 def parameterize(sep = '-') Inflector.parameterize(self, sep) end |
#pluralize ⇒ Object
Returns the plural form of the word in the string.
"post".pluralize # => "posts"
"octopus".pluralize # => "octopi"
"sheep".pluralize # => "sheep"
"words".pluralize # => "words"
"the blue mailman".pluralize # => "the blue mailmen"
"CamelOctopus".pluralize # => "CamelOctopi"
19 20 21 |
# File 'lib/active_support/core_ext/string/inflections.rb', line 19 def pluralize Inflector.pluralize(self) end |
#singularize ⇒ Object
The reverse of pluralize
, returns the singular form of a word in a string.
"posts".singularize # => "post"
"octopi".singularize # => "octopus"
"sheep".singularize # => "sheep"
"word".singularize # => "word"
"the blue mailmen".singularize # => "the blue mailman"
"CamelOctopi".singularize # => "CamelOctopus"
31 32 33 |
# File 'lib/active_support/core_ext/string/inflections.rb', line 31 def singularize Inflector.singularize(self) end |
#tableize ⇒ Object
Creates the name of a table like Rails does for models to table names. This method uses the pluralize
method on the last word in the string.
"RawScaledScorer".tableize # => "raw_scaled_scorers"
"egg_and_ham".tableize # => "egg_and_hams"
"fancyCategory".tableize # => "fancy_categories"
115 116 117 |
# File 'lib/active_support/core_ext/string/inflections.rb', line 115 def tableize Inflector.tableize(self) end |
#titleize ⇒ Object Also known as: titlecase
Capitalizes all the words and replaces some characters in the string to create a nicer looking title. titleize
is meant for creating pretty output. It is not used in the Rails internals.
titleize
is also aliased as titlecase
.
"man from the boondocks".titleize # => "Man From The Boondocks"
"x-men: the last stand".titleize # => "X Men: The Last Stand"
60 61 62 |
# File 'lib/active_support/core_ext/string/inflections.rb', line 60 def titleize Inflector.titleize(self) end |
#underscore ⇒ Object
The reverse of camelize
. Makes an underscored, lowercase form from the expression in the string.
underscore
will also change ‘::’ to ‘/’ to convert namespaces to paths.
"ActiveRecord".underscore # => "active_record"
"ActiveRecord::Errors".underscore # => active_record/errors
71 72 73 |
# File 'lib/active_support/core_ext/string/inflections.rb', line 71 def underscore Inflector.underscore(self) end |