Class: Contracts::Engine::Target
- Inherits:
-
Object
- Object
- Contracts::Engine::Target
- Defined in:
- lib/contracts/engine/target.rb
Overview
Represents class in question
Instance Method Summary collapse
-
#applied? ⇒ Bool
Returns true if target has contracts engine already.
-
#apply(engine_class = Base) ⇒ Object
Enable contracts engine for target - it is no-op if contracts engine is already enabled - it automatically enables contracts engine for its eigenclass - it sets owner class to target for its eigenclass.
-
#engine ⇒ Engine::Base or Engine::Eigenclass
Returns contracts engine of target.
-
#initialize(target) ⇒ Target
constructor
Creates new instance of Target.
Constructor Details
#initialize(target) ⇒ Target
Creates new instance of Target
10 11 12 |
# File 'lib/contracts/engine/target.rb', line 10 def initialize(target) @target = target end |
Instance Method Details
#applied? ⇒ Bool
Returns true if target has contracts engine already
38 39 40 |
# File 'lib/contracts/engine/target.rb', line 38 def applied? target.respond_to?(:__contracts_engine) end |
#apply(engine_class = Base) ⇒ Object
Enable contracts engine for target
-
it is no-op if contracts engine is already enabled
-
it automatically enables contracts engine for its eigenclass
-
it sets owner class to target for its eigenclass
21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/contracts/engine/target.rb', line 21 def apply(engine_class = Base) return if applied? apply_to_eigenclass eigenclass.class_eval do define_method(:__contracts_engine) do @__contracts_engine ||= engine_class.new(self) end end engine.set_eigenclass_owner end |
#engine ⇒ Engine::Base or Engine::Eigenclass
Returns contracts engine of target
45 46 47 |
# File 'lib/contracts/engine/target.rb', line 45 def engine applied? && target.__contracts_engine end |