Sha256: 8f4af0cb91063e98df445612b7ffcdfaf9701858fea3b7046348a2ac4d4002b2

Contents?: true

Size: 1.05 KB

Versions: 4

Compression:

Stored size: 1.05 KB

Contents

module Cockpit
  
  def self.included(base)
    base.extend(ClassMethods)
    base.send(:include, InstanceMethods)
  end
  
  module ClassMethods
    def cockpit(options = {}, &block)
      if block_given?
        options = {:store => options.to_sym} unless options.is_a?(Hash)
        @cockpit = Cockpit::Settings.define!(options.merge(:for => self), &block)

        @cockpit.roots.map(&:key).flatten.each do |key|
          define_method key do
            send(:cockpit).send(key)
          end
          
          define_method "#{key}=" do |value|
            send(:cockpit).send("#{key}=", value)
          end
          
          define_method "#{key}?" do
            send(:cockpit).present?(key)
          end
        end
      end
      
      @cockpit
    end
    
    unless respond_to?(:key)
      def key(*args)
        
      end
    end
  end
  
  module InstanceMethods
    def cockpit(key = nil)
      @cockpit ||= Cockpit::Settings.new(:record => self)
      if key
        @cockpit.definition(key)
      else
        @cockpit
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
cockpit-0.2.4.1 lib/cockpit/core/include.rb
cockpit-0.2.4 lib/cockpit/core/include.rb
cockpit-0.2.3 lib/cockpit/core/include.rb
cockpit-0.2.2 lib/cockpit/core/include.rb