module Ramverk::String

Conveniences for inflecting and working with string manipulation.

Public Instance Methods

classify(string) click to toggle source

Return a CamelCase version of the string.

@param string [String]

String to be transformed.

@return [String]

The transformed string

@example

string = "ramverk_string"
Ramverk::String.classify(string) # => 'RamverkString'
# File lib/ramverk/string.rb, line 40
def classify(string)
  words = underscore(string).split(%r{_|::|\/|\-}).map!(&:capitalize)
  delimiters = underscore(string).scan(%r{_|::|\/|\-})
  delimiters.map! { |delimiter| delimiter == "_" ? "" : "::" }
  words.zip(delimiters).join
end
underscore(string) click to toggle source

Return a downcased and underscore separated version of the string.

@param string [String]

String to be transformed.

@return [String]

The transformed string.

@example

string = "RamverkString"
Ramverk::String.underscore(string) # => 'ramverk_string'
# File lib/ramverk/string.rb, line 19
def underscore(string)
  string = +string.to_s
  string.gsub!("::", "/")
  string.gsub!(/([A-Z\d]+)([A-Z][a-z])/, '\1_\2')
  string.gsub!(/([a-z\d])([A-Z])/, '\1_\2')
  string.gsub!(/[[:space:]]|\-/, '\1_\2')
  string.downcase!
  string
end