mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
camelize and underscore are sort of inverse of each other, but not in a mathematical sense [#5174 state:resolved]
This commit is contained in:
parent
b72cc472f7
commit
b456877cfb
2 changed files with 16 additions and 2 deletions
|
@ -20,6 +20,11 @@ module ActiveSupport
|
|||
# "active_record".camelize(:lower) # => "activeRecord"
|
||||
# "active_record/errors".camelize # => "ActiveRecord::Errors"
|
||||
# "active_record/errors".camelize(:lower) # => "activeRecord::Errors"
|
||||
#
|
||||
# As a rule of thumb you can think of +camelize+ as the inverse of +underscore+,
|
||||
# though there are cases where that does not hold:
|
||||
#
|
||||
# "SSLError".underscore.camelize # => "SslError"
|
||||
def camelize(lower_case_and_underscored_word, first_letter_in_uppercase = true)
|
||||
if first_letter_in_uppercase
|
||||
lower_case_and_underscored_word.to_s.gsub(/\/(.?)/) { "::#{$1.upcase}" }.gsub(/(?:^|_)(.)/) { $1.upcase }
|
||||
|
@ -28,13 +33,18 @@ module ActiveSupport
|
|||
end
|
||||
end
|
||||
|
||||
# The reverse of +camelize+. Makes an underscored, lowercase form from the expression in the string.
|
||||
# Makes an underscored, lowercase form from the expression in the string.
|
||||
#
|
||||
# Changes '::' to '/' to convert namespaces to paths.
|
||||
#
|
||||
# Examples:
|
||||
# "ActiveRecord".underscore # => "active_record"
|
||||
# "ActiveRecord::Errors".underscore # => active_record/errors
|
||||
#
|
||||
# As a rule of thumb you can think of +underscore+ as the inverse of +camelize+,
|
||||
# though there are cases where that does not hold:
|
||||
#
|
||||
# "SSLError".underscore.camelize # => "SslError"
|
||||
def underscore(camel_cased_word)
|
||||
word = camel_cased_word.to_s.dup
|
||||
word.gsub!(/::/, '/')
|
||||
|
|
|
@ -1491,13 +1491,15 @@ end
|
|||
|
||||
That may be handy to compute method names in a language that follows that convention, for example JavaScript.
|
||||
|
||||
INFO: As a rule of thumb you can think of +camelize+ as the inverse of +underscore+, though there are cases where that does not hold: <tt>"SSLError".underscore.camelize</tt> gives back <tt>"SslError"</tt>.
|
||||
|
||||
+camelize+ is aliased to +camelcase+.
|
||||
|
||||
NOTE: Defined in +active_support/core_ext/string/inflections.rb+.
|
||||
|
||||
h5. +underscore+
|
||||
|
||||
The method +underscore+ is the inverse of +camelize+, explained above:
|
||||
The method +underscore+ goes the other way around, from camel case to paths:
|
||||
|
||||
<ruby>
|
||||
"Product".underscore # => "product"
|
||||
|
@ -1530,6 +1532,8 @@ def load_missing_constant(from_mod, const_name)
|
|||
end
|
||||
</ruby>
|
||||
|
||||
INFO: As a rule of thumb you can think of +underscore+ as the inverse of +camelize+, though there are cases where that does not hold. For example, <tt>"SSLError".underscore.camelize</tt> gives back <tt>"SslError"</tt>.
|
||||
|
||||
NOTE: Defined in +active_support/core_ext/string/inflections.rb+.
|
||||
|
||||
h5. +titleize+
|
||||
|
|
Loading…
Reference in a new issue