Sha256: 9c3cf2921614a0e2f2a2ca448d73e7c71b25efdc381a21afd42091e87d08d3dc

Contents?: true

Size: 1.2 KB

Versions: 18

Compression:

Stored size: 1.2 KB

Contents

module SimpleNavigation
  
  # Acts as a proxy to navigation items that are passed into the SimpleNavigation::Configuration#items method. It hides the logic 
  # for finding items from the Configuration object.
  #
  class ItemsProvider
    
    attr_reader :provider
    
    # It accepts the following types of provider:
    # * methodname as symbol - the specified method should return the relevant items and has to be available in the view (a helper method)
    # * object that responds to :items
    # * enumerable object that represents the items
    #
    # See SimpleNavigation::ItemAdapter for the requirements that need to be fulfilled by the provided items.
    #
    def initialize(provider)
      @provider = provider
    end
    
    # Returns the navigation items
    def items
      if provider.instance_of?(Symbol)
        SimpleNavigation.config.context_for_eval.send(provider)
      elsif provider.respond_to?(:items)
        provider.items
      elsif provider.respond_to?(:each)
        provider
      else
        raise "items_provider either must be a symbol specifying the helper-method to call, an object with an items-method defined or an enumerable representing the items"
      end
    end
    
  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
simple-navigation-2.7.3 lib/simple_navigation/items_provider.rb
simple-navigation-2.7.2 lib/simple_navigation/items_provider.rb
simple-navigation-2.7.1 lib/simple_navigation/items_provider.rb
simple-navigation-2.7.0 lib/simple_navigation/items_provider.rb
simple-navigation-2.6.0 lib/simple_navigation/items_provider.rb
simple-navigation-2.5.4 lib/simple_navigation/items_provider.rb
simple-navigation-2.5.3 lib/simple_navigation/items_provider.rb
simple-navigation-2.5.2 lib/simple_navigation/items_provider.rb
simple-navigation-2.5.1 lib/simple_navigation/items_provider.rb
simple-navigation-2.5.0 lib/simple_navigation/items_provider.rb
simple-navigation-2.4.2 lib/simple_navigation/items_provider.rb
simple-navigation-2.4.1 lib/simple_navigation/items_provider.rb
simple-navigation-2.4.0 lib/simple_navigation/items_provider.rb
simple-navigation-2.2.3 lib/simple_navigation/items_provider.rb
simple-navigation-2.2.2 lib/simple_navigation/items_provider.rb
simple-navigation-2.2.1 lib/simple_navigation/items_provider.rb
simple-navigation-2.2.0 lib/simple_navigation/items_provider.rb
simple-navigation-2.1.0 lib/simple_navigation/items_provider.rb