File: databasedotcom/core_extensions/class_extensions.rb

Overview
Module Structure
Class Hierarchy
Code

Overview

Module Structure

  module: <Toplevel Module>
  module: <Built-in Module>
  class: Class#2
inherits from
  Object ( Builtin-Module )
has properties
method: cattr_reader / 1 #4
method: cattr_writer / 1 #20
method: cattr_accessor / 2 #36

Class Hierarchy

Object ( Builtin-Module )
  Class    #2

Code

   1  # This extends Class to be able to use +cattr_accessor+ if active_support is not being used.
   2  class Class
   3    unless respond_to?(:cattr_reader)
   4      def cattr_reader(sym)
   5        class_eval(<<-EOS, __FILE__, __LINE__ + 1)
   6          unless defined? @@#{sym}
   7            @@#{sym} = nil
   8          end
   9 
  10          def self.#{sym}
  11            @@#{sym}
  12          end
  13 
  14          def #{sym}
  15            @@#{sym}
  16          end
  17        EOS
  18      end
  19 
  20      def cattr_writer(sym)
  21        class_eval(<<-EOS, __FILE__, __LINE__ + 1)
  22          unless defined? @@#{sym}
  23            @@#{sym} = nil
  24          end
  25 
  26          def self.#{sym}=(obj)
  27            @@#{sym} = obj
  28          end
  29 
  30          def #{sym}=(obj)
  31            @@#{sym} = obj
  32          end
  33        EOS
  34      end
  35 
  36      def cattr_accessor(*syms, &blk)
  37        cattr_reader(*syms)
  38        cattr_writer(*syms, &blk)
  39      end
  40    end
  41  end