Sha256: acadb8c6ea037fc96e968a0406b21d2ebc7ae4cead6db7bc9bfc1ad34352432d

Contents?: true

Size: 960 Bytes

Versions: 2

Compression:

Stored size: 960 Bytes

Contents

module ContextExposer
  class Page
    class Resource
      attr_accessor :name, :type, :controller

      def initialize name = nil, type = nil        
        self.name = name
        self.type = type if type
      end

      def type= type
        validate_type! type
        @type = type.to_sym
      end

      def name= name    
        @name = name.to_s    
        unless @type
          @type = calc_type 
        end
      end

      protected

      def page_context
        ContextExposer::PageContext.instance
      end

      def calc_type
        return nil if name.blank?
        name.to_s.plural? ? :list : :item
      end

      def validate_type! type
        unless valid_type? type
          raise ArgumentError, "type must be one of: #{valid_types}, was: #{type}"
        end
      end

      def valid_type? type
        valid_types.include? type.to_sym
      end

      def valid_types
        [:list, :item]
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
context_exposer-0.4.1 lib/context_exposer/page/resource.rb
context_exposer-0.4.0 lib/context_exposer/page/resource.rb