Sha256: bb18c33ac4d03f45d8e3bd30252768d25ee7271508173dc5256d1d3bbc749f2e

Contents?: true

Size: 1.66 KB

Versions: 7

Compression:

Stored size: 1.66 KB

Contents

module Kernel

  # Takes an array or a hash with default values and creates
  # singleton attr_readers for each.
  #
  #   attr_singleton_reader {:x => 1, :y => 2}
  #   @x       #=> 1
  #   @y       #=> 2
  #   self.x   #=> 1
  #   self.y   #=> 2
  #
  #  CREDIT: Trans

  def attr_singleton_reader(*args)
    #h, a = *args.partition{|a| Hash===a}
    (class << self ; self ; end).send( :attr_reader, *args )  
    #(class << self ; self ; end).send( :attr_reader, *h.keys )
    #h.each { |k,v| instance_variable_set("@#{k}", v) }
  end

  # Takes an array or a hash with default values and creates 
  # singleton attr_writers for each.
  #
  #   attr_singleton_writer { :x => 1, :y => 2 }
  #   @x           #=> 1
  #   @y           #=> 2
  #   self.x = 3
  #   self.y = 4
  #   @x           #=> 3
  #   @y           #=> 4
  #
  #  CREDIT: Trans

  def attr_singleton_writer(*args)
    #h, a = *args.partition{|a| Hash===a}
    (class << self ; self ; end).send( :attr_writer, *args )
    #(class << self ; self ; end).send( :attr_writer, *h.keys )
    #h.each { |k,v| instance_variable_set("@#{k}", v) }
  end

  # Takes an array or hash with default values and creates
  # singleton attr_accessors for each.
  #
  #   attr_singleton_accessor { :x => 1, :y => 2 }
  #   @x          #=> 1
  #   @y          #=> 2
  #   self.x = 3
  #   self.y = 4
  #   self.x      #=> 3
  #   self.y      #=> 4
  #
  #  CREDIT: Trans

  def attr_singleton_accessor(*args)
    #h, a = *args.partition{|a| Hash===a}
    (class << self ; self ; end).send( :attr_accessor, *args )
    #(class << self ; self ; end).send( :attr_accessor, *h.keys )
    #h.each { |k,v| instance_variable_set("@#{k}", v) }
  end

end

Version data entries

7 entries across 7 versions & 2 rubygems

Version Path
facets-2.4.0 lib/facets/kernel/attr_singleton.rb
facets-2.4.1 lib/facets/kernel/attr_singleton.rb
facets-2.4.2 lib/core/facets/kernel/attr_singleton.rb
facets-2.4.3 lib/core/facets/kernel/attr_singleton.rb
facets-2.4.4 lib/core/facets/kernel/attr_singleton.rb
facets-2.4.5 lib/core/facets/kernel/attr_singleton.rb
mack-facets-0.8.2 lib/gems/facets-2.4.5/lib/core/facets/kernel/attr_singleton.rb