Module: MDT::Extensible
- Included in:
- CommandModifiers::Base, Commands::Base, DirectoryChoosers::Base, Fetchers::Base
- Defined in:
- lib/mdt/modules/extensible.rb
Overview
A module to make the class a MDT base class
Class Method Summary collapse
-
.included(klass) ⇒ Object
Adds needed class methods when included in a class.
Class Method Details
.included(klass) ⇒ Object
Adds needed class methods when included in a class. Arguments:
-
klass- the class a module is being included in
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/mdt/modules/extensible.rb', line 7 def self.included(klass) klass.class_eval do # Stores the descendant classes. @descendants = [] # Defines a key that a subclass can be found by. Raises MDT::Errors::OverrideNeeded. def self.key raise MDT::Errors::OverrideNeeded.new('key') end # Defines a set of subkeys that can be passed to class methods. Raises MDT::Errors::OverrideNeeded. def self.subkeys raise MDT::Errors::OverrideNeeded.new('subkeys') end # 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. def self.inherited(subclass) @descendants << subclass @descendants.uniq! end # Exposes descendants variable. def self.descendants @descendants end end end |