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)