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