Class: Plato

Inherits:
Object
  • Object
show all
Defined in:
lib/prct06/Plato.rb

Constant Summary collapse

@@lista =
Note:

Lista de alimentos para la costrucción de los platos

Lista.new()
@@equGram =
Note:

La equivalencia de las diferentes palabras en gramos

{ "cucharadas"=>1.8,"piezas pequeñas"=>7,"taza"=>6,"cucharón"=>4,"pieza"=>10,"cucharada"=>1.8,  "piezas"=>10 }

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(nombreIn, &bloque) ⇒ Plato

Returns a new instance of Plato.



79
80
81
82
83
84
85
86
87
88
89
90
# File 'lib/prct06/Plato.rb', line 79

def initialize nombreIn, &bloque
    @nombre = nombreIn 
    @valor_calorico = 0
    
    @vegetales = []
    @frutas = []
    @cereales = []
    @proteinas = []
    @aceites = []
    
    instance_eval(&bloque)
end

Instance Attribute Details

#aceitesObject

Returns the value of attribute aceites.



4
5
6
# File 'lib/prct06/Plato.rb', line 4

def aceites
  @aceites
end

#cerealesObject

Returns the value of attribute cereales.



4
5
6
# File 'lib/prct06/Plato.rb', line 4

def cereales
  @cereales
end

#frutasObject

Returns the value of attribute frutas.



4
5
6
# File 'lib/prct06/Plato.rb', line 4

def frutas
  @frutas
end

#nombreObject

Returns the value of attribute nombre.



4
5
6
# File 'lib/prct06/Plato.rb', line 4

def nombre
  @nombre
end

#proteinasObject

Returns the value of attribute proteinas.



4
5
6
# File 'lib/prct06/Plato.rb', line 4

def proteinas
  @proteinas
end

#valor_caloricoObject

Returns the value of attribute valor_calorico.



4
5
6
# File 'lib/prct06/Plato.rb', line 4

def valor_calorico
  @valor_calorico
end

#vegetalesObject

Returns the value of attribute vegetales.



4
5
6
# File 'lib/prct06/Plato.rb', line 4

def vegetales
  @vegetales
end

Instance Method Details

#aceite(nombre_al, opcion = {}) ⇒ Object

Note:

Función para añadir correctamente el aceite desde dls

Parameters:

  • nombre_al (Strign)

    , opcion



163
164
165
166
167
168
169
170
171
172
173
# File 'lib/prct06/Plato.rb', line 163

def aceite nombre_al, opcion = {}
    cant = 0
    alimento = @@lista.detect { |i| nombre_al == i.nombre }
    if opcion[:gramos]
       cant = opcion[:gramos]
    elsif opcion[:porcion]
        cant = get_cant opcion[:porcion]
    end
    @valor_calorico += cant*alimento.valor_calorico
    @aceites.push([alimento, (cant*alimento.valor_calorico).round(3)])
end

#cereal(nombre_alimento, opcion = {}) ⇒ Object

Note:

Función para añadir correctamente los cereales desde dls

Parameters:

  • nombre_alimento (Strign)

    , opcion



135
136
137
138
139
140
141
142
143
144
145
# File 'lib/prct06/Plato.rb', line 135

def cereal nombre_alimento, opcion = {}
    cant = 0
    alimento = @@lista.detect { |i| nombre_alimento == i.nombre }
    if opcion[:gramos]
       cant = opcion[:gramos]
    elsif opcion[:porcion]
        cant = get_cant opcion[:porcion]
    end
    @valor_calorico += cant*alimento.valor_calorico
    @cereales.push([alimento, (cant*alimento.valor_calorico).round(3)])
end

#fruta(nombre_al, opcion = {}) ⇒ Object

Note:

Función para añadir correctamente las frutas desde dls

Parameters:

  • nombre_al (Strign)

    , opcion



121
122
123
124
125
126
127
128
129
130
131
# File 'lib/prct06/Plato.rb', line 121

