Module: Dry::Core::Inflector
- Defined in:
- lib/dry/core/inflector.rb
Overview
Helper module providing thin interface around an inflection backend.
Constant Summary collapse
- BACKENDS =
List of supported backends
{ activesupport: [ 'active_support/inflector', proc { ::ActiveSupport::Inflector } ], dry_inflector: [ 'dry/inflector', proc { Dry::Inflector.new } ], inflecto: [ 'inflecto', proc { ::Inflecto } ] }.freeze
Class Method Summary collapse
-
.camelize(input) ⇒ Object
Transform string to camel case.
-
.classify(input) ⇒ Object
Transform a file path to a constant name.
-
.constantize(input) ⇒ Object
Get a constant value by its name.
-
.demodulize(input) ⇒ Object
Remove namespaces from a constant name.
-
.detect_backend ⇒ Object
private
Set up first available backend.
-
.inflector ⇒ Object
private
Inflector accessor.
-
.pluralize(input) ⇒ Object
Get a plural form of a word.
-
.realize_backend(path, backend_factory) ⇒ Object
private
Try to activate a backend.
-
.select_backend(name = nil) ⇒ Object
Set preferred backend.
-
.singularize(input) ⇒ Object
Get a singlular form of a word.
-
.underscore(input) ⇒ Object
Transform string to snake case.
Class Method Details
.camelize(input) ⇒ Object
Transform string to camel case
69 70 71 |
# File 'lib/dry/core/inflector.rb', line 69 def self.camelize(input) inflector.camelize(input) end |
.classify(input) ⇒ Object
Transform a file path to a constant name
135 136 137 |
# File 'lib/dry/core/inflector.rb', line 135 def self.classify(input) inflector.classify(input) end |
.constantize(input) ⇒ Object
Get a constant value by its name
124 125 126 |
# File 'lib/dry/core/inflector.rb', line 124 def self.constantize(input) inflector.constantize(input) end |
.demodulize(input) ⇒ Object
Remove namespaces from a constant name
113 114 115 |
# File 'lib/dry/core/inflector.rb', line 113 def self.demodulize(input) inflector.demodulize(input) end |
.detect_backend ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Set up first available backend
37 38 39 40 41 42 43 |
# File 'lib/dry/core/inflector.rb', line 37 def self.detect_backend BACKENDS.inject(nil) do |backend, (_, (path, factory))| backend || realize_backend(path, factory) end || raise(LoadError, "No inflector library could be found: "\ "please install either the `inflecto` or `activesupport` gem.") end |
.inflector ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Inflector accessor. Lazily initializes a backend
58 59 60 |
# File 'lib/dry/core/inflector.rb', line 58 def self.inflector defined?(@inflector) ? @inflector : select_backend end |
.pluralize(input) ⇒ Object
Get a plural form of a word
102 103 104 |
# File 'lib/dry/core/inflector.rb', line 102 def self.pluralize(input) inflector.pluralize(input) end |
.realize_backend(path, backend_factory) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Try to activate a backend
26 27 28 29 30 31 32 |
# File 'lib/dry/core/inflector.rb', line 26 def self.realize_backend(path, backend_factory) require path rescue LoadError nil else backend_factory.call end |
.select_backend(name = nil) ⇒ Object
Set preferred backend
48 49 50 51 52 53 |
# File 'lib/dry/core/inflector.rb', line 48 def self.select_backend(name = nil) if name && !BACKENDS.key?(name) raise NameError, "Invalid inflector library selection: '#{name}'" end @inflector = name ? realize_backend(*BACKENDS[name]) : detect_backend end |
.singularize(input) ⇒ Object
Get a singlular form of a word
91 92 93 |
# File 'lib/dry/core/inflector.rb', line 91 def self.singularize(input) inflector.singularize(input) end |
.underscore(input) ⇒ Object
Transform string to snake case
80 81 82 |
# File 'lib/dry/core/inflector.rb', line 80 def self.underscore(input) inflector.underscore(input) end |