Sha256: ea97d2c36e613dc2f0d935573f321ddbec6f8934e69f9cb9218f46f857996e88

Contents?: true

Size: 1.87 KB

Versions: 1

Compression:

Stored size: 1.87 KB

Contents

module Exposure
  module Configuration
    module Options
      def allow_actions!
        if @_exposed_resource_options[:only]
          @_exposed_resource_options[:except] = Patterns::Resources::DefaultActions - @_exposed_resource_options[:only]
        end
        
        if @_exposed_resource_options[:except]
          @_exposed_resource_options[:except].each do |action|
            undef_method(action)
          end
        end
      end
      
      def allow_formats!
        formats = @_exposed_resource_options[:formats] || [:html, :xml] 
      end
      
      def name!
        self.resource_name  = @_exposed_resource_name.to_s.singularize
        self.resources_name = @_exposed_resource_name.to_s
      end
      
      def build_default_finders!
        if nesting = @_exposed_resource_options[:nested]
          self.build_nested_default_finders!(nesting)
          return 
        end
        
        self.parent_model = self.resource_name.camelize.constantize
        build_default_finders(self.resource_name, [])
        self.member_nesting = [ [self.resource_name.to_sym] ]
        self.collection_nesting = [ [self.resources_name.to_sym] ]
      end
      
      def build_default_builders!
        nesting = @_exposed_resource_options[:nested] || []
        nesting = nesting.clone
        nesting.shift
        build_default_builder(self.resources_name, nesting)
      end
      
      def build_nested_default_finders!(nesting)
        nesting = nesting.clone
        self.parent_model = nesting.shift.to_s.singularize.camelize.constantize
        
        build_default_finders(self.resources_name, nesting)
        
        nesting = nesting.collect! {|sym| [sym.to_s.singularize.to_sym, sym]}
        
        self.member_nesting = nesting + [ [self.resource_name.to_sym] ]
        self.collection_nesting = nesting + [ [self.resources_name.to_sym] ]
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
exposure-0.1.0 lib/exposure/options.rb