Class: Plato

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

Overview

Representación de un plato, es decir de un conjunto de alimentos definido en lenguaje natural

Author:

  • Eugenio José Gonzalez Luis

Since:

  • 1.0.0

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(nombre, &bloque) ⇒ Plato

Constructor de Plato

Parameters:

  • Nombre (String)

    nombre del Plato

  • bloque (Block)

    Codigo que dicta los ingredientes del plato

Since:

  • 1.0.0



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/alimento/Plato.rb', line 17

def initialize(nombre, &bloque)
    @nombre = nombre
    @tabla = [ AlimentoCategorizable.new("Huevo frito","Huevos y Lacteos", 14.1, 0.0, 19.5),
    AlimentoCategorizable.new("Leche vaca","Huevos y Lacteos" , 3.3, 4.8, 3.2),
    AlimentoCategorizable.new("Yogurt","Huevos y Lacteos", 3.8, 4.9, 3.8),
    AlimentoCategorizable.new("Cerdo","Carnes y Derivados", 21.5, 0.0, 6.3),
    AlimentoCategorizable.new("Ternera","Carnes y Derivados", 21.1, 0.0, 3.1),
    AlimentoCategorizable.new("Pollo","Carnes y Derivados", 20.6, 0.0, 5.6),
    AlimentoCategorizable.new("Bacalao","Pescados y Mariscos", 17.7, 0.0, 0.4),
    AlimentoCategorizable.new("Atun","Pescados y Mariscos", 21.5, 0.0, 15.5),
    AlimentoCategorizable.new("Salmon","Pescados y Mariscos", 19.9, 0.0, 13.6),
    AlimentoCategorizable.new("Aceite de oliva","Alimentos Grasos", 0.0, 0.2, 99.6),
    AlimentoCategorizable.new("Mantequilla","Alimentos Grasos", 0.7, 0.0, 83.2),
    AlimentoCategorizable.new("Chocolate","Alimentos Grasos", 5.3, 47.0, 30.0),
    AlimentoCategorizable.new("Azucar","Alimentos Ricos en Carbohidratos", 0.0, 99.8, 0.0),
    AlimentoCategorizable.new("Arroz","Alimentos Ricos en Carbohidratos", 6.8, 77.7, 0.6),
    AlimentoCategorizable.new("Lentejas","Alimentos Ricos en Carbohidratos", 23.5, 52.0, 1.4),
    AlimentoCategorizable.new("Papas","Alimentos Ricos en Carbohidratos", 2.0, 15.4, 0.1),
    AlimentoCategorizable.new("Tomate","Verduras y Hortalizas", 1.0, 3.5, 0.2),
    AlimentoCategorizable.new("Cebolla","Verduras y Hortalizas", 1.3, 5.8, 0.3),
    AlimentoCategorizable.new("Calabaza","Verduras y Hortalizas", 1.1, 4.8, 0.1),
    AlimentoCategorizable.new("Manzana","Frutas", 0.3, 12.4, 0.4),
    AlimentoCategorizable.new("Platanos","Frutas", 1.2, 21.4, 0.2),
    AlimentoCategorizable.new("Pera","Frutas", 0.5 ,12.7, 0.3)]
    @porciones = []
    @ingredientes = []
    if block_given?
        if bloque.arity == 1
            yield self
        else
            instance_eval(&bloque)
        end
    end
end

Instance Attribute Details

#ArrayObject (readonly)

ingredientes Conjunto de Alimentos de un plato

Returns:

  • (Object)

    the current value of Array



9
10
11
# File 'lib/alimento/Plato.rb', line 9

def Array
  @Array
end

#ingredientesObject (readonly)

Since:

  • 1.0.0



10
11
12
# File 'lib/alimento/Plato.rb', line 10

def ingredientes
  @ingredientes
end

#nombreObject (readonly)

Since:

  • 1.0.0



10
11
12
# File 'lib/alimento/Plato.rb', line 10

def nombre
  @nombre
end

#porcionesObject (readonly)

Since:

  • 1.0.0



10
11
12
# File 'lib/alimento/Plato.rb', line 10

def porciones
  @porciones
end

#StringObject (readonly)

nombre Nombre del plato

Returns:

  • (Object)

    the current value of String



9
10
11
# File 'lib/alimento/Plato.rb', line 9

def String
  @String