def fruta nombre_al, opcion = {}
    cant = 0
    alimento = @@lista.detect { |i| nombre_al == i.nombre }
    if opcion[:gramos]
       cant = opcion[:gramos]
    elsif opcion[:porcion]
        cant = get_cant opcion[:porcion]
    end
    @valor_calorico += cant*alimento.valor_calorico
    @frutas.push([alimento, (cant*alimento.valor_calorico).round(3)])
end

#get_cant(porcion) ⇒ Object

Note:

Función para la cantidad de alimento que añadimos al plato

Parameters:

  • porcion (String)


108
109
110
111
112
113
114
115
116
117
# File 'lib/prct06/Plato.rb', line 108

def get_cant porcion
    #La cantidad está en el primer caracter
    num = porcion.split[0].to_r
    cad = ""
    #Formateamos correctamente la cadena 
    porcion.split[1..cad.length-1].each do |i|
        cad += i + " "
    end 
    cant = num * @@equGram[cad.chomp ' ']
end

#proteina(nombre_al, opcion = {}) ⇒ Object

Note:

Función para añadir correctamente los proteinas desde dls

Parameters:

  • nombre_al (Strign)

    , opcio



149
150
151
152
153
154
155
156
157
158
159
# File 'lib/prct06/Plato.rb', line 149

def proteina nombre_al, opcion = {}
    cant = 0
    alimento = @@lista.detect { |i| nombre_al == i.nombre }
    if opcion[:gramos]
       cant = opcion[:gramos]
    elsif opcion[:porcion]
        cant = get_cant opcion[:porcion]
    end
    @valor_calorico += cant*alimento.valor_calorico
    @proteinas.push([alimento, (cant*alimento.valor_calorico).round(3)])
end

#to_sObject

Note:

Función para mostrar el contenido de la lista.

Returns Lista formateada en una cadena para su visualización.

Returns:

  • Lista formateada en una cadena para su visualización.



177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
# File 'lib/prct06/Plato.rb', line 177

def to_s
    salida = @nombre + "\n"
    salida += "=============================================================\n"
    salida += "Composición nutricional: \n"
    salida += "\tglúcidos proteínas lípidos \tgrupo\t\t\t valor energético\n"
    
    for i in 0..@vegetales.length-1 do
        salida += @vegetales[i][0].to_s + "\t\t" + @vegetales[i][1].to_s + "\n"
    end 
    
    for i in 0..@frutas.length-1 do
        salida += @frutas[i][0].to_s + "\t\t" + @frutas[i][1].to_s + "\n"
    end 
    
    for i in 0..@cereales.length-1 do
        salida += @cereales[i][0].to_s + "\t\t" + @cereales[i][1].to_s + "\n"
    end 
    
    for i in 0..@proteinas.length-1 do
        salida += @proteinas[i][0].to_s + "\t\t" + @proteinas[i][1].to_s + "\n"
    end 
    
    for i in 0..@aceites.length-1 do
        salida += @aceites[i][0].to_s + "\t\t" + @aceites[i][1].to_s + "\n"
    end 
    
    salida += "Valor energetico = " + valor_calorico.to_s
    salida
end

#vegetal(nombre_al, opcion = {}) ⇒ Object

Note:

Función para añadir correctamente los vegetales desde dls

Parameters:

  • nombre_al (String)

    , opcion



94
95
96
97
98
99
100
101
102
103
104
# File 'lib/prct06/Plato.rb', line 94

def vegetal nombre_al, opcion = {}
    cant = 0
    alimento = @@lista.detect { |i| nombre_al == i.nombre }
    if opcion[:gramos]
        cant = options[:gramos]
    elsif opcion[:porcion]
        cant = get_cant opcion[:porcion]
    end
    @valor_calorico += cant*alimento.valor_calorico
    @vegetales.push([alimento, (cant*alimento.valor_calorico).round(3)])
end