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