module MDT::Extensible
A module to make the class a MDT
base class
Public Class Methods
descendants()
click to toggle source
Exposes descendants variable.
# File lib/mdt/modules/extensible.rb 30 def self.descendants 31 @descendants 32 end
included(klass)
click to toggle source
Adds needed class methods when included in a class. Arguments:
-
klass
- the class a module is being included in
# File lib/mdt/modules/extensible.rb 7 def self.included(klass) 8 klass.class_eval do 9 # Stores the descendant classes. 10 @descendants = [] 11 # Defines a key that a subclass can be found by. Raises MDT::Errors::OverrideNeeded. 12 def self.key 13 raise MDT::Errors::OverrideNeeded.new('key') 14 end 15 16 # Defines a set of subkeys that can be passed to class methods. Raises MDT::Errors::OverrideNeeded. 17 def self.subkeys 18 raise MDT::Errors::OverrideNeeded.new('subkeys') 19 end 20 21 # Adds a subclass to the descendants variable when it is inherited and makes the list unique. 22 # Arguments 23 # * +subclass+ - a subclass that the class is inherited by. 24 def self.inherited(subclass) 25 @descendants << subclass 26 @descendants.uniq! 27 end 28 29 # Exposes descendants variable. 30 def self.descendants 31 @descendants 32 end 33 end 34 end
inherited(subclass)
click to toggle source
Adds a subclass to the descendants variable when it is inherited and makes the list unique. Arguments
-
subclass
- a subclass that the class is inherited by.
# File lib/mdt/modules/extensible.rb 24 def self.inherited(subclass) 25 @descendants << subclass 26 @descendants.uniq! 27 end
key()
click to toggle source
Defines a key that a subclass can be found by. Raises MDT::Errors::OverrideNeeded
.
# File lib/mdt/modules/extensible.rb 12 def self.key 13 raise MDT::Errors::OverrideNeeded.new('key') 14 end
subkeys()
click to toggle source
Defines a set of subkeys that can be passed to class methods. Raises MDT::Errors::OverrideNeeded
.
# File lib/mdt/modules/extensible.rb 17 def self.subkeys 18 raise MDT::Errors::OverrideNeeded.new('subkeys') 19 end