Sha256: cd13d197bfbbd2689205ee5397389a8ea14819cae7f5239b4e1da42291b3f040

Contents?: true

Size: 1.37 KB

Versions: 25

Compression:

Stored size: 1.37 KB

Contents

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

25 entries across 25 versions & 1 rubygems

Version Path
build-tool-0.5.7 lib/build-tool/singleton.rb
build-tool-0.5.6 lib/build-tool/singleton.rb
build-tool-0.5.5 lib/build-tool/singleton.rb
build-tool-0.5.4 lib/build-tool/singleton.rb
build-tool-0.5.3 lib/build-tool/singleton.rb
build-tool-0.5.2 lib/build-tool/singleton.rb
build-tool-0.4.6 lib/build-tool/singleton.rb
build-tool-0.5.1 lib/build-tool/singleton.rb
build-tool-0.4.5 lib/build-tool/singleton.rb
build-tool-0.5.0 lib/build-tool/singleton.rb
build-tool-0.4.4 lib/build-tool/singleton.rb
build-tool-0.4.3 lib/build-tool/singleton.rb
build-tool-0.4.2 lib/build-tool/singleton.rb
build-tool-0.4.1 lib/build-tool/singleton.rb
build-tool-0.4.0 lib/build-tool/singleton.rb
build-tool-0.3.3 lib/build-tool/singleton.rb
build-tool-0.3.2 lib/build-tool/singleton.rb
build-tool-0.3.1 lib/build-tool/singleton.rb
build-tool-0.3 lib/build-tool/singleton.rb
build-tool-0.2 lib/build-tool/singleton.rb