class Class

A dumbed down version of ActiveSupport's Class#class_attribute helper.

Public Instance Methods

class_attribute(*attrs) click to toggle source
# File lib/sucker_punch/core_ext.rb, line 8
    def class_attribute(*attrs)
      instance_writer = true

      attrs.each do |name|
        class_eval <<-RUBY, __FILE__, __LINE__ + 1
          def self.#{name}() nil end
          def self.#{name}?() !!#{name} end

          def self.#{name}=(val)
            singleton_class.class_eval do
              define_method(:#{name}) { val }
            end

            if singleton_class?
              class_eval do
                def #{name}
                  defined?(@#{name}) ? @#{name} : singleton_class.#{name}
                end
              end
            end
            val
          end

          def #{name}
            defined?(@#{name}) ? @#{name} : self.class.#{name}
          end

          def #{name}?
            !!#{name}
          end
        RUBY

        attr_writer name if instance_writer
      end
    end

Private Instance Methods

singleton_class?() click to toggle source
# File lib/sucker_punch/core_ext.rb, line 45
def singleton_class?
  ancestors.first != self
end