Module: SkinnyControllers::Lookup::Operation
- Defined in:
- lib/skinny_controllers/lookup/operation.rb
Class Method Summary collapse
-
.default_operation_class_for(model_name) ⇒ Class
dynamically creates a module for the model if it isn’t already defined.
-
.default_operation_namespace_for(model_name) ⇒ Class
Namespace for the default operation class.
-
.from_controller(controller, verb, model_name = nil) ⇒ Class
The class or default.
-
.name_from_model(model_name, verb) ⇒ String
The operation based on the model name.
-
.namespace_from_model(model_name) ⇒ String
The operation namespace based on the model name.
-
.operation_of(model_name, verb) ⇒ Class
The operation based on the model name and the verb.
Class Method Details
.default_operation_class_for(model_name) ⇒ Class
dynamically creates a module for the model if it isn’t already defined
29 30 31 32 33 34 35 |
# File 'lib/skinny_controllers/lookup/operation.rb', line 29 def default_operation_class_for(model_name) default_operation = SkinnyControllers::Operation::Default namespace = Lookup::Operation.default_operation_namespace_for(model_name) default = "#{namespace.name}::Default".safe_constantize default || namespace.const_set('Default'.freeze, default_operation.dup) end |
.default_operation_namespace_for(model_name) ⇒ Class
Returns namespace for the default operation class.
38 39 40 41 42 43 |
# File 'lib/skinny_controllers/lookup/operation.rb', line 38 def default_operation_namespace_for(model_name) desired_namespace = namespace_from_model(model_name) parent_namespace = SkinnyControllers.operations_namespace namespace = "#{parent_namespace}::#{desired_namespace}".safe_constantize namespace || Object.const_set(desired_namespace, Module.new) end |
.from_controller(controller, verb, model_name = nil) ⇒ Class
Returns the class or default.
20 21 22 23 24 |
# File 'lib/skinny_controllers/lookup/operation.rb', line 20 def from_controller(controller, verb, model_name = nil) model_name ||= Lookup::Controller.model_name(controller) klass = operation_of(model_name, verb) klass || default_operation_class_for(model_name) end |
.name_from_model(model_name, verb) ⇒ String
Returns the operation based on the model name.
56 57 58 59 60 61 |
# File 'lib/skinny_controllers/lookup/operation.rb', line 56 def name_from_model(model_name, verb) # this namespace is '' by default prefix = SkinnyControllers.operations_namespace namespace = Lookup::Operation.namespace_from_model(model_name) "#{prefix}::#{namespace}::#{verb}" end |
.namespace_from_model(model_name) ⇒ String
Returns the operation namespace based on the model name.
47 48 49 |
# File 'lib/skinny_controllers/lookup/operation.rb', line 47 def namespace_from_model(model_name) "#{model_name}#{SkinnyControllers.operations_suffix}" end |
.operation_of(model_name, verb) ⇒ Class
Returns the operation based on the model name and the verb.
11 12 13 14 |
# File 'lib/skinny_controllers/lookup/operation.rb', line 11 def operation_of(model_name, verb) klass_name = Lookup::Operation.name_from_model(model_name, verb) klass_name.safe_constantize end |