Class: Vedeu::Menus::DSL

Inherits:
Object
  • Object
show all
Includes:
DSL
Defined in:
lib/vedeu/menus/dsl.rb

Overview

Provides the mechanism to create menus within client applications and use events to drive them.

Instance Attribute Summary

Attributes included from DSL

#client, #model

Instance Method Summary collapse

Methods included from DSL

#attributes, #method_missing

Constructor Details

#initialize(model, client = nil) ⇒ Vedeu::Menus::DSL

Return a new instance of Vedeu::Menus::DSL.

Parameters:



17
18
19
20
# File 'lib/vedeu/menus/dsl.rb', line 17

def initialize(model, client = nil)
  @model  = model
  @client = client
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class Vedeu::DSL

Instance Method Details

#item(element) ⇒ Array Also known as: item=

Add an individual item to the menu.

Parameters:

  • element (Object)

    An object you wish to add to the collection.

    Vedeu.menu ‘my_menu’ do

    item SomeClass.new
    item SomeClass.new
    

    end

Returns:

  • (Array)


33
34
35
# File 'lib/vedeu/menus/dsl.rb', line 33

def item(element)
  model.collection << element
end

#items(collection = []) ⇒ Array Also known as: items=

Define the items for the menu. Most powerful when used with one of your model classes.

In the ‘my_playlist’ example below, your ‘Track` model may return a collection of tracks to populate the menu.

Vedeu.menu 'my_menu' do
  items [:item_1, :item_2, :item_3]
end

Vedeu.menu 'my_playlist' do
  items Track.all_my_favourites
end

Parameters:

  • collection (Array<Object>) (defaults to: [])

    A collection of objects which make up the menu items.

Returns:

  • (Array)


55
56
57
# File 'lib/vedeu/menus/dsl.rb', line 55

def items(collection = [])
  model.collection = collection
end

#name(value) ⇒ String Also known as: name=

The name of the menu. Used to reference the menu throughout your application’s execution lifetime.

Vedeu.menu do
  name 'my_menu'
  # ...
end

Parameters:

  • value (String)

Returns:

  • (String)


70
71
72
# File 'lib/vedeu/menus/dsl.rb', line 70

def name(value)
  model.name = value
end