class ReeString::Underscore

def call(camel_cased_word, **opts)

def call(camel_cased_word, **opts)
  return camel_cased_word.to_s unless /[A-Z-]|::/.match?(camel_cased_word)
  acronyms = opts[:acronyms] || []
  regex = acronyms_underscore_regex(acronyms)
  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])/) { ($1 || $2) << "_" }
  word.tr!("-", "_")
  word.downcase!
  word
end