end

#tablaObject (readonly)

Since:

  • 1.0.0



10
11
12
# File 'lib/alimento/Plato.rb', line 10

def tabla
  @tabla
end

Instance Method Details

#aceite(nombre, options = {}) ⇒ Object

Añade una aceite al plato

Parameters:

  • nombre (String)

    nombre de la fruta

  • options (defaults to: {})

    cantidad de un alimento

Since:

  • 1.0.0



141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
# File 'lib/alimento/Plato.rb', line 141

def aceite(nombre, options = {})
    tabla.each_with_index do |s , i|
        if (s.nombre == nombre)
            @ingredientes << tabla[i]
            break
        end
    end
    if (options[:gramos])
        @porciones << options[:gramos]
    else if (options[:porciones])
        dummyString = options[:porciones]
        @porciones << dummyString.scan(/\d+\.\d+/).first.to_f
    end
    end
end

#fruta(nombre, options = {}) ⇒ Object

Añade una fruta al plato

Parameters:

  • nombre (String)

    nombre de la fruta

  • options (defaults to: {})

    cantidad de un alimento

Since:

  • 1.0.0



69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/alimento/Plato.rb', line 69

def fruta(nombre, options = {})
    tabla.each_with_index do |s , i|
        if (s.nombre == nombre)
            @ingredientes << tabla[i]
            break
        end
    end
    if (options[:gramos])
        @porciones << options[:gramos]
    else if (options[:porciones])
        dummyString = options[:porciones]
        @porciones << dummyString.scan(/\d+\.\d+/).first.to_f
    end
    end
end

#granos_integrales(nombre, options = {}) ⇒ Object

Añade un grano al plato al plato

Parameters:

  • nombre (String)

    nombre de la fruta

  • options (defaults to: {})

    cantidad de un alimento

Since:

  • 1.0.0



123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
# File 'lib/alimento/Plato.rb', line 123

def granos_integrales(nombre, options = {})
    tabla.each_with_index do |s , i|
        if (s.nombre == nombre)
            @ingredientes << tabla[i]
            break
        end
    end
    if (options[:gramos])
        @porciones << options[:gramos]
    else if (options[:porciones])
        dummyString = " (#{options[:porciones]})"
        @porciones << dummyString.scan(/\d+\.\d+/).first.to_f
    end
    end
end

#proteinas(nombre, options = {}) ⇒ Object

Añade una proteina al plato

Parameters:

  • nombre (String)

    nombre de la fruta

  • options (defaults to: {})

    cantidad de un alimento

Since:

  • 1.0.0



105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
# File 'lib/alimento/Plato.rb', line 105

def proteinas(nombre, options = {})
    tabla.each_with_index do |s , i|
        if (s.nombre == nombre)
            @ingredientes << tabla[i]
            break
        end
    end
    if (options[:gramos])
        @porciones << options[:gramos]
    else if (options[:porciones])
        dummyString = options[:porciones]
        @porciones << dummyString.scan(/\d+\.\d+/).first.to_f
    end
    end
end

#to_sString

Convierte el objeto en un String

Returns:

  • (String)

    descripción del plato en una cadena de caracteres

Since:

  • 1.0.0



54
55
56
57
58
59
60
61
62
63
64
# File 'lib/alimento/Plato.rb', line 54

def to_s
    texto = @nombre
    texto << "\n#{'=' * @nombre.size}\n"
    texto << "Composicion nutricional: \n"
    @ingredientes.each_with_index do |i , p|
        texto << i.to_s
        texto << "#{i.kcal * @porciones[p]}"
        texto << "\n"
    end
    return texto
end

#vegetal(nombre, options = {}) ⇒ Object

Añade un vegetal al plato

Parameters:

  • nombre (String)

    nombre de la fruta

  • options (defaults to: {})

    cantidad de un alimento

Since:

  • 1.0.0



87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
# File 'lib/alimento/Plato.rb', line 87

def vegetal(nombre, options = {})
    tabla.each_with_index do |s , i|
        if (s.nombre == nombre)
            @ingredientes << tabla[i]
            break
        end
    end
    if (options[:gramos])
        @porciones << options[:gramos]
    else if (options[:porciones])
        dummyString = options[:porciones]
        @porciones << dummyString.scan(/\d+\.\d+/).first.to_f
    end
    end
end