Sha256: 487110470cfaff309f0978b10e0e2f37c40226d3c241033c308eb7029a24fdc4

Contents?: true

Size: 608 Bytes

Versions: 25

Compression:

Stored size: 608 Bytes

Contents

module Exlibris
  module Primo
    # 
    # If a class is abstract, it can't be instantiated.
    # 
    module Abstract
      def self.included(klass)
        klass.class_eval do
          extend ClassAttributes
        end
      end

      module ClassAttributes
        def abstract
          @abstract ||= false
        end
        alias :abstract? :abstract

        attr_writer :abstract
        protected :abstract=
      end

      def initialize *args
        raise NotImplementedError.new("Cannot instantiate #{self.class.name}.  It is abstract") if self.class.abstract?
      end
    end
  end
end

Version data entries

25 entries across 25 versions & 1 rubygems

Version Path
exlibris-primo-2.1.1 lib/exlibris/primo/abstract.rb
exlibris-primo-2.1.0 lib/exlibris/primo/abstract.rb
exlibris-primo-2.0.0 lib/exlibris/primo/abstract.rb
exlibris-primo-1.1.9 lib/exlibris/primo/abstract.rb
exlibris-primo-1.1.8 lib/exlibris/primo/abstract.rb
exlibris-primo-1.1.7 lib/exlibris/primo/abstract.rb
exlibris-primo-1.1.6 lib/exlibris/primo/abstract.rb
exlibris-primo-1.1.5 lib/exlibris/primo/abstract.rb
exlibris-primo-1.1.4 lib/exlibris/primo/abstract.rb
exlibris-primo-1.1.3 lib/exlibris/primo/abstract.rb
exlibris-primo-1.1.2 lib/exlibris/primo/abstract.rb
exlibris-primo-1.1.1 lib/exlibris/primo/abstract.rb
exlibris-primo-1.1.0 lib/exlibris/primo/abstract.rb
exlibris-primo-1.0.11 lib/exlibris/primo/abstract.rb
exlibris-primo-1.0.10 lib/exlibris/primo/abstract.rb
exlibris-primo-1.0.9 lib/exlibris/primo/abstract.rb
exlibris-primo-1.0.8 lib/exlibris/primo/abstract.rb
exlibris-primo-1.0.7 lib/exlibris/primo/abstract.rb
exlibris-primo-1.0.6 lib/exlibris/primo/abstract.rb
exlibris-primo-1.0.5 lib/exlibris/primo/abstract.rb