Class: Zeitwerk::Inflector

Inherits:
Object
  • Object
show all
Defined in:
lib/zeitwerk/inflector.rb

Direct Known Subclasses

GemInflector

Instance Method Summary collapse

Instance Method Details

#camelize(basename, _abspath) ⇒ Object

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



15
16
17
# File 'lib/zeitwerk/inflector.rb', line 15

def camelize(basename, _abspath)
  overrides[basename] || basename.split('_').each(&:capitalize!).join
end

#inflect(inflections) ⇒ Object

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



32
33
34
# File 'lib/zeitwerk/inflector.rb', line 32

def inflect(inflections)
  overrides.merge!(inflections)
end