class Plato

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 @attr_reader String nombre Nombre del plato @attr_reader Array ingredientes Conjunto de Alimentos de un plato @attr_reader Array porciones Cantidad de cada alimento de un plato @attr_reader Array tabla todos los alimentos posibles

Attributes

ingredientes[R]
nombre[R]
porciones[R]
tabla[R]

Public Class Methods

new(nombre) { |self| ... } click to toggle source

Constructor de Plato @param [String] Nombre nombre del Plato @param [Block] bloque Codigo que dicta los ingredientes del plato

@return [Plato] Devuelve el objeto creado de clase Plato

# 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

Public Instance Methods

aceite(nombre, options = {}) click to toggle source

Añade una aceite al plato @param [String] nombre nombre de la fruta @param options cantidad de un alimento

# 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 = {}) click to toggle source

Añade una fruta al plato @param [String] nombre nombre de la fruta @param options cantidad de un alimento

# 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 = {}) click to toggle source

Añade un grano al plato al plato @param [String] nombre nombre de la fruta @param options cantidad de un alimento

# 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 = {}) click to toggle source

Añade una proteina al plato @param [String] nombre nombre de la fruta @param options cantidad de un alimento

# 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_s() click to toggle source

Convierte el objeto en un String @return [String] descripción del plato en una cadena de caracteres

# 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 = {}) click to toggle source

Añade un vegetal al plato @param [String] nombre nombre de la fruta @param options cantidad de un alimento

# 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