Class: Boil::Composer::TargetClassDecorator
- Inherits:
-
Object
- Object
- Boil::Composer::TargetClassDecorator
show all
- Includes:
- ReflectionHelpers
- Defined in:
- lib/boil/composer/target_class_decorator.rb
Constant Summary
ReflectionHelpers::ClassConstNotFound
Instance Method Summary
collapse
#class_name?, #constantize_class, #constructor_parameters
Constructor Details
Returns a new instance of TargetClassDecorator.
6
7
8
|
# File 'lib/boil/composer/target_class_decorator.rb', line 6
def initialize(target_class)
@target_class = target_class
end
|
Instance Method Details
#define_factory_method(class_or_name) ⇒ Object
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
# File 'lib/boil/composer/target_class_decorator.rb', line 10
def define_factory_method(class_or_name)
factory_method_name = factory_method_name(class_or_name)
prevent_old_method_override(factory_method_name)
unless @target_class.method_defined?(factory_method_name)
cls = constantize_class(class_or_name)
constructor_params = constructor_parameters(cls)
@target_class.send(:define_method, factory_method_name) do
instance_variable_name = "@#{factory_method_name.to_s}".to_sym
instance_variable = instance_variable_get(instance_variable_name)
if instance_variable
instance_variable
else
instance_variable_set(instance_variable_name, cls.new(*constructor_params.map {|p| send(p)}))
end
end
register_factory_method(factory_method_name)
end
end
|
#factory_method?(meth) ⇒ Boolean
33
34
35
|
# File 'lib/boil/composer/target_class_decorator.rb', line 33
def factory_method?(meth)
factory_methods.include?(meth)
end
|
#factory_methods ⇒ Object
37
38
39
40
41
42
43
|
# File 'lib/boil/composer/target_class_decorator.rb', line 37
def factory_methods
if @target_class.class_variable_defined?(FACTORY_METHODS_VAR_NAME)
@target_class.class_variable_get(FACTORY_METHODS_VAR_NAME)
else
[]
end
end
|
#method_defined?(meth) ⇒ Boolean
29
30
31
|
# File 'lib/boil/composer/target_class_decorator.rb', line 29
def method_defined?(meth)
@target_class.method_defined?(meth)
end
|