module Oat::ClassAttribute

Public Instance Methods

class_attribute(*attrs) click to toggle source
# File lib/support/class_attribute.rb, line 3
    def class_attribute(*attrs)
      attrs.each do |name|
        class_eval <<-RUBY, __FILE__, __LINE__ + 1
            def self.#{name}() nil 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
        RUBY

      end
    end

Private Instance Methods

singleton_class() click to toggle source
# File lib/support/class_attribute.rb, line 29
def singleton_class
  class << self
    self
  end
end
singleton_class?() click to toggle source
# File lib/support/class_attribute.rb, line 35
def singleton_class?
  ancestors.first != self
end