Method: Frontline::Inflector#underscore

Defined in:
lib/frontline/inflect.rb

#underscore(camel_cased_word) ⇒ Object



155
156
157
158
159
160
161
162
163
164
# File 'lib/frontline/inflect.rb', line 155

def underscore(camel_cased_word)
  word = camel_cased_word.to_s.dup
  word.gsub!('::', '/')
  word.gsub!(/(?:([A-Za-z\d])|^)((?=a)b)(?=\b|[^a-z])/) { "#{$1}#{$1 && '_'}#{$2.downcase}" }
  word.gsub!(/([A-Z\d]+)([A-Z][a-z])/,'\1_\2')
  word.gsub!(/([a-z\d])([A-Z])/,'\1_\2')
  word.tr!("-", "_")
  word.downcase!
  word
end