class Class

Public Instance Methods

block_attr_accessor(*my_accessors) click to toggle source
# File lib/purplish-accessors/class.rb, line 33
def block_attr_accessor(*my_accessors)
  my_accessors.each do |accessor|
    define_method(accessor) do
      instance_variable_get("@#{accessor}")
    end

    define_method("#{accessor}=") do |accessor_value|
      instance_variable_set("@#{accessor}", accessor_value ? accessor_value.weak! : nil)
    end
  end
end
bool_attr_accessor(*my_accessors) click to toggle source

Returns the list of method names (symbols) generated. Useful for making them private

# File lib/purplish-accessors/class.rb, line 15
def bool_attr_accessor(*my_accessors)
  method_names = []
  my_accessors.each do |accessor|
    name = ("#{accessor}?").to_sym
    method_names << name
    define_method(name) do
      !!instance_variable_get("@#{accessor}") #rubocop:disable DoubleNegation
    end

    name = "#{accessor}=".to_sym
    method_names << name
    define_method(name) do |accessor_value|
      instance_variable_set("@#{accessor}", accessor_value)
    end
  end
  method_names
end
private_attr_accessor(*attr) click to toggle source
# File lib/purplish-accessors/class.rb, line 2
def private_attr_accessor(*attr)
  attr_accessor(*attr)
  private(*attr)
  attr.each { |e| private("#{e}=".to_sym) }
end
private_bool_attr_accessor(*attr) click to toggle source
# File lib/purplish-accessors/class.rb, line 8
def private_bool_attr_accessor(*attr)
  method_names = bool_attr_accessor(*attr)
  classes = method_names.map(&:class)
  private(*method_names)
end
symbol_attr_accessor(*my_accessors) click to toggle source
# File lib/purplish-accessors/class.rb, line 45
def symbol_attr_accessor(*my_accessors)
  my_accessors.each do |accessor|
    define_method(accessor) do
      instance_variable_get("@#{accessor}")
    end

    define_method("#{accessor}=") do |accessor_value|
      instance_variable_set("@#{accessor}", accessor_value.to_sym)
    end
  end
end