class Alimento::Alimento
Esta clase permite representar un alimento y calcular su valor energético.
Attributes
Public Class Methods
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
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
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
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
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
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
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