class ReeString::Camelize

def call(str, **opts)

def call(str, **opts)
  str = str.dup
  uppercase_first_letter = opts.has_key?(:uppercase_first_letter) ? opts[:uppercase_first_letter] : true
  acronyms = opts[:acronyms] || {}
  regex = acronyms_camelize_regex(acronyms.values)
  if !uppercase_first_letter
    str = str.sub(regex) { |match| match.downcase! || match }
  else
    str = str.sub(/^[a-z\d]*/) { |match| acronyms[match] || match.capitalize! || match }
  end
  str.gsub!(/(?:_|(\/))([a-z\d]*)/i) do
    word = $2
    substituted = acronyms[word] || word.capitalize! || word
    $1 ? "::#{substituted}" : substituted
  end
  str
end