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