class Alimento::Alimento

Esta clase representa a un alimento con sus nutrientes Se ha incluido el mixin Comparable

Attributes

datos[R]
glucidos[R]
lipidos[R]
nombre[R]
proteinas[R]

Public Class Methods

new(nombre, proteinas, glucidos, lipidos, datos) click to toggle source

Se asignan todas las variables de la clase

# File lib/alimento/alimento.rb, line 17
def initialize(nombre, proteinas, glucidos, lipidos, datos)
        @nombre = nombre
        @proteinas = proteinas
        @glucidos = glucidos
        @lipidos = lipidos
        @datos = datos
end

Public Instance Methods

<=>(other) click to toggle source

Pa incluir el mixin Comparable se utiliza el valor energético

# File lib/alimento/alimento.rb, line 10
def <=>(other)
        if other.kind_of?Alimento
                kcal <=> other.kcal
        end
end
aibc(g) click to toggle source

Recibe un vector con los datos de un alimento para los individuos, devuelve un vector con los AIBC de cada individuo

# File lib/alimento/alimento.rb, line 42
def aibc(g)
        # recibe un vector de datos del alimento
        # devuelve los aibc del alimento, o glucosa, para cada individuo
        g.map{ |gi| gi.each_with_index.map{ |gindex, i| if0(gindex, gi[0], gi[i-1]) if i > 0 } }.map{ |gi| gi.reject{ |gij| gij.class == nil::NilClass } }.map{ |ri| ri.reduce(0, :+) }
end
if0(gij, g0, gi1) click to toggle source

Método auxiliar para hacer el if de la función aibc

# File lib/alimento/alimento.rb, line 36
def if0(gij, g0, gi1)
        return 0.0 if gij < g0
        return ((((gij-g0)+(gi1-g0))/2)*5)
end
ig() click to toggle source

Calcula el IG del alimento haciendo la media con los IG de los individuos

# File lib/alimento/alimento.rb, line 55
def ig
        ig_ind.reduce(0, :+)/ig_ind.size
end
ig_ind() click to toggle source

Calcula los AIBC de los datos del alimento y los divide entre los AIBC de los datos de la glucosa Devolviendo un vector con los IG de cada individuo

# File lib/alimento/alimento.rb, line 50
def ig_ind
        aibc(@datos[0]).each_with_index.map{ |ind, i| (ind/aibc(@datos[1])[i])*100 }
end
kcal() click to toggle source

Devuelve el valor energético del alimento según sus nutrientes

# File lib/alimento/alimento.rb, line 31
def kcal
        (@proteinas*4 + @glucidos*4 + @lipidos*9)
end
to_s() click to toggle source

Devuelve el alimento formateado

# File lib/alimento/alimento.rb, line 26
def to_s
        "Alimento: #{nombre}\n\tProteinas: #{proteinas}\n\tGlucidos: #{glucidos}\n\tLipidos: #{lipidos}"
end