Sha256: a20076d5a243563d193c64d391a36470dcde79e72b2ae46b20f47a7c726ea5ef

Contents?: true

Size: 1.38 KB

Versions: 1

Compression:

Stored size: 1.38 KB

Contents

class String

  # Converts a string to camelcase.
  #
  # By default camelcase leaves the first charcter of the string as given.
  # If +first_letter+ is set to +:lower+ or +false+, then +#camelcase+ will
  # produce lowerCamelCase. If it is set to +:upper+ or +true+ it will
  # produce UpperCamelCase.
  #
  # +#camelcase+ also converts '/' to '::' which is useful for converting
  # paths to namespaces.
  #
  # Examples
  #   "camel_case".camelcase             #=> "CamelCase"
  #   "camel/case".camelcase             #=> "Camel::Case"
  #   "camel_case".camelcase(false)      #=> "camelCase"
  #
  def camelcase(first_letter=nil)
    case first_letter
    when :upper, true
      upper_camelcase
    when :lower, false
      lower_camelcase
    else
      str = dup
      str.gsub!(/\/(.?)/){ "::#{$1.upcase}" }  # NOT SO SURE ABOUT THIS
      str.gsub!(/(?:_+|-+)([a-z])/){ $1.upcase }
      #str.gsub!(/(\A|\s)([a-z])/){ $1 + $2.upcase }
      str
    end
  end

  def upper_camelcase
    str = dup
    str.gsub!(/\/(.?)/){ "::#{$1.upcase}" }  # NOT SO SURE ABOUT THIS
    str.gsub!(/(?:_+|-+)([a-z])/){ $1.upcase }
    str.gsub!(/(\A|\s)([a-z])/){ $1 + $2.upcase }
    str
  end

  def lower_camelcase
    str = dup
    str.gsub!(/\/(.?)/){ "::#{$1.upcase}" }  # NOT SO SURE ABOUT THIS
    str.gsub!(/(?:_+|-+)([a-z])/){ $1.upcase }
    str.gsub!(/(\A|\s)([a-z])/){ $1 + $2.downcase }
    str
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
facets-2.6.0 lib/core/facets/string/camelcase.rb