Class: Gema6::Lista
Overview
Clase que representa a una Lista doblemente enlazada para poder enlazar los menús.
Instance Attribute Summary collapse
-
#tail ⇒ Object
readonly
Returns the value of attribute tail.
-
#top ⇒ Object
readonly
Returns the value of attribute top.
Instance Method Summary collapse
- #domingo(menus) ⇒ Object
-
#each ⇒ Object
Define la forma en la que se itera por la lista a través del método each.
-
#initialize(&block) ⇒ Lista
constructor
A new instance of Lista.
-
#insert_head(node) ⇒ Object
Inserta un nodo (o conjunto de nodos) por el inicio.
-
#insert_tail(node) ⇒ Object
Inserta un nodo (o conjunto de nodos) por el final.
- #jueves(menus) ⇒ Object
- #lunes(menus) ⇒ Object
- #martes(menus) ⇒ Object
- #menu(options = {}) ⇒ Object
- #miercoles(menus) ⇒ Object
- #sabado(menus) ⇒ Object
-
#to_s ⇒ Object
Devuelve una cadena que representa la lista y su contenido.
- #viernes(menus) ⇒ Object
Constructor Details
#initialize(&block) ⇒ Lista
Returns a new instance of Lista.
7 8 9 10 11 12 13 14 |
# File 'lib/gema6/lista.rb', line 7 def initialize(&block) @top @tail if (block_given?) instance_eval &block end end |
Instance Attribute Details
#tail ⇒ Object (readonly)
Returns the value of attribute tail.
6 7 8 |
# File 'lib/gema6/lista.rb', line 6 def tail @tail end |
#top ⇒ Object (readonly)
Returns the value of attribute top.
6 7 8 |
# File 'lib/gema6/lista.rb', line 6 def top @top end |
Instance Method Details
#domingo(menus) ⇒ Object
123 124 125 |
# File 'lib/gema6/lista.rb', line 123 def domingo() () end |
#each ⇒ Object
Define la forma en la que se itera por la lista a través del método each.
83 84 85 86 87 88 89 |
# File 'lib/gema6/lista.rb', line 83 def each @actual = @top while (@actual != nil) do yield @actual.value @actual = @actual.next end end |
#insert_head(node) ⇒ Object
Inserta un nodo (o conjunto de nodos) por el inicio.
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/gema6/lista.rb', line 17 def insert_head(node) # Si el nodo es de tipo array, hay que insertar sus elementos # sino, insertamos el nodo individualmente if node.instance_of? Array node.each { |element| insert_head(element) } elsif node.instance_of? Node node.next = @top # Si habia un nodo top, sustituir su atributo "previous" y apuntar al de ahora if (@top != nil) @top.previous = node end # Asignar ahora a @top el nodo @top = node # Si solo hay un nodo, debe ser tanto tail como head if (@tail == nil) @tail = @top end end end |
#insert_tail(node) ⇒ Object
Inserta un nodo (o conjunto de nodos) por el final.
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/gema6/lista.rb', line 42 def insert_tail(node) # Si el nodo es de tipo array, hay que insertar sus elementos # sino, insertamos el nodo individualmente if node.instance_of? Array node.each { |element| insert_tail(element) } elsif node.instance_of? Node node.previous = @tail # Si habia un nodo tail, sustituir su atributo "next" y apuntar al de ahora if (@tail != nil) @tail.next = node end @tail = node # Si solo hay un nodo, debe ser tanto tail como head if (@top == nil) @top = @tail end end end |
#jueves(menus) ⇒ Object
111 112 113 |
# File 'lib/gema6/lista.rb', line 111 def jueves() () end |
#lunes(menus) ⇒ Object
99 100 101 |
# File 'lib/gema6/lista.rb', line 99 def lunes() () end |
#martes(menus) ⇒ Object
103 104 105 |
# File 'lib/gema6/lista.rb', line 103 def martes() () end |
#menu(options = {}) ⇒ Object
91 92 93 94 95 96 97 |
# File 'lib/gema6/lista.rb', line 91 def ( = {}) insert_head(Node.new([:desayuno], nil, nil)) insert_head(Node.new([:mediama], nil, nil)) insert_head(Node.new([:almuerzo], nil, nil)) insert_head(Node.new([:merienda], nil, nil)) insert_head(Node.new([:cena], nil, nil)) end |
#miercoles(menus) ⇒ Object
107 108 109 |
# File 'lib/gema6/lista.rb', line 107 def miercoles() () end |
#sabado(menus) ⇒ Object
119 120 121 |
# File 'lib/gema6/lista.rb', line 119 def sabado() () end |
#to_s ⇒ Object
Devuelve una cadena que representa la lista y su contenido.
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/gema6/lista.rb', line 65 def to_s @resultado = "" @numeroMenu = 1 @nodoActual = @top #Iterar en la lista hasta llegar al final (nil) y hacerles to_s while @nodoActual != nil do @resultado << @numeroMenu.to_s << ") " @resultado << @nodoActual.value.to_s @resultado << "\n\n" @nodoActual = @nodoActual.next @numeroMenu += 1 end @resultado end |
#viernes(menus) ⇒ Object
115 116 117 |
# File 'lib/gema6/lista.rb', line 115 def viernes() () end |