Sha256: 894c3fdd9de32375bae0321f938591f80b6819a6bb9071b9ffbdc1968e762909

Contents?: true

Size: 1.4 KB

Versions: 12

Compression:

Stored size: 1.4 KB

Contents

# -*- coding: UTF-8 -*-

module BuildTool

    class Singleton

        def self.inherited( child )
            if child.superclass == Singleton
                child.class_eval <<-EOS
                    def self.instance;       instance_variable_get( "@instance" ); end
                    def self.instance=( x ); instance_variable_set( "@instance", x ); end
                EOS
            else
                child.class_eval <<-EOS
                    def self.instance;       superclass.instance; end
                    def self.instance=( x ); superclass.instance = x; end
                EOS
            end
            child.instance_variable_set( "@instance", nil )
        end

        def initialize
            if !self.class.instance.nil?
                raise StandardError, "More than one instance of #{self.class} created!"
            end
            self.class.instance = self
        end


        def self.instance
            raise StandardError, "No instance of #{self} created"
        end

        def destroy
            cls = self.class
            while cls.superclass != Singleton
                cls = cls.superclass
            end
            cls.instance = nil
        end

        def instance
            cls = self.class
            while cls.superclass != Singleton
                cls = cls.superclass
            end
            cls.instance
        end

    end

end # module BuildTool

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
build-tool-0.6.9 lib/build-tool/singleton.rb
build-tool-0.6.8 lib/build-tool/singleton.rb
build-tool-0.6.7 lib/build-tool/singleton.rb
build-tool-0.6.6 lib/build-tool/singleton.rb
build-tool-0.6.5 lib/build-tool/singleton.rb
build-tool-0.6.4 lib/build-tool/singleton.rb
build-tool-0.6.3 lib/build-tool/singleton.rb
build-tool-0.6.2 lib/build-tool/singleton.rb
build-tool-0.6.1 lib/build-tool/singleton.rb
build-tool-0.6.0 lib/build-tool/singleton.rb
build-tool-0.6.0.rc2 lib/build-tool/singleton.rb
build-tool-0.6.0.rc1 lib/build-tool/singleton.rb