foodAIHE 3.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +12 -0
- data/.travis.yml +5 -0
- data/Gemfile +6 -0
- data/Guardfile +82 -0
- data/LICENSE.txt +21 -0
- data/README.md +70 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/docs/DLLModule/DLL.html +1185 -0
- data/docs/DLLModule/Node.html +409 -0
- data/docs/DLLModule.html +126 -0
- data/docs/Food.html +567 -0
- data/docs/FoodAbstract.html +807 -0
- data/docs/FoodGem.html +156 -0
- data/docs/_config.yml +1 -0
- data/docs/_index.html +154 -0
- data/docs/class_list.html +51 -0
- data/docs/css/common.css +1 -0
- data/docs/css/full_list.css +58 -0
- data/docs/css/style.css +492 -0
- data/docs/file.README.html +161 -0
- data/docs/file_list.html +56 -0
- data/docs/frames.html +17 -0
- data/docs/index.html +161 -0
- data/docs/input/food-data.txt +19 -0
- data/docs/input/samples-data.txt +9 -0
- data/docs/js/app.js +248 -0
- data/docs/js/full_list.js +216 -0
- data/docs/js/jquery.js +4 -0
- data/docs/method_list.html +267 -0
- data/docs/top-level-namespace.html +297 -0
- data/food.gemspec +41 -0
- data/lib/food/dll.rb +168 -0
- data/lib/food/food_class.rb +132 -0
- data/lib/food/version.rb +6 -0
- data/lib/food.rb +91 -0
- metadata +165 -0
data/lib/food/dll.rb
ADDED
@@ -0,0 +1,168 @@
|
|
1
|
+
# Double Linked List Class
|
2
|
+
|
3
|
+
# Class Doubly Linked List
|
4
|
+
module DLLModule
|
5
|
+
|
6
|
+
# Struct Node for Doubly Linked List
|
7
|
+
Node = Struct.new(:value, :next, :prev)
|
8
|
+
|
9
|
+
# Class Doubly Linked List
|
10
|
+
class DLL
|
11
|
+
|
12
|
+
# Including Enumerable Module
|
13
|
+
include Enumerable
|
14
|
+
|
15
|
+
# @attr_reader size [int] size of the doubly linked list
|
16
|
+
attr_reader :size
|
17
|
+
|
18
|
+
# Constructor of DLL
|
19
|
+
# @param value of Node
|
20
|
+
# @param head [Node] Head of the DLL
|
21
|
+
# @param tail [Node] Tail of the DLL
|
22
|
+
# @param size [int] size of the doubly linked list
|
23
|
+
def initialize (value = nil)
|
24
|
+
node = Node.new(value)
|
25
|
+
|
26
|
+
@head = node
|
27
|
+
@tail = node
|
28
|
+
@size = (node.nil?) ? 0 : 1
|
29
|
+
end
|
30
|
+
|
31
|
+
public
|
32
|
+
|
33
|
+
# Insert element in DLL head
|
34
|
+
# @param *value_array[array] set of values
|
35
|
+
def insert_head (*value_array)
|
36
|
+
value_array.each { |value|
|
37
|
+
node = Node.new(value)
|
38
|
+
insert_head_private(node);
|
39
|
+
}
|
40
|
+
end
|
41
|
+
|
42
|
+
# Insert element in DLL tail
|
43
|
+
# @param *value_array[array] set of values
|
44
|
+
def insert_tail (*value_array)
|
45
|
+
value_array.each { |value|
|
46
|
+
node = Node.new(value)
|
47
|
+
insert_tail_private(node);
|
48
|
+
}
|
49
|
+
end
|
50
|
+
|
51
|
+
# Extract element in DLL head
|
52
|
+
# @return [Node] value of the node that was in the head
|
53
|
+
def extract_head
|
54
|
+
if @head.nil?
|
55
|
+
return nil
|
56
|
+
else
|
57
|
+
@size -= 1
|
58
|
+
|
59
|
+
node_to_return = @head
|
60
|
+
|
61
|
+
@head = @head.next
|
62
|
+
@head.prev = nil
|
63
|
+
|
64
|
+
node_to_return.next = nil
|
65
|
+
return node_to_return.value
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
# Extract element in DLL tail
|
70
|
+
# @return [Node] value of the node that was in the tail
|
71
|
+
def extract_tail
|
72
|
+
if @tail.nil?
|
73
|
+
return nil
|
74
|
+
else
|
75
|
+
@size -= 1
|
76
|
+
|
77
|
+
node_to_return = @tail
|
78
|
+
|
79
|
+
@tail = @tail.prev
|
80
|
+
@tail.next = nil
|
81
|
+
|
82
|
+
node_to_return.prev = nil
|
83
|
+
return node_to_return.value
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
# Delete an specific element in DLL head
|
88
|
+
def delete (value)
|
89
|
+
current_node = @head
|
90
|
+
|
91
|
+
while !current_node.nil?
|
92
|
+
if (current_node.value == value)
|
93
|
+
if (@size == 1)
|
94
|
+
@head = nil
|
95
|
+
@tail = nil
|
96
|
+
current_node = nil
|
97
|
+
else
|
98
|
+
if current_node != @head
|
99
|
+
(current_node.prev).next = current_node.next
|
100
|
+
end
|
101
|
+
if current_node != @tail
|
102
|
+
(current_node.next).prev = current_node.prev
|
103
|
+
end
|
104
|
+
current_node = nil
|
105
|
+
end
|
106
|
+
@size -= 1
|
107
|
+
else
|
108
|
+
current_node = current_node.next
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
# Return head value
|
114
|
+
# @return [head(#value)]
|
115
|
+
def get_head
|
116
|
+
return @head.value
|
117
|
+
end
|
118
|
+
|
119
|
+
# Return tail value
|
120
|
+
# @return [tail(#value)]
|
121
|
+
def get_tail
|
122
|
+
return @tail.value
|
123
|
+
end
|
124
|
+
|
125
|
+
# Return if DLL is empty
|
126
|
+
def empty?
|
127
|
+
return size == 0
|
128
|
+
end
|
129
|
+
|
130
|
+
# Essential method for Enumerable
|
131
|
+
def each
|
132
|
+
current_node = @head
|
133
|
+
|
134
|
+
while !current_node.nil?
|
135
|
+
yield current_node.value
|
136
|
+
current_node = current_node.next
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
private
|
141
|
+
|
142
|
+
def insert_head_private (node)
|
143
|
+
if @head.nil?
|
144
|
+
@head = node
|
145
|
+
@tail = node
|
146
|
+
else
|
147
|
+
node.next = @head
|
148
|
+
@head.prev = node
|
149
|
+
@head = node
|
150
|
+
end
|
151
|
+
@size += 1
|
152
|
+
end
|
153
|
+
|
154
|
+
def insert_tail_private (node)
|
155
|
+
if @tail.nil?
|
156
|
+
@head = node
|
157
|
+
@tail = node
|
158
|
+
else
|
159
|
+
@tail.next = node
|
160
|
+
node.prev = @tail
|
161
|
+
@tail = node
|
162
|
+
end
|
163
|
+
@size += 1
|
164
|
+
end
|
165
|
+
|
166
|
+
end
|
167
|
+
|
168
|
+
end
|
@@ -0,0 +1,132 @@
|
|
1
|
+
# Constants of energy
|
2
|
+
# @param PROTEIN_ENERGY [int] protein energy.
|
3
|
+
# @param GLUCID_ENERGY [int] glucid energy.
|
4
|
+
# @param LIPID_ENERGY [int] lipid energy
|
5
|
+
PROTEIN_ENERGY = 4
|
6
|
+
GLUCID_ENERGY = 4
|
7
|
+
LIPID_ENERGY = 9
|
8
|
+
|
9
|
+
# Abstract class for Food
|
10
|
+
class FoodAbstract
|
11
|
+
|
12
|
+
# @attr_reader name [String] name the name of the food
|
13
|
+
# @attr_reader protein_quantity [pair] pair of protein number and energy
|
14
|
+
# @attr_reader glucid_quantity [pair] pair of glucid number and energy
|
15
|
+
# @attr_reader lipid_quantity [pair] pair of lipid number and energy
|
16
|
+
# @attr_reader energetic_content [double] energetic content of the food
|
17
|
+
attr_reader :name, :protein_quantity, :glucid_quantity, :lipid_quantity, :energetic_content, :glucemic_
|
18
|
+
|
19
|
+
# Constructor of Abstract Food for allowing the childs to call it.
|
20
|
+
# @param name [String] the name for the food.
|
21
|
+
# @param protein_energy_pair [pair] pair of protein number and energy.
|
22
|
+
# @param glucid_energy_pair [pair] pair of glucid number and energy
|
23
|
+
# @param lipid_energy_pair [pair] pair of lipid number and energy
|
24
|
+
# @param lipid_energy_pair [pair] pair of lipid number and energy
|
25
|
+
def initialize (name, protein_energy_pair, glucid_energy_pair, lipid_energy_pair)
|
26
|
+
raise unless name.is_a? String
|
27
|
+
raise unless ((protein_energy_pair.is_a? Array) && (glucid_energy_pair.is_a? Array) && (lipid_energy_pair.is_a? Array))
|
28
|
+
raise unless ((protein_energy_pair.count == 2) && (glucid_energy_pair.count == 2) && (lipid_energy_pair.count == 2))
|
29
|
+
|
30
|
+
protein_energy_pair.each { |element| raise unless element.is_a?(Integer) || element.is_a?(Float) }
|
31
|
+
glucid_energy_pair.each { |element| raise unless element.is_a?(Integer) || element.is_a?(Float) }
|
32
|
+
lipid_energy_pair.each { |element| raise unless element.is_a?(Integer) || element.is_a?(Float) }
|
33
|
+
|
34
|
+
@name = name.capitalize
|
35
|
+
@protein_quantity = protein_energy_pair[0]
|
36
|
+
@glucid_quantity = glucid_energy_pair[0]
|
37
|
+
@lipid_quantity = lipid_energy_pair[0]
|
38
|
+
|
39
|
+
# Vector de pares, pues hash no permite iguales
|
40
|
+
@pair_macronutrient_energy = []
|
41
|
+
@pair_macronutrient_energy.push([protein_energy_pair[0], protein_energy_pair[1]])
|
42
|
+
@pair_macronutrient_energy.push([glucid_energy_pair[0], glucid_energy_pair[1]])
|
43
|
+
@pair_macronutrient_energy.push([lipid_energy_pair[0], lipid_energy_pair[1]])
|
44
|
+
|
45
|
+
@energetic_content = calculate_energetic_content
|
46
|
+
end
|
47
|
+
|
48
|
+
# Calculates the energetic content for the food
|
49
|
+
# @return [double] energetic_content
|
50
|
+
def calculate_energetic_content
|
51
|
+
energetic_content = 0
|
52
|
+
@pair_macronutrient_energy.each{ |macronutrient, energy| energetic_content += (macronutrient * energy) }
|
53
|
+
return energetic_content
|
54
|
+
end
|
55
|
+
|
56
|
+
# Return string with the output for the food
|
57
|
+
# @return [String] outpout of food
|
58
|
+
def to_s
|
59
|
+
"Nombre: #{@name} | Proteínas: #{@protein_quantity} gramos | Glúcidos: #{@glucid_quantity} gramos | Lípidos: #{@lipid_quantity} gramos | " \
|
60
|
+
"Contenido Energético: #{@energetic_content} Kcal."
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
|
65
|
+
# Class for Food that inherit FoodAbstract
|
66
|
+
class Food < FoodAbstract
|
67
|
+
|
68
|
+
# Including Comparable Module
|
69
|
+
include Comparable
|
70
|
+
|
71
|
+
# @attr_reader group_name [String] name the name of the food group
|
72
|
+
attr_reader :group_name
|
73
|
+
|
74
|
+
# Constructor of Food with the group name
|
75
|
+
# @param name [String] the name for the food.
|
76
|
+
# @param protein_energy_pair [pair] pair of protein number and energy.
|
77
|
+
# @param glucid_energy_pair [pair] pair of glucid number and energy
|
78
|
+
# @param lipid_energy_pair [pair] pair of lipid number and energy
|
79
|
+
# @param group_name [String] the name for the food group.
|
80
|
+
def initialize(name, protein_energy_pair, glucid_energy_pair, lipid_energy_pair, group_name, gluc_sample_pair_array = [])
|
81
|
+
@group_name = group_name
|
82
|
+
super(name, protein_energy_pair, glucid_energy_pair, lipid_energy_pair)
|
83
|
+
|
84
|
+
@aibc_food_array = [] # The AIBC of this food for each person
|
85
|
+
@aibc_glucose_array = [] # The AIBC of glucose for each person
|
86
|
+
@ig_array = [] # The IG of this food for each person
|
87
|
+
|
88
|
+
gluc_sample_pair_array.each { |person_array|
|
89
|
+
@aibc_food_array.push(calculate_aibc(person_array[0])) # First is the samples of this food for a person
|
90
|
+
@aibc_glucose_array.push(calculate_aibc(person_array[1])) # First is the samples of glucose for a person
|
91
|
+
@ig_array.push(calculate_ig_for_person(@aibc_food_array.size))
|
92
|
+
}
|
93
|
+
end
|
94
|
+
|
95
|
+
private
|
96
|
+
|
97
|
+
def calculate_aibc(sample_array)
|
98
|
+
(1...sample_array.size).map{|i| ((sample_array[i] + sample_array[i-1] - 2*sample_array[0]) / 2) * 5}.reduce(:+)
|
99
|
+
end
|
100
|
+
|
101
|
+
def calculate_ig_for_person(person_number)
|
102
|
+
return ((@aibc_food_array[person_number-1] / @aibc_glucose_array[person_number-1]) * 100)
|
103
|
+
end
|
104
|
+
|
105
|
+
public
|
106
|
+
|
107
|
+
def get_aibc_of_person(person_number)
|
108
|
+
return @aibc_food_array[person_number-1]
|
109
|
+
end
|
110
|
+
|
111
|
+
def get_ig_of_person(person_number)
|
112
|
+
return @ig_array[person_number-1]
|
113
|
+
end
|
114
|
+
|
115
|
+
def get_ig
|
116
|
+
return (@ig_array.reduce(:+) / @ig_array.size)
|
117
|
+
end
|
118
|
+
|
119
|
+
# Return string with the output for the food calling the father
|
120
|
+
# @return [String] output of food
|
121
|
+
def to_s
|
122
|
+
"Grupo: #{@group_name} | " + super
|
123
|
+
end
|
124
|
+
|
125
|
+
# Essential comparating for using Comparable Module
|
126
|
+
# @return [String] Return which food is higher depending on the enrgetic content
|
127
|
+
def <=> (food)
|
128
|
+
raise unless food.is_a?Food
|
129
|
+
return self.energetic_content <=> food.energetic_content
|
130
|
+
end
|
131
|
+
|
132
|
+
end
|
data/lib/food/version.rb
ADDED
data/lib/food.rb
ADDED
@@ -0,0 +1,91 @@
|
|
1
|
+
require "food/version"
|
2
|
+
require "food/food_class"
|
3
|
+
require "food/dll"
|
4
|
+
|
5
|
+
# Root Module for the Gem
|
6
|
+
# @author Angel Igareta (alu0100967111@ull.edu.es)
|
7
|
+
module FoodGem
|
8
|
+
|
9
|
+
def read_samples_data (samples_data_filename)
|
10
|
+
data_file = File.open(samples_data_filename)
|
11
|
+
data_file = data_file.read.split("\n")[1..-1] # Divido el fichero en líneas y quito la primera
|
12
|
+
data_line_array = data_file.collect! { |data_array| data_array.split(" ") } # Cambio las líneas a arrays
|
13
|
+
|
14
|
+
# Hash with (name of the food, sample array for all the persons to that foods)
|
15
|
+
sample_people_hash = Hash.new([])
|
16
|
+
person_number = 1
|
17
|
+
line_counter = 0
|
18
|
+
|
19
|
+
# Mientras no hayamos recorrido todas las lineas y el primero sea un int (nuevo individuo)
|
20
|
+
while ((line_counter < data_line_array.count) && (data_line_array[line_counter][0].to_i == person_number))
|
21
|
+
|
22
|
+
data_line = data_line_array[line_counter]
|
23
|
+
|
24
|
+
person_number = person_number + 1 # Change of person
|
25
|
+
data_line = data_line[1..-1] # Delete the person number
|
26
|
+
|
27
|
+
while ((line_counter < data_line_array.count) && (data_line_array[line_counter][0].to_i != person_number))
|
28
|
+
food_name = data_line[0].capitalize
|
29
|
+
sample_person_array = data_line[1..-1].collect { |data| data.to_f } # Cambio numeros a float
|
30
|
+
|
31
|
+
if (sample_people_hash[food_name] == [])
|
32
|
+
if (food_name == "Glucosa")
|
33
|
+
sample_people_hash.each_key { |name| sample_people_hash[name][person_number-2].push(sample_person_array) }
|
34
|
+
else
|
35
|
+
sample_people_hash[food_name] = [[sample_person_array]]
|
36
|
+
end
|
37
|
+
else
|
38
|
+
sample_people_hash[food_name].push([sample_person_array])
|
39
|
+
end
|
40
|
+
|
41
|
+
line_counter = line_counter + 1 # Cambio de línea
|
42
|
+
unless (line_counter >= data_line_array.count)
|
43
|
+
data_line = data_line_array[line_counter]
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
#sample_people_hash.each{ |x, y| puts "#{x} => #{y}" }
|
49
|
+
|
50
|
+
return sample_people_hash
|
51
|
+
end
|
52
|
+
|
53
|
+
# Method to read data by file
|
54
|
+
# @params data_filename [String] filename of the data
|
55
|
+
# @return [Array] Return array of food
|
56
|
+
def read_data (data_filename, samples_data_filename)
|
57
|
+
data_string = File.open(data_filename).read.split("\n") # Divido el fichero en string de lineas
|
58
|
+
food_array = []
|
59
|
+
sample_people_hash = read_samples_data(samples_data_filename)
|
60
|
+
|
61
|
+
data_string.each { |data_line|
|
62
|
+
data_line = data_line.split(" ") # La divido en espacios
|
63
|
+
name = ""
|
64
|
+
|
65
|
+
while (data_line[0] != data_line[0].to_f.to_s) # Si el nombre no cambia al pasar de string afloat es que es un float
|
66
|
+
name << data_line[0] << " "
|
67
|
+
data_line = data_line[1..-1] # Quito el primer elemento
|
68
|
+
end
|
69
|
+
|
70
|
+
food_name = name[0..-2].capitalize
|
71
|
+
protein = [data_line[0].to_f, PROTEIN_ENERGY]
|
72
|
+
glucid = [data_line[1].to_f, GLUCID_ENERGY]
|
73
|
+
lipid = [data_line[2].to_f, LIPID_ENERGY]
|
74
|
+
|
75
|
+
data_line = data_line[3..-1]
|
76
|
+
|
77
|
+
|
78
|
+
group_name = ""
|
79
|
+
while (!data_line[0].nil?) # Si el nombre no cambia al pasar de string afloat es que es un float
|
80
|
+
group_name << data_line[0] << " "
|
81
|
+
data_line = data_line[1..-1] # Quito el primer elemento
|
82
|
+
end
|
83
|
+
|
84
|
+
food = Food.new(food_name, protein, glucid, lipid, group_name[0..-2], sample_people_hash[food_name])
|
85
|
+
food_array.push(food) # Quito último espacio a nombre y grupo
|
86
|
+
}
|
87
|
+
|
88
|
+
return food_array
|
89
|
+
end
|
90
|
+
|
91
|
+
end
|
metadata
ADDED
@@ -0,0 +1,165 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: foodAIHE
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 3.3.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Angel Igareta
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2018-01-17 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.15'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.15'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '3.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '3.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: guard
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: guard-rspec
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: guard-bundler
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
description: Practica dessarrollada dirigida a pruebas TDD.
|
98
|
+
email:
|
99
|
+
- alu0100967111@ull.edu.es
|
100
|
+
executables: []
|
101
|
+
extensions: []
|
102
|
+
extra_rdoc_files: []
|
103
|
+
files:
|
104
|
+
- ".gitignore"
|
105
|
+
- ".travis.yml"
|
106
|
+
- Gemfile
|
107
|
+
- Guardfile
|
108
|
+
- LICENSE.txt
|
109
|
+
- README.md
|
110
|
+
- Rakefile
|
111
|
+
- bin/console
|
112
|
+
- bin/setup
|
113
|
+
- docs/DLLModule.html
|
114
|
+
- docs/DLLModule/DLL.html
|
115
|
+
- docs/DLLModule/Node.html
|
116
|
+
- docs/Food.html
|
117
|
+
- docs/FoodAbstract.html
|
118
|
+
- docs/FoodGem.html
|
119
|
+
- docs/_config.yml
|
120
|
+
- docs/_index.html
|
121
|
+
- docs/class_list.html
|
122
|
+
- docs/css/common.css
|
123
|
+
- docs/css/full_list.css
|
124
|
+
- docs/css/style.css
|
125
|
+
- docs/file.README.html
|
126
|
+
- docs/file_list.html
|
127
|
+
- docs/frames.html
|
128
|
+
- docs/index.html
|
129
|
+
- docs/input/food-data.txt
|
130
|
+
- docs/input/samples-data.txt
|
131
|
+
- docs/js/app.js
|
132
|
+
- docs/js/full_list.js
|
133
|
+
- docs/js/jquery.js
|
134
|
+
- docs/method_list.html
|
135
|
+
- docs/top-level-namespace.html
|
136
|
+
- food.gemspec
|
137
|
+
- lib/food.rb
|
138
|
+
- lib/food/dll.rb
|
139
|
+
- lib/food/food_class.rb
|
140
|
+
- lib/food/version.rb
|
141
|
+
homepage: https://github.com/ULL-ESIT-LPP-1718/tdd-alu0100967111
|
142
|
+
licenses:
|
143
|
+
- MIT
|
144
|
+
metadata: {}
|
145
|
+
post_install_message:
|
146
|
+
rdoc_options: []
|
147
|
+
require_paths:
|
148
|
+
- lib
|
149
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
150
|
+
requirements:
|
151
|
+
- - ">="
|
152
|
+
- !ruby/object:Gem::Version
|
153
|
+
version: '0'
|
154
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
155
|
+
requirements:
|
156
|
+
- - ">="
|
157
|
+
- !ruby/object:Gem::Version
|
158
|
+
version: '0'
|
159
|
+
requirements: []
|
160
|
+
rubyforge_project:
|
161
|
+
rubygems_version: 2.5.1
|
162
|
+
signing_key:
|
163
|
+
specification_version: 4
|
164
|
+
summary: Practica dessarrollada dirigida a pruebas TDD.
|
165
|
+
test_files: []
|