module AbstractClass

Declares a class as abstract which prevents instantiation or allocation.

Constants

Error

The exception raised when an abstract class is instantiated or allocated.

VERSION

Public Class Methods

extended(mod) click to toggle source
   # File lib/abstract_class.rb
 8 def self.extended(mod)
 9   mod.abstract_classes << mod
10 end

Public Instance Methods

abstract_classes() click to toggle source

Stores a collection of classes that have been declared as abstract.

   # File lib/abstract_class.rb
13 def abstract_classes
14   @@abstract_classes ||= []
15 end
allocate(*args) click to toggle source

Raises {AbstractClass::Error} if the class is abstract

Calls superclass method
   # File lib/abstract_class.rb
18 def allocate(*args)
19   raise_if_abstract(:allocated) { super }
20 end
new(*args) click to toggle source

Raises {AbstractClass::Error} if the class is abstract

Calls superclass method
   # File lib/abstract_class.rb
23 def new(*args)
24   raise_if_abstract(:instantiated) { super }
25 end

Private Instance Methods

raise_if_abstract(method) { || ... } click to toggle source
   # File lib/abstract_class.rb
29 def raise_if_abstract(method)
30   if abstract_classes.include?(self)
31     raise Error, "abstract class #{self} can't be #{method}"
32   else
33     yield
34   end
35 end