class Zeitwerk::Inflector

Public Instance Methods

camelize(basename, _abspath) click to toggle source
Very basic snake case -> camel case conversion.

  inflector = Zeitwerk::Inflector.new
  inflector.camelize('post', ...)             # => 'Post'
  inflector.camelize('users_controller', ...) # => 'UsersController'
  inflector.camelize('api', ...)              # => 'Api'

Takes into account hard-coded mappings configured with `inflect`.

: (String, String) -> String

# File lib/zeitwerk/inflector.rb, line 15
def camelize(basename, _abspath)
  overrides[basename] || basename.split('_').each(&:capitalize!).join
end
inflect(inflections) click to toggle source
Configures hard-coded inflections:

  inflector = Zeitwerk::Inflector.new
  inflector.inflect(
    'html_parser'   => 'HTMLParser',
    'mysql_adapter' => 'MySQLAdapter'
  )

  inflector.camelize('html_parser', abspath)      # => 'HTMLParser'
  inflector.camelize('mysql_adapter', abspath)    # => 'MySQLAdapter'
  inflector.camelize('users_controller', abspath) # => 'UsersController'

: (Hash[String, String]) -> void

# File lib/zeitwerk/inflector.rb, line 32
def inflect(inflections)
  overrides.merge!(inflections)
end

Private Instance Methods

overrides() click to toggle source
Hard-coded basename to constant name user maps that override the default
inflection logic.

: () -> Hash[String, String]

# File lib/zeitwerk/inflector.rb, line 42
def overrides
  @overrides ||= {}
end