class Alimento::Alimento

Esta clase permite representar un alimento y calcular su valor energético.

Attributes

data[R]
glucidos[R]
lipidos[R]
nombre[R]
proteinas[R]

Public Class Methods

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

Se asignan el nombre y los valores gramos de proteínas, glúcidos y lípidos al alimento.

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

Public Instance Methods

<=>(other) click to toggle source

Se define para incluir el mixin comparable. Se toma como valor para la comparación el nombre del alimento.

# File lib/alimento/alimento.rb, line 39
def <=>(other)
  return nil unless other.kind_of?Alimento
  valor_energetico <=> other.valor_energetico
end
aibc(g) click to toggle source

Calcula el área incremental bajo la curva del del vector de datos del alimento y de la glucosa. Necesario para calcular el IG del alimento

# File lib/alimento/alimento.rb, line 47
def aibc (g)
    r = g.map do |i| 
        i.each_with_index.map do |j, it| 
            if it > 0 
              0.0 if (i[it] < i[0])
              (((i[it] - i[0]) + (i[it-1] - i[0])) / 2)*5 if (i[it] >= i[0])
              
                
            end
        end
    end
    
    s = r.map{ |i| i.reject{ |gij| gij.class == nil::NilClass}}
    s.map{ |i| i.reduce(0, :+) }
    
end
ig() click to toggle source

Devuelve el índice glucémico del alimento para los datos que se le pasaron al objeto cuando fue instanciado.

# File lib/alimento/alimento.rb, line 72
def ig
  (data.map{ |i| ig_ind(i)}.reduce(:+))/data.size
end
ig_ind(g) click to toggle source

Calcula el indicie glucémico asociado a un único individuo. Necesario para calcular el IG del alimento

# File lib/alimento/alimento.rb, line 66
def ig_ind(g)
    (aibc(g)).reduce(:/) * 100
end
to_s() click to toggle source

Permite visualizar el alimento formateado.

# File lib/alimento/alimento.rb, line 28
def to_s
    return %Q(#{@nombre.capitalize}: #{@proteinas}gr de proteínas, #{@glucidos}gr de hidratos de carbono y #{@lipidos}g de grasas)
end
valor_energetico() click to toggle source

Calcula el valor energético del alimento a partir de los gramos de proteínas, glúcidos y lípidos.

# File lib/alimento/alimento.rb, line 33
def valor_energetico 
    (@proteinas * 4 + @glucidos * 4 + @lipidos * 9)
end