Sha256: 4f022799a2c1e113975321847cc29badd30258b2cd6f875e812d086444c09912

Contents?: true

Size: 1.29 KB

Versions: 11

Compression:

Stored size: 1.29 KB

Contents

require File.dirname(__FILE__) + '/base_view_spec'
require File.dirname(__FILE__) + '/model_view_spec'
require File.dirname(__FILE__) + '/properties_view_spec'
require File.dirname(__FILE__) + '/custom_view_spec'
require File.dirname(__FILE__) + '/raw_view_spec'


module CouchPotato
  module View
    module CustomViews

      def self.included(base)
        base.extend ClassMethods
      end

      module ClassMethods
        # Declare a CouchDB view, for examples on how to use see the *ViewSpec classes in CouchPotato::View
        def views
          @views ||= {}
        end

        def execute_view(view_name, view_parameters)
          view_spec_class(views[view_name][:type]).new(self, view_name, views[view_name], view_parameters)
        end

        def view(view_name, options)
          view_name = view_name.to_s
          views[view_name] = options
          method_str = "def #{view_name}(view_parameters = {}); execute_view(\"#{view_name}\", view_parameters); end"
          self.instance_eval(method_str)
        end

        def view_spec_class(type)
          if type && type.is_a?(Class)
            type
          else
            name = type.nil? ? 'Model' : type.to_s.camelize
            CouchPotato::View.const_get("#{name}ViewSpec")
          end
        end
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 4 rubygems

Version Path
andrewtimberlake-couch_potato-0.2.8.1 lib/couch_potato/view/custom_views.rb
andrewtimberlake-couch_potato-0.2.8.2 lib/couch_potato/view/custom_views.rb
andrewtimberlake-couch_potato-0.2.8.3 lib/couch_potato/view/custom_views.rb
andrewtimberlake-couch_potato-0.2.8.4 lib/couch_potato/view/custom_views.rb
langalex-couch_potato-0.2.11 lib/couch_potato/view/custom_views.rb
langalex-couch_potato-0.2.12 lib/couch_potato/view/custom_views.rb
langalex-couch_potato-0.2.7 lib/couch_potato/view/custom_views.rb
langalex-couch_potato-0.2.8 lib/couch_potato/view/custom_views.rb
langalex-couch_potato-0.2.9 lib/couch_potato/view/custom_views.rb
thefool808-couch_potato-0.2.7 lib/couch_potato/view/custom_views.rb
couch_potato-0.2.12 lib/couch_potato/view/custom_views.rb