Class: String

Inherits:
Object
  • Object
show all
Defined in:
lib/hiiro.rb

Instance Method Summary collapse

Instance Method Details

#underscore(camel_cased_word = self) ⇒ Object



51
52
53
54
55
56
57
58
59
60
# File 'lib/hiiro.rb', line 51

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