Method: Inflections.humanize
- Defined in:
- lib/build/ExtendedString.rb
.humanize(lower_case_and_underscored_word, options = {}) ⇒ Object
Tweaks an attribute name for display to end users.
Specifically, humanize performs these transformations:
* Applies human inflection rules to the argument.
* Deletes leading underscores, if any.
* Removes a "_id" suffix if present.
* Replaces underscores with spaces, if any.
* Downcases all words except acronyms.
* Capitalizes the first word.
The capitalization of the first word can be turned off by setting the :capitalize option to false (default is true).
279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 |
# File 'lib/build/ExtendedString.rb', line 279 def humanize(lower_case_and_underscored_word, = {}) result = lower_case_and_underscored_word.to_s.dup inflections.humans.each { |(rule, replacement)| break if result.sub!(rule, replacement) } result.sub!(/\A_+/, '') result.sub!(/_id\z/, '') result.tr!('_', ' ') result.gsub!(/([a-z\d]*)/i) do |match| "#{inflections.acronyms[match] || match.downcase}" end if .fetch(:capitalize, true) result.sub!(/\A\w/) { |match| match.upcase } end result end |