gemaalu0100889871 0.1.2

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 6c9cc93785b9d097e2ba38cd29169d6a53be315c
4
+ data.tar.gz: f36b0efc210b95d03cf7dd43b9a58699c051b756
5
+ SHA512:
6
+ metadata.gz: 1379eb14747f22dc7d4693fb471ec7211bd312c072a51470cd67fa54d931514ab228fd4c19c02cf8d969691ed6cc2042199ffe40a2f287d54a8b25b3942deba5
7
+ data.tar.gz: '03240228af5ca7028abed222095813739687c0efcd30ae905b5bead6b70215a45e4ae3981f7683c14ecfc9f3a1ec788fa201173676cd10cb4446330cb862307c'
@@ -0,0 +1,10 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ *~
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format documentation
2
+ --color
@@ -0,0 +1,5 @@
1
+ sudo: false
2
+ language: ruby
3
+ rvm:
4
+ - 2.3.1
5
+ before_install: gem install bundler -v 1.13.6
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in gema.gemspec
4
+ gemspec
@@ -0,0 +1,82 @@
1
+ # A sample Guardfile
2
+ # More info at https://github.com/guard/guard#readme
3
+
4
+ ## Uncomment and set this to only include directories you want to watch
5
+ # directories %w(app lib config test spec features) \
6
+ # .select{|d| Dir.exists?(d) ? d : UI.warning("Directory #{d} does not exist")}
7
+
8
+ ## Note: if you are using the `directories` clause above and you are not
9
+ ## watching the project directory ('.'), then you will want to move
10
+ ## the Guardfile to a watched dir and symlink it back, e.g.
11
+ #
12
+ # $ mkdir config
13
+ # $ mv Guardfile config/
14
+ # $ ln -s config/Guardfile .
15
+ #
16
+ # and, you'll have to watch "config/Guardfile" instead of "Guardfile"
17
+
18
+ guard :bundler do
19
+ require 'guard/bundler'
20
+ require 'guard/bundler/verify'
21
+ helper = Guard::Bundler::Verify.new
22
+
23
+ files = ['Gemfile']
24
+ files += Dir['*.gemspec'] if files.any? { |f| helper.uses_gemspec?(f) }
25
+
26
+ # Assume files are symlinked from somewhere
27
+ files.each { |file| watch(helper.real_path(file)) }
28
+ end
29
+
30
+ # Note: The cmd option is now required due to the increasing number of ways
31
+ # rspec may be run, below are examples of the most common uses.
32
+ # * bundler: 'bundle exec rspec'
33
+ # * bundler binstubs: 'bin/rspec'
34
+ # * spring: 'bin/rspec' (This will use spring if running and you have
35
+ # installed the spring binstubs per the docs)
36
+ # * zeus: 'zeus rspec' (requires the server to be started separately)
37
+ # * 'just' rspec: 'rspec'
38
+
39
+ guard :rspec, cmd: "bundle exec rspec" do
40
+ require "guard/rspec/dsl"
41
+ dsl = Guard::RSpec::Dsl.new(self)
42
+
43
+ # Feel free to open issues for suggestions and improvements
44
+
45
+ # RSpec files
46
+ rspec = dsl.rspec
47
+ watch(rspec.spec_helper) { rspec.spec_dir }
48
+ watch(rspec.spec_support) { rspec.spec_dir }
49
+ watch(rspec.spec_files)
50
+
51
+ # Ruby files
52
+ ruby = dsl.ruby
53
+ dsl.watch_spec_files_for(ruby.lib_files)
54
+
55
+ # Rails files
56
+ rails = dsl.rails(view_extensions: %w(erb haml slim))
57
+ dsl.watch_spec_files_for(rails.app_files)
58
+ dsl.watch_spec_files_for(rails.views)
59
+
60
+ watch(rails.controllers) do |m|
61
+ [
62
+ rspec.spec.call("routing/#{m[1]}_routing"),
63
+ rspec.spec.call("controllers/#{m[1]}_controller"),
64
+ rspec.spec.call("acceptance/#{m[1]}")
65
+ ]
66
+ end
67
+
68
+ # Rails config changes
69
+ watch(rails.spec_helper) { rspec.spec_dir }
70
+ watch(rails.routes) { "#{rspec.spec_dir}/routing" }
71
+ watch(rails.app_controller) { "#{rspec.spec_dir}/controllers" }
72
+
73
+ # Capybara features specs
74
+ watch(rails.view_dirs) { |m| rspec.spec.call("features/#{m[1]}") }
75
+ watch(rails.layouts) { |m| rspec.spec.call("features/#{m[1]}") }
76
+
77
+ # Turnip features and steps
78
+ watch(%r{^spec/acceptance/(.+)\.feature$})
79
+ watch(%r{^spec/acceptance/steps/(.+)_steps\.rb$}) do |m|
80
+ Dir[File.join("**/#{m[1]}.feature")][0] || "spec/acceptance"
81
+ end
82
+ end
@@ -0,0 +1,9 @@
1
+ #TDD DSL para menús dietéticos
2
+ ================
3
+
4
+ Desarrollo Dirigido por Pruebas para representar Menús dietéticos.
5
+ * Ejemplos con distintas decripciones y expectativas
6
+ * Ejemplo de organización de distintos directorios
7
+ * Ejemplo de Rakefile
8
+
9
+ Victoria Quintana Martí
@@ -0,0 +1,32 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+
5
+ task :default => :spec
6
+
7
+ desc "Ejecutar las espectativas de la clase Dieta"
8
+ task :spec do
9
+ sh "rspec -I. spec/dieta_spec.rb"
10
+ end
11
+ desc "Ejecutar las espectativas de la clase Lista"
12
+ task :spec do
13
+ sh "rspec -I. spec/lista_spec.rb"
14
+ end
15
+ desc "Ejecutar las espectativas de la clase Lista doblemente enlazada"
16
+ task :spec do
17
+ sh "rspec -I. spec/listadll_spec.rb"
18
+ end
19
+ desc "Ejecutar las espectativas para que los menús sean comparables y enumerables"
20
+ task :spec do
21
+ sh "rspec -I. spec/comp_y_enum_spec.rb"
22
+ end
23
+ desc "Ejecutar las espectativas de la clase Dietadsl"
24
+ task :spec do
25
+ sh "rspec -I. spec/dietadsl_spec.rb"
26
+ end
27
+
28
+ desc "Ejecutar con documentacion"
29
+ task :doc do
30
+ sh "rspec -I. spec/dieta_spec.rb --format documentation"
31
+ end
32
+
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "gema"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,38 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'gema/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "gemaalu0100889871"
8
+ spec.version = Gema::VERSION
9
+ spec.authors = ["Victoria Quintana Martí"]
10
+ spec.email = ["alu0100889871@ull.edu.es"]
11
+
12
+ spec.summary = %q{Practica 11 LPP}
13
+ spec.description = %q{Diseñar e implementar un DSL, siguiendo la filosofía de Ruby, que permita la definición de listas de menús dietéticos diarios y semanales. Todo ello dirigido por pruebas TDD a través de RSpec(expectativa). Para crear la estructura utilizamos Bundler.}
14
+ spec.homepage = "https://github.com/ULL-ESIT-LPP-1617/menu-dietetico-alu0100889871"
15
+
16
+ # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
17
+ # to allow pushing to a single host or delete this section to allow pushing to any host.
18
+ #if spec.respond_to?(:metadata)
19
+ # spec.metadata['allowed_push_host'] = "TODO: Set to 'http://mygemserver.com'"
20
+ #else
21
+ # raise "RubyGems 2.0 or newer is required to protect against " \
22
+ # "public gem pushes."
23
+ #end
24
+
25
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
26
+ f.match(%r{^(test|spec|features)/})
27
+ end
28
+ spec.bindir = "exe"
29
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
30
+ spec.require_paths = ["lib"]
31
+
32
+ spec.add_development_dependency "bundler", "~> 1.13"
33
+ spec.add_development_dependency "rake", "~> 10.0"
34
+ spec.add_development_dependency "rspec", "~> 3.0"
35
+ spec.add_development_dependency "guard"
36
+ spec.add_development_dependency "guard-rspec"
37
+ spec.add_development_dependency "guard-bundler"
38
+ end
@@ -0,0 +1,5 @@
1
+ require "gema/version"
2
+ #Gema
3
+ module Gema
4
+ # Your code goes here...
5
+ end
@@ -0,0 +1,132 @@
1
+ #Clase Dieta
2
+ class Dieta
3
+ #Include Comparable
4
+ include Comparable
5
+ #Titulo de la Dieta
6
+ attr_reader :titulo
7
+ #Porcentaje de la ingesta diaria de la Dieta
8
+ attr_reader :porcentaje_ingesta
9
+ #PLatos de la Dieta
10
+ attr_reader :platos
11
+ #Valor calórico de la Dieta
12
+ attr_reader :vct
13
+ #Porcentaje de proteinas, grasas e hidratos de carbono de la Dieta
14
+ attr_reader :porcentajes
15
+ #Constructor de Dieta
16
+ def initialize(titulo, porcentaje_ingesta, platos, vct, porcentajes)
17
+ @titulo = titulo
18
+ @porcentaje_ingesta = porcentaje_ingesta
19
+ @platos = platos
20
+ @vct = vct
21
+ @porcentajes = porcentajes
22
+
23
+ end
24
+ #Método necesario para poder utilizar el módulo comparable
25
+ def <=>(another)
26
+ vct <=> another.vct
27
+ end
28
+ #Método para imprimir Dieta
29
+ def to_s
30
+ title = "#{@titulo} ( #{@porcentaje_ingesta} )\n "
31
+ for i in 0..@platos.size-1
32
+ title +="- #{@platos[i][0]}, #{@platos[i][1]}, #{@platos[i][2]} \n"
33
+ end
34
+ title += "V.C.T. |% #{@vct} kcal | #{@porcentajes[0]}% - #{@porcentajes[1]}% - #{@porcentajes[2]}%"
35
+ end
36
+ #Método que devuelve el título de la Dieta
37
+ def get_titulo
38
+ @titulo
39
+ end
40
+ #Método que devuelve las descripciones de los platos de la Dieta
41
+ def get_desc_plato(i)
42
+ "#{@platos[i][0]}, #{@platos[i][1]}, #{@platos[i][2]} "
43
+ end
44
+ #Método que devuelve la ingesta diaria de la Dieta
45
+ def get_ingesta_diaria
46
+ @porcentaje_ingesta
47
+ end
48
+ #Método que devuelve la descripcion de un plato de la Dieta
49
+ def get_plato(i)
50
+ @platos[i][0]
51
+ end
52
+ #Método que devuelve los platos de la Dieta
53
+ def get_platos
54
+ @platos
55
+ end
56
+ #Método que el valor calórico de la Dieta
57
+ def get_vct
58
+ @vct
59
+ end
60
+ #Método que el porcentaje de proteinas de la Dieta
61
+ def get_proteinas
62
+ @porcentajes[0]
63
+ end
64
+ #Método que el porcentaje de grasas de la Dieta
65
+ def get_grasas
66
+ @porcentajes[1]
67
+ end
68
+ #Método que el porcentaje de hidratos de carbono de la Dieta
69
+ def get_hidratos
70
+ @porcentajes[2]
71
+ end
72
+ end
73
+ #Clase Menu_Edad que recibe herencia de la clase Dieta
74
+ class Menu_Edad < Dieta
75
+ #Edad del Menu_Edad
76
+ attr_reader :edad
77
+ #Constructor de Menu_Edad
78
+ def initialize(dieta,edad)
79
+ @edad=edad
80
+ super(dieta.titulo,dieta.porcentaje_ingesta,dieta.platos,dieta.vct,dieta.porcentajes)
81
+
82
+ end
83
+ #Método para imprimir Menu_Edad
84
+ def to_s
85
+ title = super.to_s + "\nEdad:#{@edad}"
86
+ end
87
+ end
88
+ #Clase Menu_Alimentos que recibe herencia de la clase Dieta
89
+ class Menu_Alimentos < Dieta
90
+ #Alimentos de Menu_ALimentos
91
+ attr_reader :alimentos
92
+ #Constructor
93
+ def initialize(dieta,alimentos)
94
+ @alimentos=alimentos
95
+ super(dieta.titulo,dieta.porcentaje_ingesta,dieta.platos,dieta.vct,dieta.porcentajes)
96
+
97
+ end
98
+ #Método para imprimir Menu_Alimentos
99
+ def to_s
100
+ title = super.to_s + "\nGrupo de alimentos:#{@alimentos}"
101
+ end
102
+ end
103
+
104
+
105
+
106
+
107
+
108
+
109
+
110
+
111
+
112
+
113
+
114
+
115
+
116
+
117
+
118
+
119
+
120
+
121
+
122
+
123
+
124
+
125
+
126
+
127
+
128
+
129
+
130
+
131
+
132
+
@@ -0,0 +1,150 @@
1
+ #Clase Dieta
2
+ class DietaDSL
3
+ #Include Comparable
4
+ include Comparable
5
+ #Titulo de la Dieta
6
+ attr_reader :titulo
7
+ #Porcentaje de la ingesta diaria de la Dieta
8
+ attr_reader :porcentaje_ingesta
9
+ #PLatos de la Dieta
10
+ attr_reader :platos
11
+ #Valor calórico de la Dieta
12
+ attr_reader :vct
13
+ #Porcentaje de proteinas, grasas e hidratos de carbono de la Dieta
14
+ attr_reader :porcentajes
15
+ #Nombre
16
+ attr_reader :nombre
17
+ #Constructor de la clase Dieta
18
+ def initialize(nombre,&block)
19
+ @nombre = nombre
20
+ @titulo = ""
21
+ @porcentaje_ingesta = ""
22
+ @platos = []
23
+ @vct = 0
24
+ @porcentajes = []
25
+ if block_given?
26
+ if block.arity == 1
27
+ yield self
28
+ else
29
+ instance_eval(&block)
30
+ end
31
+ end
32
+
33
+ end
34
+
35
+ #Método necesario para poder utilizar el módulo comparable
36
+ def <=>(another)
37
+ vct <=> another.vct
38
+ end
39
+ #Método para imprimir Dieta
40
+ def to_s
41
+ title = "#{@titulo} ( #{@porcentaje_ingesta} )\n "
42
+ for i in 0..@platos.size-1
43
+ title +="- #{@platos[i][0]}, #{@platos[i][1]}, #{@platos[i][2]} \n"
44
+ end
45
+ title += "V.C.T. |% #{@vct} kcal | #{@porcentajes[0]}% - #{@porcentajes[1]}% - #{@porcentajes[2]}%"
46
+ end
47
+ #Método que devuelve el título de la Dieta
48
+ def get_titulo
49
+ @titulo
50
+ end
51
+ #Método que devuelve las descripciones de los platos de la Dieta
52
+ def get_desc_plato(i)
53
+ "#{@platos[i][0]}, #{@platos[i][1]}, #{@platos[i][2]} "
54
+ end
55
+ #Método que devuelve la ingesta diaria de la Dieta
56
+ def get_ingesta_diaria
57
+ @porcentaje_ingesta
58
+ end
59
+ #Método que devuelve la descripcion de un plato de la Dieta
60
+ def get_plato(i)
61
+ @platos[i][0]
62
+ end
63
+ #Método que devuelve los platos de la Dieta
64
+ def get_platos
65
+ @platos
66
+ end
67
+ #Método que el valor calórico de la Dieta
68
+ def get_vct
69
+ @vct
70
+ end
71
+ #Método que el porcentaje de proteinas de la Dieta
72
+ def get_proteinas
73
+ @porcentajes[0]
74
+ end
75
+ #Método que el porcentaje de grasas de la Dieta
76
+ def get_grasas
77
+ @porcentajes[1]
78
+ end
79
+ #Método que el porcentaje de hidratos de carbono de la Dieta
80
+ def get_hidratos
81
+ @porcentajes[2]
82
+ end
83
+ def titulo_(name)
84
+ @titulo = name
85
+ end
86
+
87
+ def ingesta_(opciones={})
88
+ ingest = ""
89
+ ingest << "#{opciones[:min]}" if opciones[:min]
90
+ ingest<<"-#{opciones[:max]} %" if opciones[:max]
91
+ @porcentaje_ingesta = ingest
92
+
93
+ end
94
+
95
+ def plato_(opciones={})
96
+ grams= ""
97
+ descripcion=""
98
+ porcion=""
99
+ grams= "#{opciones[:gramos]} g" if opciones[:gramos]
100
+ descripcion = opciones[:descripcion] if opciones[:descripcion]
101
+ porcion = opciones[:porcion] if opciones[:porcion]
102
+ @platos.push([descripcion,porcion,grams])
103
+
104
+ end
105
+
106
+ def porcentajes_(opciones={})
107
+ @vct = opciones[:vct] if opciones[:vct]
108
+ proteinas = ""
109
+ grasas = ""
110
+ hidratos=""
111
+ proteinas = opciones[:proteinas] if opciones[:proteinas]
112
+ grasas = opciones[:grasas] if opciones[:grasas]
113
+ hidratos = opciones[:hidratos] if opciones[:hidratos]
114
+ @porcentajes.push(proteinas)
115
+ @porcentajes.push(grasas)
116
+ @porcentajes.push(hidratos)
117
+
118
+
119
+ end
120
+ end
121
+ #Clase Menu_Edad que recibe herencia de la clase Dieta
122
+ class Menu_EdadDSL < DietaDSL
123
+ #Edad del Menu_Edad
124
+ attr_reader :edad
125
+ #Constructor de Menu_Edad
126
+ def initialize(dieta,edad)
127
+ @edad=edad
128
+ super(dieta.titulo,dieta.porcentaje_ingesta,dieta.platos,dieta.vct,dieta.porcentajes)
129
+
130
+ end
131
+ #Método para imprimir Menu_Edad
132
+ def to_s
133
+ title = super.to_s + "\nEdad:#{@edad}"
134
+ end
135
+ end
136
+ #Clase Menu_Alimentos que recibe herencia de la clase Dieta
137
+ class Menu_AlimentosDSL < DietaDSL
138
+ #Alimentos de Menu_ALimentos
139
+ attr_reader :alimentos
140
+ #Constructor
141
+ def initialize(dieta,alimentos)
142
+ @alimentos=alimentos
143
+ super(dieta.titulo,dieta.porcentaje_ingesta,dieta.platos,dieta.vct,dieta.porcentajes)
144
+
145
+ end
146
+ #Método para imprimir Menu_Alimentos
147
+ def to_s
148
+ title = super.to_s + "\nGrupo de alimentos:#{@alimentos}"
149
+ end
150
+ end
@@ -0,0 +1,70 @@
1
+ #Estructura del nodo (Nodo genérico de la Lista)
2
+ Node = Struct.new(:value, :next)
3
+ #Clase Lista
4
+ class Lista
5
+ #Include Enumerable
6
+ include Enumerable
7
+ #La cabecera de la Lista
8
+ attr_reader :head
9
+ #Constructor
10
+ def initialize
11
+ @head = nil
12
+ end
13
+ #Método necesario para que el módulo Enumerable se pueda utilizar(el módulo Enumerable define iteradores útiles que se implementan en base a un iterador each)
14
+ def each
15
+ node=@head
16
+ while node != nil
17
+ yield node.value
18
+ node=node.next
19
+ end
20
+ end
21
+ #Método que inserta un valor o un array de valores en la Lista
22
+ def push (valor)
23
+ if(valor.instance_of? Array )
24
+ for i in valor
25
+ @head = Node.new(i,@head)
26
+
27
+ end
28
+ else
29
+ @head = Node.new(valor,@head)
30
+ end
31
+ @head.value
32
+
33
+ end
34
+ #Método que saca un valor de la Lista
35
+ def pop
36
+ if(@head!=nil)
37
+ other = @head
38
+ @head = @head.next
39
+ return other.value
40
+ end
41
+ end
42
+ #Método que imprime la Lista
43
+ def to_s
44
+ other = @head
45
+ total=""
46
+ while(other!=nil)
47
+ total+= "#{other.value}\t"
48
+ other = other.next
49
+ end
50
+ total += "\n"
51
+
52
+
53
+ end
54
+ #Método que comprueba si la Lista está vacía
55
+ def is_empty?
56
+
57
+ if(@head==nil)
58
+ return true
59
+ else return false
60
+
61
+ end
62
+ end
63
+ #Método que te devuelve la cabecera de la Lista vacía
64
+ def empty
65
+ @head = nil
66
+ return @head
67
+
68
+ end
69
+
70
+ end
@@ -0,0 +1,130 @@
1
+ #Estructura del nodo (Nodo genérico de la Listadll)
2
+ Nodedll = Struct.new(:value, :prev, :next)
3
+ #Clase Lista doblemente enlazada
4
+ class Listadll
5
+ #Include Enumerable
6
+ include Enumerable
7
+ #La cabecera de la Listadll
8
+ attr_reader :head
9
+ #La cola de la Listadll
10
+ attr_reader :tail
11
+ #Constructor
12
+ def initialize
13
+ @head = nil
14
+ @tail = nil
15
+ end
16
+ #Método que inserta por delante un valor o un array de valores en la Listadll
17
+ def pushfront (valor)
18
+ if(valor.instance_of? Array )
19
+ if(@tail==nil)
20
+ @tail=Nodedll.new(valor[0],nil,nil)
21
+ @head = @tail
22
+ valor.shift()
23
+ end
24
+ for i in valor
25
+ aux=@head
26
+ @head=Nodedll.new(i,aux,nil)
27
+ aux.next =@head
28
+
29
+ end
30
+ else
31
+ if(@tail==nil)
32
+ @tail=Nodedll.new(valor,nil,nil)
33
+ @head = @tail
34
+ else
35
+ aux = @head
36
+ @head = Nodo.new(valor,aux,nil)
37
+ aux.next = @head
38
+
39
+ end
40
+ end
41
+ @head.value
42
+
43
+ end
44
+
45
+ #Método que inserta por detrás un valor o un array de valores en la Listadll
46
+ def pushback (valor)
47
+ if(@tail==nil)
48
+ @tail=Nodedll.new(valor[0],nil,nil)
49
+ @tail=@head
50
+ end
51
+ if(valor.instance_of? Array )
52
+ for i in valor
53
+ aux=@tail
54
+ @tail=Nodedll.new(i,aux,@head)
55
+ aux.prev=@tail
56
+
57
+ end
58
+ else
59
+ if(@tail==nil)
60
+ @tail=Nodedll.new(valor,nil,nil)
61
+ @tail=@head
62
+ end
63
+ @tail=Nodedll.new(valor,nil,@head)
64
+ end
65
+ @tail.value
66
+
67
+ end
68
+ #Método que saca por delante un valor de la Listadll
69
+ def popfront
70
+ if(@head!=nil)
71
+ other = @head
72
+ @head = @head.prev
73
+ if(@head!=nil)
74
+ @head.next=nil
75
+ other.prev=nil
76
+ else @tail = nil
77
+
78
+ end
79
+ end
80
+ return other.value
81
+ end
82
+ #Método que saca por detrás un valor de la Listadll
83
+ def popback
84
+ if(@tail!=nil)
85
+ other = @tail
86
+ @tail = @tail.next
87
+ if(@tail!=nil)
88
+ @tail.prev=nil
89
+ other.prev=nil
90
+ else @head = nil
91
+
92
+ end
93
+ end
94
+ return other.value
95
+ end
96
+ #Método que imprime la Listadll
97
+ def to_s
98
+ other = @tail
99
+ total=""
100
+ while(other!=nil)
101
+ total+= "#{other.value}\t"
102
+ other = other.next
103
+ end
104
+ total += "\n"
105
+ end
106
+ #Método que comprueba si la Listadll está vacía
107
+ def is_empty?
108
+ if(@head==nil)
109
+ return true
110
+ else return false
111
+
112
+ end
113
+ end
114
+ #Método necesario para que el módulo Enumerable se pueda utilizar(el módulo Enumerable define iteradores útiles que se implementan en base a un iterador each)
115
+ def each
116
+ node=@tail
117
+ while node != nil
118
+ yield node.value
119
+ node=node.next
120
+ end
121
+ end
122
+ #Método que te devuelve la cabecera de la Listadll vacía
123
+ def empty
124
+ @head = nil
125
+ return @head
126
+
127
+ end
128
+ end
129
+
130
+
@@ -0,0 +1,5 @@
1
+ #Versión de la gema
2
+ module Gema
3
+ #CTE Version
4
+ VERSION = "0.1.2"
5
+ end
metadata ADDED
@@ -0,0 +1,146 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: gemaalu0100889871
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.2
5
+ platform: ruby
6
+ authors:
7
+ - Victoria Quintana Martí
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2016-12-15 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.13'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.13'
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: Diseñar e implementar un DSL, siguiendo la filosofía de Ruby, que permita
98
+ la definición de listas de menús dietéticos diarios y semanales. Todo ello dirigido
99
+ por pruebas TDD a través de RSpec(expectativa). Para crear la estructura utilizamos
100
+ Bundler.
101
+ email:
102
+ - alu0100889871@ull.edu.es
103
+ executables: []
104
+ extensions: []
105
+ extra_rdoc_files: []
106
+ files:
107
+ - ".gitignore"
108
+ - ".rspec"
109
+ - ".travis.yml"
110
+ - Gemfile
111
+ - Guardfile
112
+ - README.md
113
+ - Rakefile
114
+ - bin/console
115
+ - bin/setup
116
+ - gema.gemspec
117
+ - lib/gema.rb
118
+ - lib/gema/dieta.rb
119
+ - lib/gema/dietadsl.rb
120
+ - lib/gema/lista.rb
121
+ - lib/gema/listadll.rb
122
+ - lib/gema/version.rb
123
+ homepage: https://github.com/ULL-ESIT-LPP-1617/menu-dietetico-alu0100889871
124
+ licenses: []
125
+ metadata: {}
126
+ post_install_message:
127
+ rdoc_options: []
128
+ require_paths:
129
+ - lib
130
+ required_ruby_version: !ruby/object:Gem::Requirement
131
+ requirements:
132
+ - - ">="
133
+ - !ruby/object:Gem::Version
134
+ version: '0'
135
+ required_rubygems_version: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ version: '0'
140
+ requirements: []
141
+ rubyforge_project:
142
+ rubygems_version: 2.6.8
143
+ signing_key:
144
+ specification_version: 4
145
+ summary: Practica 11 LPP
146
+ test_files: []