def items(items_provider = nil, &block)
      if (items_provider && block) || (items_provider.nil? && block.nil?)
        fail('please specify either items_provider or block, but not both')
      end

      self.primary_navigation = ItemContainer.new

      if block
        block.call primary_navigation
      else
        primary_navigation.items = ItemsProvider.new(items_provider).items
      end
    end
def items(items_provider = nil, &block)
      if (items_provider && block) || (items_provider.nil? && block.nil?)
        fail('please specify either items_provider or block, but not both')
      end

      self.primary_navigation = ItemContainer.new

      if block
        block.call primary_navigation
      else
        primary_navigation.items = ItemsProvider.new(items_provider).items
      end
    end
This is the main method for specifying the navigation items.
 It can be used in two ways:

 1. Declaratively specify your items in the config/navigation.rb file
    using a block. It then yields an SimpleNavigation::ItemContainer
    for adding navigation items.
 2. Directly provide your items to the method (e.g. when loading your
    items from the database).

 ==== Example for block style (configuration file)
   config.items do |primary|
     primary.item :my_item, 'My item', my_item_path
     ...
   end

 ==== To consider when directly providing items
 items_provider should be:
 * a methodname (as symbol) that returns your items. The method needs to
   be available in the view (i.e. a helper method)
 * an object that responds to :items
 * an enumerable containing your items
 The items you specify have to fullfill certain requirements.
 See SimpleNavigation::ItemAdapter for more details.