aboutsummaryrefslogblamecommitdiffstats
path: root/actionwebservice/lib/action_web_service/support/class_inheritable_options.rb
blob: 4d1c2ed471ac859bf2752131c3829f066d2b1b50 (plain) (tree)

























                                                      
class Class # :nodoc:
  def class_inheritable_option(sym, default_value=nil)
    write_inheritable_attribute sym, default_value
    class_eval <<-EOS
      def self.#{sym}(value=nil)
        if !value.nil?
          write_inheritable_attribute(:#{sym}, value)
        else
          read_inheritable_attribute(:#{sym})
        end
      end
      
      def self.#{sym}=(value)
        write_inheritable_attribute(:#{sym}, value)
      end

      def #{sym}
        self.class.#{sym}
      end

      def #{sym}=(value)
        self.class.#{sym} = value
      end
    EOS
  end
end