Sha256: 7d99a3428d29d7f40496e371b674860697a91779ced0de6eaaa1eaf89731e788

Contents?: true

Size: 638 Bytes

Versions: 5

Compression:

Stored size: 638 Bytes

Contents

class Class
  # Provides a way to make class attributes that inherit.  Pass
  # in symbols for attribute names
  def class_attribute(*attrs)
    attrs.each do |name|
      define_singleton_method(name) { nil }

      ivar = "@#{name}"

      define_singleton_method("#{name}=") do |val|
        singleton_class.class_eval do
          remove_possible_method(name)
          define_method(name) { val }
        end

        val
      end
    end
  end

  # Removes a method if it is defined.
  def remove_possible_method(method)
    if method_defined?(method) || private_method_defined?(method)
      undef_method(method)
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
volt-0.8.27.beta2 lib/volt/extra_core/class.rb
volt-0.8.27.beta1 lib/volt/extra_core/class.rb
volt-0.8.26.beta1 lib/volt/extra_core/class.rb
volt-0.8.26 lib/volt/extra_core/class.rb
volt-0.8.24 lib/volt/extra_core/class.rb