Module: Castkit::Inflector

Defined in:
lib/castkit/inflector.rb

Overview

Provides string transformation utilities used internally by Castkit

Class Method Summary collapse

Class Method Details

.pascalize(string) ⇒ String

Converts a snake_case or underscored string into PascalCase.

Examples:

Castkit::Inflector.pascalize("user_contract") # => "UserContract"
Castkit::Inflector.pascalize(:admin_dto)      # => "AdminDto"

Parameters:

  • string (String, Symbol)

    the input to convert

Returns:

  • (String)

    the PascalCase representation



26
27
28
# File 'lib/castkit/inflector.rb', line 26

def pascalize(string)
  underscore(string).to_s.split("_").map(&:capitalize).join
end

.underscore(string) ⇒ String

Converts a PascalCase or camelCase string to snake_case.

Examples:

Castkit::Inflector.underscore("UserContract") # => "user_contract"
Castkit::Inflector.underscore("XMLParser")    # => "xml_parser"

Parameters:

  • string (String, Symbol)

Returns:

  • (String)


38
39
40
41
42
43
44
# File 'lib/castkit/inflector.rb', line 38

def underscore(string)
  string
    .to_s
    .gsub(/([A-Z\d]+)([A-Z][a-z])/, '\1_\2')
    .gsub(/([a-z\d])([A-Z])/, '\1_\2')
    .downcase
end

.unqualified_name(klass) ⇒ String

Returns the unqualified class name from a namespaced class.

Examples:

Castkit::Inflector.class_name(Foo::Bar) # => "Bar"

Parameters:

  • klass (Class)

Returns:

  • (String)


14
15
16
# File 'lib/castkit/inflector.rb', line 14

def unqualified_name(klass)
  klass.name.to_s.split("::").last
end