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