Class: MethodDecorator::Services::DecorationsService
- Inherits:
-
Object
- Object
- MethodDecorator::Services::DecorationsService
- Defined in:
- lib/method_decorator/services/decorations_service.rb
Instance Attribute Summary collapse
-
#decoration ⇒ Object
Returns the value of attribute decoration.
-
#klass ⇒ Object
Returns the value of attribute klass.
-
#method_instance ⇒ Object
Returns the value of attribute method_instance.
-
#method_name ⇒ Object
Returns the value of attribute method_name.
Class Method Summary collapse
- .add_call(klass, method_name, *args, &block) ⇒ Object
- .call_original_method(context, method_name, *args, &block) ⇒ Object
- .calls_repository ⇒ Object
- .decorate(klass, method_name, &decoration) ⇒ Object
- .decorations_repository ⇒ Object
- .get_class_from_context(context) ⇒ Object
- .get_type_from_context(context) ⇒ Object
- .last_call_args(context) ⇒ Object
- .last_call_block(context) ⇒ Object
- .last_call_from_context(context) ⇒ Object
- .last_call_method_name(context) ⇒ Object
Instance Method Summary collapse
- #decorate ⇒ Object
-
#initialize(klass, method_name, &decoration) ⇒ DecorationsService
constructor
A new instance of DecorationsService.
Constructor Details
#initialize(klass, method_name, &decoration) ⇒ DecorationsService
Returns a new instance of DecorationsService.
12 13 14 15 16 17 18 |
# File 'lib/method_decorator/services/decorations_service.rb', line 12 def initialize(klass, method_name, &decoration) self.klass = klass self.method_name = method_name self.method_instance = klass.instance_method(method_name) self.decoration = decoration self end |
Instance Attribute Details
#decoration ⇒ Object
Returns the value of attribute decoration.
10 11 12 |
# File 'lib/method_decorator/services/decorations_service.rb', line 10 def decoration @decoration end |
#klass ⇒ Object
Returns the value of attribute klass.
10 11 12 |
# File 'lib/method_decorator/services/decorations_service.rb', line 10 def klass @klass end |
#method_instance ⇒ Object
Returns the value of attribute method_instance.
10 11 12 |
# File 'lib/method_decorator/services/decorations_service.rb', line 10 def method_instance @method_instance end |
#method_name ⇒ Object
Returns the value of attribute method_name.
10 11 12 |
# File 'lib/method_decorator/services/decorations_service.rb', line 10 def method_name @method_name end |
Class Method Details
.add_call(klass, method_name, *args, &block) ⇒ Object
80 81 82 |
# File 'lib/method_decorator/services/decorations_service.rb', line 80 def add_call(klass, method_name, *args, &block) calls_repository.add(klass, method_name, *args, &block) end |
.call_original_method(context, method_name, *args, &block) ⇒ Object
84 85 86 87 88 |
# File 'lib/method_decorator/services/decorations_service.rb', line 84 def call_original_method(context, method_name, *args, &block) klass = get_class_from_context(context) method_instance = decorations_repository.original_method_instance_of(klass, method_name) method_instance.bind(context).call(*args, &block) end |
.calls_repository ⇒ Object
126 127 128 |
# File 'lib/method_decorator/services/decorations_service.rb', line 126 def calls_repository MethodDecorator::Repositories::CallsRepository.singleton end |
.decorate(klass, method_name, &decoration) ⇒ Object
76 77 78 |
# File 'lib/method_decorator/services/decorations_service.rb', line 76 def decorate(klass, method_name, &decoration) new(klass, method_name, &decoration).decorate end |
.decorations_repository ⇒ Object
122 123 124 |
# File 'lib/method_decorator/services/decorations_service.rb', line 122 def decorations_repository MethodDecorator::Repositories::DecorationsRepository.singleton end |
.get_class_from_context(context) ⇒ Object
110 111 112 113 114 115 116 |
# File 'lib/method_decorator/services/decorations_service.rb', line 110 def get_class_from_context(context) if get_type_from_context(context).eql? :singleton context.singleton_class else context.class end end |
.get_type_from_context(context) ⇒ Object
118 119 120 |
# File 'lib/method_decorator/services/decorations_service.rb', line 118 def get_type_from_context(context) context.class.eql?(Class) ? :singleton : :class end |
.last_call_args(context) ⇒ Object
90 91 92 93 |
# File 'lib/method_decorator/services/decorations_service.rb', line 90 def last_call_args(context) call = last_call_from_context(context) call && call.args end |
.last_call_block(context) ⇒ Object
95 96 97 98 |
# File 'lib/method_decorator/services/decorations_service.rb', line 95 def last_call_block(context) call = last_call_from_context(context) call && call.block end |
.last_call_from_context(context) ⇒ Object
105 106 107 108 |
# File 'lib/method_decorator/services/decorations_service.rb', line 105 def last_call_from_context(context) klass = get_class_from_context(context) calls_repository.find_call(klass) end |
.last_call_method_name(context) ⇒ Object
100 101 102 103 |
# File 'lib/method_decorator/services/decorations_service.rb', line 100 def last_call_method_name(context) call = last_call_from_context(context) call && call.method_name end |
Instance Method Details
#decorate ⇒ Object
20 21 22 23 24 25 |
# File 'lib/method_decorator/services/decorations_service.rb', line 20 def decorate add_decoration_to_repository override_original_klass_method define_helper_methods self end |