lib/active_support/inflector.rb in activesupport-1.2.5 vs lib/active_support/inflector.rb in activesupport-1.3.0

- old
+ new

@@ -107,21 +107,33 @@ inflections.singulars.each { |(rule, replacement)| break if result.gsub!(rule, replacement) } result end end - def camelize(lower_case_and_underscored_word) - lower_case_and_underscored_word.to_s.gsub(/\/(.?)/) { "::" + $1.upcase }.gsub(/(^|_)(.)/) { $2.upcase } + 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(/(^|_)(.)/) { $2.upcase } + else + lower_case_and_underscored_word.first + camelize(lower_case_and_underscored_word)[1..-1] + end end def titleize(word) humanize(underscore(word)).gsub(/\b([a-z])/) { $1.capitalize } end def underscore(camel_cased_word) - camel_cased_word.to_s.gsub(/::/, '/').gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').gsub(/([a-z\d])([A-Z])/,'\1_\2').downcase + camel_cased_word.to_s.gsub(/::/, '/'). + gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2'). + gsub(/([a-z\d])([A-Z])/,'\1_\2'). + tr("-", "_"). + downcase end + + def dasherize(underscored_word) + underscored_word.gsub(/_/, '-') + end def humanize(lower_case_and_underscored_word) lower_case_and_underscored_word.to_s.gsub(/_id$/, "").gsub(/_/, " ").capitalize end @@ -141,12 +153,12 @@ underscore(demodulize(class_name)) + (separate_class_name_and_id_with_underscore ? "_id" : "id") end def constantize(camel_cased_word) raise NameError, "#{camel_cased_word.inspect} is not a valid constant name!" unless - camel_cased_word.split("::").all? { |part| /^[A-Z]\w*$/ =~ part } + /^(::)?([A-Z]\w*)(::[A-Z]\w*)*$/ =~ camel_cased_word - camel_cased_word = "::#{camel_cased_word}" unless camel_cased_word[0, 2] == '::' + camel_cased_word = "::#{camel_cased_word}" unless $1 Object.module_eval(camel_cased_word, __FILE__, __LINE__) end def ordinalize(number) if (11..13).include?(number.to_i % 100)