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, options = {})
  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 options.fetch(:capitalize, true)
    result.sub!(/\A\w/) { |match| match.upcase }
  end

  result
end