提交 b456877c 编写于 作者: X Xavier Noria

camelize and underscore are sort of inverse of each other, but not in a...

camelize and underscore are sort of inverse of each other, but not in a mathematical sense [#5174 state:resolved]
上级 b72cc472
......@@ -20,6 +20,11 @@ module Inflector
# "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 @@ def camelize(lower_case_and_underscored_word, first_letter_in_uppercase = true)
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+
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册