Sha256: 7c12f888c905d801c4fd01c79d5fd4e3a08d3a33fff44618c2842a6c0dd28cfd

Contents?: true

Size: 614 Bytes

Versions: 1

Compression:

Stored size: 614 Bytes

Contents

class Module
  private

  # Works like <tt>attr_accessor</tt> but generates private
  # getter/setter methods for class internal use only. Useful
  # for enforcing Smalltalk-style internal encapsulation.
  def private_accessor(*names)
    names.each do |name|
      instance_var_name = "@#{name}"

      define_method(name) do
        instance_variable_get(instance_var_name)
      end

      define_method("#{name}=") do |value|
        instance_variable_set(instance_var_name, value)
      end

      self.send(:private, name)
      self.send(:private, "#{name}=")
    end
    nil # like attr_accessor
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
shenanigans-1.0.8 lib/shenanigans/module/private_accessor.rb