aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib/active_support/inflector/methods.rb
diff options
context:
space:
mode:
Diffstat (limited to 'activesupport/lib/active_support/inflector/methods.rb')
-rw-r--r--activesupport/lib/active_support/inflector/methods.rb32
1 files changed, 24 insertions, 8 deletions
diff --git a/activesupport/lib/active_support/inflector/methods.rb b/activesupport/lib/active_support/inflector/methods.rb
index 423b5abd20..e1aba44813 100644
--- a/activesupport/lib/active_support/inflector/methods.rb
+++ b/activesupport/lib/active_support/inflector/methods.rb
@@ -21,7 +21,8 @@ module ActiveSupport
# "words".pluralize # => "words"
# "CamelOctopus".pluralize # => "CamelOctopi"
def pluralize(word)
- result = word.to_s.dup
+ word = deprecate_symbol(word)
+ result = word.to_str.dup
if word.empty? || inflections.uncountables.include?(result.downcase)
result
@@ -40,7 +41,8 @@ module ActiveSupport
# "word".singularize # => "word"
# "CamelOctopi".singularize # => "CamelOctopus"
def singularize(word)
- result = word.to_s.dup
+ word = deprecate_symbol(word)
+ result = word.to_str.dup
if inflections.uncountables.any? { |inflection| result =~ /\b(#{inflection})\Z/i }
result
@@ -66,7 +68,8 @@ module ActiveSupport
#
# "SSLError".underscore.camelize # => "SslError"
def camelize(term, uppercase_first_letter = true)
- string = term.to_s
+ term = deprecate_symbol(term)
+ string = term.to_str
if uppercase_first_letter
string = string.sub(/^[a-z\d]*/) { inflections.acronyms[$&] || $&.capitalize }
else
@@ -88,7 +91,8 @@ module ActiveSupport
#
# "SSLError".underscore.camelize # => "SslError"
def underscore(camel_cased_word)
- word = camel_cased_word.to_s.dup
+ camel_cased_word = deprecate_symbol(camel_cased_word)
+ word = camel_cased_word.to_str.dup
word.gsub!(/::/, '/')
word.gsub!(/(?:([A-Za-z\d])|^)(#{inflections.acronym_regex})(?=\b|[^a-z])/) { "#{$1}#{$1 && '_'}#{$2.downcase}" }
word.gsub!(/([A-Z\d]+)([A-Z][a-z])/,'\1_\2')
@@ -105,7 +109,8 @@ module ActiveSupport
# "employee_salary" # => "Employee salary"
# "author_id" # => "Author"
def humanize(lower_case_and_underscored_word)
- result = lower_case_and_underscored_word.to_s.dup
+ lower_case_and_underscored_word = deprecate_symbol(lower_case_and_underscored_word)
+ result = lower_case_and_underscored_word.to_str.dup
inflections.humans.each { |(rule, replacement)| break if result.gsub!(rule, replacement) }
result.gsub!(/_id$/, "")
result.gsub(/(_)?([a-z\d]*)/i) { "#{$1 && ' '}#{inflections.acronyms[$2] || $2.downcase}" }.gsub(/^\w/) { $&.upcase }
@@ -148,8 +153,9 @@ module ActiveSupport
# Singular names are not handled correctly:
# "business".classify # => "Busines"
def classify(table_name)
+ table_name = deprecate_symbol(table_name)
# strip out any leading schema name
- camelize(singularize(table_name.to_s.sub(/.*\./, '')))
+ camelize(singularize(table_name.to_str.sub(/.*\./, '')))
end
# Replaces underscores with dashes in the string.
@@ -157,7 +163,8 @@ module ActiveSupport
# Example:
# "puni_puni" # => "puni-puni"
def dasherize(underscored_word)
- underscored_word.gsub(/_/, '-')
+ underscored_word = deprecate_symbol(underscored_word)
+ underscored_word.to_str.gsub(/_/, '-')
end
# Removes the module part from the expression in the string.
@@ -166,7 +173,8 @@ module ActiveSupport
# "ActiveRecord::CoreExtensions::String::Inflections".demodulize # => "Inflections"
# "Inflections".demodulize # => "Inflections"
def demodulize(class_name_in_module)
- class_name_in_module.to_s.gsub(/^.*::/, '')
+ class_name_in_module = deprecate_symbol(class_name_in_module)
+ class_name_in_module.to_str.gsub(/^.*::/, '')
end
# Creates a foreign key name from a class name.
@@ -246,5 +254,13 @@ module ActiveSupport
end
end
end
+
+ def deprecate_symbol(symbol)
+ if symbol.is_a?(Symbol)
+ symbol = symbol.to_s
+ ActiveSupport::Deprecation.warn("Using symbols in inflections is deprecated. Please use to_s to have a string.")
+ end
+ symbol
+ end
end
end