Class: CaseTransform::StringExt

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

Overview

String class extension Stolen from ActiveSupport::Inflector.camelize

Instance Method Summary collapse

Instance Method Details

#camelize(string, first_letter = :upper) ⇒ Object

Raises:

  • (ArgumentError)


7
8
9
10
11
12
13
14
# File 'lib/case_transform/string_ext.rb', line 7

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) ⇒ Object



16
17
18
# File 'lib/case_transform/string_ext.rb', line 16

def dasherize(string)
  string.tr("_", "-")
end

#underscore(string) ⇒ Object

Only support camel to underscore



21
22
23
24
25
26
27
28
29
# File 'lib/case_transform/string_ext.rb', line 21

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