class CaseTransform2::StringExt

String class extension Stolen from ActiveSupport::Inflector.camelize @api private

Public Instance Methods

camelize(string, first_letter = :upper) click to toggle source
# File lib/case_transform2/string_ext.rb, line 8
def camelize(string, first_letter = :upper)
  raise ArgumentError, "Argument can not be nil" unless %i[upper lower].include?(first_letter)
  str = string.to_s
  str = str.gsub(/^[a-z\d]*/, &:capitalize) if first_letter == :upper
  str.gsub(/(?:_|(\/))([a-z\d]*)/i) do
    "#{Regexp.last_match(1)}#{Regexp.last_match(2).capitalize}"
  end.gsub("/", "::")
end
dasherize(string) click to toggle source
# File lib/case_transform2/string_ext.rb, line 17
def dasherize(string)
  string.tr("_", "-")
end
underscore(string) click to toggle source

Only support camel to underscore

# File lib/case_transform2/string_ext.rb, line 22
def underscore(string)
  str = string.to_s
  return str unless str =~ /[A-Z-]|::/
  str.gsub("::", "/")
     .gsub(/([A-Z\d]+)([A-Z][a-z])/, '\1_\2')
     .gsub(/([a-z\d])([A-Z])/, '\1_\2')
     .tr("-", "_")
     .downcase
end