Class: Vedeu::Menus::Menu
- Inherits:
-
Object
- Object
- Vedeu::Menus::Menu
- Includes:
- Repositories::Model
- Defined in:
- lib/vedeu/menus/menu.rb
Overview
Converts the collection passed into a list of menu items which can be navigated using the instance methods or events provided.
Instance Attribute Summary collapse
- #collection ⇒ Array
-
#current ⇒ Fixnum
Returns the index of the value in the collection which is current.
-
#name ⇒ String
The name of the menu.
- #repository ⇒ Vedeu::Repositories::Repository included from Repositories::Model
-
#selected ⇒ Fixnum
Returns the index of the value in the collection which is selected.
Instance Method Summary collapse
-
#absent?(variable) ⇒ Boolean
included
from Common
private
Returns a boolean indicating whether a variable is nil or empty.
-
#bottom_item ⇒ Array
Sets the value of current to be the last item of the collection.
-
#current_item ⇒ void
Returns the item from the collection which shares the same index as the value of #current.
-
#defaults ⇒ Hash
private
The default values for a new instance of this class.
-
#demodulize(klass) ⇒ String
included
from Common
private
Removes the module part from the expression in the string.
-
#deputy(client = nil) ⇒ Vedeu::Menus::DSL
Returns a DSL instance responsible for defining the DSL methods of this model.
-
#deselect_item ⇒ Array
Removes the value of ‘selected`, meaning no items are selected.
-
#initialize(attributes = {}) ⇒ Vedeu::Menus::Menu
constructor
Returns a new instance of Vedeu::Menus::Menu.
-
#items ⇒ Array
Returns a new collection of items.
-
#last ⇒ Fixnum
Returns the last index of the collection.
-
#next_item ⇒ Array
Sets the value of current to be the next item in the collection until we reach the last.
-
#present?(variable) ⇒ Boolean
included
from Common
private
Returns a boolean indicating whether a variable has a useful value.
-
#prev_item ⇒ Array
Sets the value of current to be the previous item in the collection until we reach the first.
-
#select_item ⇒ Array
Sets the selected item to be the same value as the current item.
-
#selected_item ⇒ |NilClass
Returns the item from the collection which shares the same index as the value of #selected.
-
#size ⇒ Fixnum
Returns the size of the collection.
-
#snake_case(name) ⇒ String
included
from Common
private
Converts a class name to a lowercase snake case string.
-
#store ⇒ void
included
from Repositories::Model
The model instance stored in the repository.
-
#top_item ⇒ Array
Sets the value of current to be the first item of the collection.
-
#view ⇒ Array
Returns a subset of all the items.
Constructor Details
#initialize(attributes = {}) ⇒ Vedeu::Menus::Menu
Returns a new instance of Vedeu::Menus::Menu.
45 46 47 48 49 |
# File 'lib/vedeu/menus/menu.rb', line 45 def initialize(attributes = {}) defaults.merge!(attributes).each do |key, value| instance_variable_set("@#{key}", value) end end |
Instance Attribute Details
#collection ⇒ Array
14 15 16 |
# File 'lib/vedeu/menus/menu.rb', line 14 def collection @collection end |
#current ⇒ Fixnum
Returns the index of the value in the collection which is current.
21 22 23 |
# File 'lib/vedeu/menus/menu.rb', line 21 def current @current end |
#name ⇒ String
The name of the menu. Used to reference the menu throughout the application’s execution lifetime.
28 29 30 |
# File 'lib/vedeu/menus/menu.rb', line 28 def name @name end |
#repository ⇒ Vedeu::Repositories::Repository Originally defined in module Repositories::Model
#selected ⇒ Fixnum
Returns the index of the value in the collection which is selected.
35 36 37 |
# File 'lib/vedeu/menus/menu.rb', line 35 def selected @selected end |
Instance Method Details
#absent?(variable) ⇒ Boolean Originally defined in module Common
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns a boolean indicating whether a variable is nil or empty.
#bottom_item ⇒ Array
Sets the value of current to be the last item of the collection.
134 135 136 137 138 |
# File 'lib/vedeu/menus/menu.rb', line 134 def bottom_item @current = last items end |
#current_item ⇒ void
This method returns an undefined value.
Returns the item from the collection which shares the same index as the value of #current.
55 56 57 |
# File 'lib/vedeu/menus/menu.rb', line 55 def current_item @collection[@current] end |
#defaults ⇒ Hash (private)
The default values for a new instance of this class.
199 200 201 202 203 204 205 206 207 208 |
# File 'lib/vedeu/menus/menu.rb', line 199 def defaults { client: nil, collection: [], current: 0, name: '', repository: Vedeu., selected: nil, } end |
#demodulize(klass) ⇒ String Originally defined in module Common
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Removes the module part from the expression in the string.
#deputy(client = nil) ⇒ Vedeu::Menus::DSL
Returns a DSL instance responsible for defining the DSL methods of this model.
67 68 69 |
# File 'lib/vedeu/menus/menu.rb', line 67 def deputy(client = nil) Vedeu::Menus::DSL.new(self, client) end |
#deselect_item ⇒ Array
Removes the value of ‘selected`, meaning no items are selected.
174 175 176 177 178 |
# File 'lib/vedeu/menus/menu.rb', line 174 def deselect_item @selected = nil items end |
#items ⇒ Array
Returns a new collection of items. Each element of the collection is of the format:
[selected, current, item]
‘selected` is a boolean indicating whether the item is selected. `current` is a boolean indicating whether the item is current. `item` is the item itself.
93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
# File 'lib/vedeu/menus/menu.rb', line 93 def items items = [] @collection.each_with_index do |item, index| if index == @current && index == @selected items << [true, true, item] elsif index == @current items << [false, true, item] elsif index == @selected items << [true, false, item] else items << [false, false, item] end end items end |
#last ⇒ Fixnum
Returns the last index of the collection.
183 184 185 |
# File 'lib/vedeu/menus/menu.rb', line 183 def last @collection.size - 1 end |
#next_item ⇒ Array
Sets the value of current to be the next item in the collection until we reach the last.
144 145 146 147 148 |
# File 'lib/vedeu/menus/menu.rb', line 144 def next_item @current += 1 if @current < last items end |
#present?(variable) ⇒ Boolean Originally defined in module Common
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns a boolean indicating whether a variable has a useful value.
#prev_item ⇒ Array
Sets the value of current to be the previous item in the collection until we reach the first.
154 155 156 157 158 |
# File 'lib/vedeu/menus/menu.rb', line 154 def prev_item @current -= 1 if @current > 0 items end |
#select_item ⇒ Array
Sets the selected item to be the same value as the current item.
164 165 166 167 168 |
# File 'lib/vedeu/menus/menu.rb', line 164 def select_item @selected = @current items end |
#selected_item ⇒ |NilClass
Returns the item from the collection which shares the same index as the value of #selected.
75 76 77 78 79 |
# File 'lib/vedeu/menus/menu.rb', line 75 def selected_item return nil unless @selected @collection[@selected] end |
#size ⇒ Fixnum
Returns the size of the collection.
190 191 192 |
# File 'lib/vedeu/menus/menu.rb', line 190 def size @collection.size end |
#snake_case(name) ⇒ String Originally defined in module Common
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Converts a class name to a lowercase snake case string.
#store ⇒ void Originally defined in module Repositories::Model
Perhaps some validation could be added here?
If a block is given, store the model, return the model after yielding.
This method returns an undefined value.
Returns The model instance stored in the repository.
#top_item ⇒ Array
Sets the value of current to be the first item of the collection.
124 125 126 127 128 |
# File 'lib/vedeu/menus/menu.rb', line 124 def top_item @current = 0 items end |
#view ⇒ Array
Returns a subset of all the items.
116 117 118 |
# File 'lib/vedeu/menus/menu.rb', line 116 def view items[@current, @collection.size] end |