Sha256: 7aff8ee0b594500f4d249b2642189bb79b2f2d96f56b6ba06b3d58d1beee567d

Contents?: true

Size: 988 Bytes

Versions: 2

Compression:

Stored size: 988 Bytes

Contents

module Vedeu

  # Repository for storing and retrieving defined menus.
  #
  # @api private
  module Menus

    include Repository
    extend self

    # Stores the menu attributes defined by the API.
    #
    # @param attributes [Hash]
    # @return [Hash|MissingRequired]
    def add(attributes)
      validate_attributes!(attributes)

      Vedeu.log("Registering menu: '#{attributes[:name]}'")

      attributes.merge!({ items: model.new(attributes[:items]) })

      storage.store(attributes[:name], attributes)
    end

    # Access a menu by name.
    #
    # @param name [String]
    # @return [Vedeu::Menu]
    def use(name)
      find(name).fetch(:items)
    end

    private

    # @return [Class] The model class for this repository.
    def model
      Vedeu::Menu
    end

    # Returns an empty collection ready for the storing of menus by name with
    # associated menu instance.
    #
    # @return [Hash]
    def in_memory
      {}
    end

  end # Menus

end # Vedeu

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
vedeu-0.2.12 lib/vedeu/repositories/menus.rb
vedeu-0.2.11 lib/vedeu/repositories/menus.rb