Class: Brujula::TypeExtender::Method
- Inherits:
-
Object
- Object
- Brujula::TypeExtender::Method
- Defined in:
- lib/brujula/type_extender/method.rb
Instance Attribute Summary collapse
-
#definition ⇒ Object
readonly
Returns the value of attribute definition.
Instance Method Summary collapse
- #apply_inherit_chain ⇒ Object
- #call ⇒ Object
- #extended_object ⇒ Object
-
#initialize(definition:) ⇒ Method
constructor
A new instance of Method.
- #parameter_builder(object) ⇒ Object
- #parametized_trait(trait) ⇒ Object
- #resource ⇒ Object
Constructor Details
#initialize(definition:) ⇒ Method
Returns a new instance of Method.
7 8 9 |
# File 'lib/brujula/type_extender/method.rb', line 7 def initialize(definition:) @definition = definition end |
Instance Attribute Details
#definition ⇒ Object (readonly)
Returns the value of attribute definition.
5 6 7 |
# File 'lib/brujula/type_extender/method.rb', line 5 def definition @definition end |
Instance Method Details
#apply_inherit_chain ⇒ Object
21 22 23 24 25 26 27 |
# File 'lib/brujula/type_extender/method.rb', line 21 def apply_inherit_chain definition.is.inject(definition.dup) do |object, trait| Brujula::Mergers::ObjectMerger.new( superinstance: parametized_trait(trait), instance: object ).call end end |
#call ⇒ Object
11 12 13 14 15 |
# File 'lib/brujula/type_extender/method.rb', line 11 def call return definition if definition.is.nil? extended_object end |
#extended_object ⇒ Object
17 18 19 |
# File 'lib/brujula/type_extender/method.rb', line 17 def extended_object @extended_object ||= apply_inherit_chain end |
#parameter_builder(object) ⇒ Object
36 37 38 39 40 |
# File 'lib/brujula/type_extender/method.rb', line 36 def parameter_builder(object) Brujula::Parameters::Builder.new( object: object ) end |
#parametized_trait(trait) ⇒ Object
29 30 31 32 33 34 |
# File 'lib/brujula/type_extender/method.rb', line 29 def parametized_trait(trait) Brujula::Parameters::Parser.new( object: trait, parameters: parameter_builder(trait).method_params(resource, definition) ).call end |
#resource ⇒ Object
42 43 44 |
# File 'lib/brujula/type_extender/method.rb', line 42 def resource definition.parent.parent end |