Sha256: e581c5da4f4b3df39429ff0cdc2ff5d198c7c4d330d87f586af1586f9d0b6c0a

Contents?: true

Size: 860 Bytes

Versions: 33

Compression:

Stored size: 860 Bytes

Contents

module ShortLived extend Trait
  
  class LifetimeMissingError < RuntimeError
    def initialize
      super <<-MESSAGE
        A ShortLived thing must define method
          lifetime lifetime = nil, &block
        with either params
          lifetime 74 # some value
        or
          lifetime { 50 + rand(50) } # some block
        to define how long the thing should live until it is destroyed.
      MESSAGE
    end
  end
  
  def self.included klass
    klass.extend ClassMethods
  end
  
  def initialize window
    raise LifetimeMissingError.new unless self.respond_to? :lifetime
    super window
    threaded self.lifetime do
      self.destroy!
    end
  end
  
  module ClassMethods
    
    def lifetime lifetime = nil, &block
      block = lambda { lifetime } unless block_given?
      define_method :lifetime, &block
    end
    
  end
  
end

Version data entries

33 entries across 33 versions & 1 rubygems

Version Path
gosu_extensions-0.3.8 lib/traits/short_lived.rb
gosu_extensions-0.3.7 lib/traits/short_lived.rb
gosu_extensions-0.3.6 lib/traits/short_lived.rb
gosu_extensions-0.3.5 lib/traits/short_lived.rb
gosu_extensions-0.3.4 lib/traits/short_lived.rb
gosu_extensions-0.3.3 lib/traits/short_lived.rb
gosu_extensions-0.3.2 lib/traits/short_lived.rb
gosu_extensions-0.3.1 lib/traits/short_lived.rb
gosu_extensions-0.3.0 lib/traits/short_lived.rb
gosu_extensions-0.2.9 lib/traits/short_lived.rb
gosu_extensions-0.2.8 lib/traits/short_lived.rb
gosu_extensions-0.2.7 lib/traits/short_lived.rb
gosu_extensions-0.2.6 lib/traits/short_lived.rb
gosu_extensions-0.2.5 lib/traits/short_lived.rb
gosu_extensions-0.2.4 lib/traits/short_lived.rb
gosu_extensions-0.2.3 lib/traits/short_lived.rb
gosu_extensions-0.2.2 lib/traits/short_lived.rb
gosu_extensions-0.2.1 lib/traits/short_lived.rb
gosu_extensions-0.2.0 lib/traits/short_lived.rb
gosu_extensions-0.1.28 lib/traits/short_lived.rb