Module: Buff::Extensions::String::Inflections

Included in:
String
Defined in:
lib/buff/extensions/string/inflections.rb

Instance Method Summary collapse

Instance Method Details

#underscoreObject


4
5
6
7
8
9
10
11
12
13
# File 'lib/buff/extensions/string/inflections.rb', line 4

def underscore
  word = self.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