Sha256: ce010bd33e5e658e790f2100bd99611c6acdd8dcde594ecdaefb191ebfe5af22

Contents?: true

Size: 1.23 KB

Versions: 14

Compression:

Stored size: 1.23 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.is_a?(Symbol)
        SimpleNavigation.context_for_eval.send(provider)
      elsif provider.respond_to?(:items)
        provider.items
      elsif provider.respond_to?(:each)
        provider
      else
        fail('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

14 entries across 14 versions & 1 rubygems

Version Path
simple-navigation-4.4.0 lib/simple_navigation/items_provider.rb
simple-navigation-4.3.0 lib/simple_navigation/items_provider.rb
simple-navigation-4.2.0 lib/simple_navigation/items_provider.rb
simple-navigation-4.1.0 lib/simple_navigation/items_provider.rb
simple-navigation-4.0.5 lib/simple_navigation/items_provider.rb
simple-navigation-4.0.4 lib/simple_navigation/items_provider.rb
simple-navigation-4.0.3 lib/simple_navigation/items_provider.rb
simple-navigation-4.0.2 lib/simple_navigation/items_provider.rb
simple-navigation-4.0.1 lib/simple_navigation/items_provider.rb
simple-navigation-4.0.0 lib/simple_navigation/items_provider.rb
simple-navigation-3.14.0 lib/simple_navigation/core/items_provider.rb
simple-navigation-3.13.0 lib/simple_navigation/core/items_provider.rb
simple-navigation-3.12.2 lib/simple_navigation/core/items_provider.rb
simple-navigation-3.12.1 lib/simple_navigation/core/items_provider.rb