prct06-TDD 0.1.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.
Files changed (85) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +11 -0
  3. data/.rspec +3 -0
  4. data/.travis.yml +7 -0
  5. data/Changelog.md +275 -0
  6. data/Gemfile +5 -0
  7. data/Gemfile.lock +93 -0
  8. data/Guardfile +83 -0
  9. data/README.md +39 -0
  10. data/Rakefile +6 -0
  11. data/bin/console +14 -0
  12. data/bin/setup +8 -0
  13. data/docs/Alimento.html +1039 -0
  14. data/docs/Changelog_md.html +280 -0
  15. data/docs/Dieta.html +272 -0
  16. data/docs/Gema.html +110 -0
  17. data/docs/Gema/Error.html +103 -0
  18. data/docs/Gemfile.html +100 -0
  19. data/docs/Gemfile_lock.html +179 -0
  20. data/docs/Guardfile.html +171 -0
  21. data/docs/ListaDobleEnlazada.html +542 -0
  22. data/docs/Object.html +117 -0
  23. data/docs/Plato.html +567 -0
  24. data/docs/Plato/CompareMode.html +117 -0
  25. data/docs/PlatoEficienciaEnergetica.html +316 -0
  26. data/docs/README_md.html +143 -0
  27. data/docs/Rakefile.html +102 -0
  28. data/docs/bin/setup.html +102 -0
  29. data/docs/created.rid +23 -0
  30. data/docs/css/fonts.css +167 -0
  31. data/docs/css/rdoc.css +590 -0
  32. data/docs/fonts/Lato-Light.ttf +0 -0
  33. data/docs/fonts/Lato-LightItalic.ttf +0 -0
  34. data/docs/fonts/Lato-Regular.ttf +0 -0
  35. data/docs/fonts/Lato-RegularItalic.ttf +0 -0
  36. data/docs/fonts/SourceCodePro-Bold.ttf +0 -0
  37. data/docs/fonts/SourceCodePro-Regular.ttf +0 -0
  38. data/docs/images/add.png +0 -0
  39. data/docs/images/arrow_up.png +0 -0
  40. data/docs/images/brick.png +0 -0
  41. data/docs/images/brick_link.png +0 -0
  42. data/docs/images/bug.png +0 -0
  43. data/docs/images/bullet_black.png +0 -0
  44. data/docs/images/bullet_toggle_minus.png +0 -0
  45. data/docs/images/bullet_toggle_plus.png +0 -0
  46. data/docs/images/date.png +0 -0
  47. data/docs/images/delete.png +0 -0
  48. data/docs/images/find.png +0 -0
  49. data/docs/images/loadingAnimation.gif +0 -0
  50. data/docs/images/macFFBgHack.png +0 -0
  51. data/docs/images/package.png +0 -0
  52. data/docs/images/page_green.png +0 -0
  53. data/docs/images/page_white_text.png +0 -0
  54. data/docs/images/page_white_width.png +0 -0
  55. data/docs/images/plugin.png +0 -0
  56. data/docs/images/ruby.png +0 -0
  57. data/docs/images/tag_blue.png +0 -0
  58. data/docs/images/tag_green.png +0 -0
  59. data/docs/images/transparent.png +0 -0
  60. data/docs/images/wrench.png +0 -0
  61. data/docs/images/wrench_orange.png +0 -0
  62. data/docs/images/zoom.png +0 -0
  63. data/docs/index.html +123 -0
  64. data/docs/js/darkfish.js +161 -0
  65. data/docs/js/jquery.js +4 -0
  66. data/docs/js/navigation.js +141 -0
  67. data/docs/js/navigation.js.gz +0 -0
  68. data/docs/js/search.js +109 -0
  69. data/docs/js/search_index.js +1 -0
  70. data/docs/js/search_index.js.gz +0 -0
  71. data/docs/js/searcher.js +229 -0
  72. data/docs/js/searcher.js.gz +0 -0
  73. data/docs/prct06-TDD_gemspec.html +134 -0
  74. data/docs/table_of_contents.html +381 -0
  75. data/lib/Alimento.rb +205 -0
  76. data/lib/Dieta.rb +28 -0
  77. data/lib/Menu.rb +61 -0
  78. data/lib/Plato.rb +138 -0
  79. data/lib/Plato.rb.save +110 -0
  80. data/lib/PlatoEficienciaEnergetica.rb +32 -0
  81. data/lib/gema.rb +12 -0
  82. data/lib/gema/ListaDobleEnlazada.rb +103 -0
  83. data/lib/gema/version.rb +3 -0
  84. data/prct06-TDD.gemspec +37 -0
  85. metadata +214 -0
Binary file
data/docs/js/search.js ADDED
@@ -0,0 +1,109 @@
1
+ Search = function(data, input, result) {
2
+ this.data = data;
3
+ this.$input = $(input);
4
+ this.$result = $(result);
5
+
6
+ this.$current = null;
7
+ this.$view = this.$result.parent();
8
+ this.searcher = new Searcher(data.index);
9
+ this.init();
10
+ }
11
+
12
+ Search.prototype = $.extend({}, Navigation, new function() {
13
+ var suid = 1;
14
+
15
+ this.init = function() {
16
+ var _this = this;
17
+ var observer = function(e) {
18
+ switch(e.originalEvent.keyCode) {
19
+ case 38: // Event.KEY_UP
20
+ case 40: // Event.KEY_DOWN
21
+ return;
22
+ }
23
+ _this.search(_this.$input[0].value);
24
+ };
25
+ this.$input.keyup(observer);
26
+ this.$input.click(observer); // mac's clear field
27
+
28
+ this.searcher.ready(function(results, isLast) {
29
+ _this.addResults(results, isLast);
30
+ })
31
+
32
+ this.initNavigation();
33
+ this.setNavigationActive(false);
34
+ }
35
+
36
+ this.search = function(value, selectFirstMatch) {
37
+ value = jQuery.trim(value).toLowerCase();
38
+ if (value) {
39
+ this.setNavigationActive(true);
40
+ } else {
41
+ this.setNavigationActive(false);
42
+ }
43
+
44
+ if (value == '') {
45
+ this.lastQuery = value;
46
+ this.$result.empty();
47
+ this.$result.attr('aria-expanded', 'false');
48
+ this.setNavigationActive(false);
49
+ } else if (value != this.lastQuery) {
50
+ this.lastQuery = value;
51
+ this.$result.attr('aria-busy', 'true');
52
+ this.$result.attr('aria-expanded', 'true');
53
+ this.firstRun = true;
54
+ this.searcher.find(value);
55
+ }
56
+ }
57
+
58
+ this.addResults = function(results, isLast) {
59
+ var target = this.$result.get(0);
60
+ if (this.firstRun && (results.length > 0 || isLast)) {
61
+ this.$current = null;
62
+ this.$result.empty();
63
+ }
64
+
65
+ for (var i=0, l = results.length; i < l; i++) {
66
+ var item = this.renderItem.call(this, results[i]);
67
+ item.setAttribute('id', 'search-result-' + target.childElementCount);
68
+ target.appendChild(item);
69
+ };
70
+
71
+ if (this.firstRun && results.length > 0) {
72
+ this.firstRun = false;
73
+ this.$current = $(target.firstChild);
74
+ this.$current.addClass('search-selected');
75
+ }
76
+ if (jQuery.browser.msie) this.$element[0].className += '';
77
+
78
+ if (isLast) this.$result.attr('aria-busy', 'false');
79
+ }
80
+
81
+ this.move = function(isDown) {
82
+ if (!this.$current) return;
83
+ var $next = this.$current[isDown ? 'next' : 'prev']();
84
+ if ($next.length) {
85
+ this.$current.removeClass('search-selected');
86
+ $next.addClass('search-selected');
87
+ this.$input.attr('aria-activedescendant', $next.attr('id'));
88
+ this.scrollIntoView($next[0], this.$view[0]);
89
+ this.$current = $next;
90
+ this.$input.val($next[0].firstChild.firstChild.text);
91
+ this.$input.select();
92
+ }
93
+ return true;
94
+ }
95
+
96
+ this.hlt = function(html) {
97
+ return this.escapeHTML(html).
98
+ replace(/\u0001/g, '<em>').
99
+ replace(/\u0002/g, '</em>');
100
+ }
101
+
102
+ this.escapeHTML = function(html) {
103
+ return html.replace(/[&<>]/g, function(c) {
104
+ return '&#' + c.charCodeAt(0) + ';';
105
+ });
106
+ }
107
+
108
+ });
109
+
@@ -0,0 +1 @@
1
+ var search_data = {"index":{"searchIndex":["alimento","dieta","gema","error","listadobleenlazada","object","plato","comparemode","platoeficienciaenergetica","<=>()","<=>()","alimentos()","build()","calculoemisiones()","cantidadnecesaria()","carbohidratos()","constructhashfromfile()","constructlistfromfile()","copy()","each()","emisiones()","extract_head()","extract_tail()","extracted()","extracted()","extracted()","gei()","huellanutricional()","insert()","insertlist()","inserted()","inserted()","inserted()","lipidos()","new()","new()","new()","new()","proteinas()","setcantidad()","setcantidad()","setcarbohidratos()","setcomparemode()","setgei()","setlipidos()","setnombre()","setproteinas()","setterreno()","terreno()","terreno()","to_s()","to_s()","to_s()","to_s()","valorenergetico()","changelog","gemfile","gemfile.lock","guardfile","readme","rakefile","setup","prct06-tdd.gemspec"],"longSearchIndex":["alimento","dieta","gema","gema::error","listadobleenlazada","object","plato","plato::comparemode","platoeficienciaenergetica","alimento#<=>()","plato#<=>()","dieta::alimentos()","alimento::build()","dieta#calculoemisiones()","alimento#cantidadnecesaria()","alimento#carbohidratos()","alimento::constructhashfromfile()","alimento::constructlistfromfile()","alimento::copy()","listadobleenlazada#each()","dieta#emisiones()","listadobleenlazada#extract_head()","listadobleenlazada#extract_tail()","listadobleenlazada#extracted()","plato#extracted()","platoeficienciaenergetica#extracted()","alimento#gei()","plato#huellanutricional()","listadobleenlazada#insert()","listadobleenlazada#insertlist()","listadobleenlazada#inserted()","plato#inserted()","platoeficienciaenergetica#inserted()","alimento#lipidos()","alimento::new()","listadobleenlazada::new()","plato::new()","platoeficienciaenergetica::new()","alimento#proteinas()","alimento::setcantidad()","alimento#setcantidad()","alimento::setcarbohidratos()","plato::setcomparemode()","alimento::setgei()","alimento::setlipidos()","alimento::setnombre()","alimento::setproteinas()","alimento::setterreno()","alimento#terreno()","dieta#terreno()","alimento#to_s()","listadobleenlazada#to_s()","plato#to_s()","platoeficienciaenergetica#to_s()","alimento#valorenergetico()","","","","","","","",""],"info":[["Alimento","","Alimento.html","","<p>Esta clase representa un Alimento y las propiedades de este (nombre,cantidad,proteinas,carbohidratos,lipidos,…) …\n"],["Dieta","","Dieta.html","",""],["Gema","","Gema.html","",""],["Gema::Error","","Gema/Error.html","",""],["ListaDobleEnlazada","","ListaDobleEnlazada.html","",""],["Object","","Object.html","",""],["Plato","","Plato.html","","<p>Esta clase describe una lista de instancias de la clase Alimento\n"],["Plato::CompareMode","","Plato/CompareMode.html","","<p>Enum útil para controlar el comportamiento del metodo &#39;&lt;=&gt;&#39; (necesario para el modulo &#39;Comparable&#39;). …\n"],["PlatoEficienciaEnergetica","","PlatoEficienciaEnergetica.html","",""],["<=>","Alimento","Alimento.html#method-i-3C-3D-3E","(other)","<p>Metodo que debe ser implementado para que la incorporación del modulo &#39;Comparable&#39; funcione correctamente …\n"],["<=>","Plato","Plato.html#method-i-3C-3D-3E","(other)","<p>Implementación del metodo &#39;Comparable::&lt;=&gt;&#39; para implementación con clase Plato\n"],["alimentos","Dieta","Dieta.html#method-c-alimentos","()",""],["build","Alimento","Alimento.html#method-c-build","()","<p>Construye una nueva instancia de la clase Alimento con los atributos seteados previamente(setTerreno,setCantidad,…) …\n"],["calculoEmisiones","Dieta","Dieta.html#method-i-calculoEmisiones","(dias)",""],["cantidadNecesaria","Alimento","Alimento.html#method-i-cantidadNecesaria","(cal_nec, prot_nec)","<p>Devuelve la cantidad necesaria, en kg, que hay que ingerir del alimento para ingerir cal_nec kcal y …\n"],["carbohidratos","Alimento","Alimento.html#method-i-carbohidratos","()","<p>Recupera la cantidad de carbohidratos,en g, del alimento (relativo a la cantidad del alimento).\n"],["constructHashFromFile","Alimento","Alimento.html#method-c-constructHashFromFile","(input)","<p>Construye un diccionario de instancias de la clase Alimentos, con key == nombre del alimento de acuerdo …\n"],["constructListFromFile","Alimento","Alimento.html#method-c-constructListFromFile","(input)","<p>Construye una lista de instancias de la clase Alimentos de acuerdo al contenido de un fichero. Los parametros …\n"],["copy","Alimento","Alimento.html#method-c-copy","(copy)","<p>Devuelve una instancia copia de la clase Alimento dado otra instancia de la clase Alimento pasado como …\n"],["each","ListaDobleEnlazada","ListaDobleEnlazada.html#method-i-each","()","<p>Metodo de &#39;Enumerable&#39; implementado para que sea capaz de trabajar con objetos de tipo LsitaDobleEnlazada …\n"],["emisiones","Dieta","Dieta.html#method-i-emisiones","()",""],["extract_head","ListaDobleEnlazada","ListaDobleEnlazada.html#method-i-extract_head","()","<p>Retorna la cabeza de la lista del objeto ListaDobleEnlazada y la elimina de esta.\n"],["extract_tail","ListaDobleEnlazada","ListaDobleEnlazada.html#method-i-extract_tail","()","<p>Retorna la cola de la lista del objeto ListaDobleEnlazada y la elimina de esta.\n"],["extracted","ListaDobleEnlazada","ListaDobleEnlazada.html#method-i-extracted","(nodo)","<p>Placeholder de metodo-evento para ser sobreescrito en clases hijas Este metodo se llama cada vez que …\n"],["extracted","Plato","Plato.html#method-i-extracted","(nodo)","<p>Define el comportamiento de la clase Plato en el momento en el que un alimento es eliminado de su lista …\n"],["extracted","PlatoEficienciaEnergetica","PlatoEficienciaEnergetica.html#method-i-extracted","(value)",""],["gei","Alimento","Alimento.html#method-i-gei","()","<p>Recupera la cantidad de gases de efecto invernadero producidos, en KgCO2, en la producción del alimento …\n"],["huellaNutricional","Plato","Plato.html#method-i-huellaNutricional","()","<p>Devuelve la media de las huellasNutricionales de todos los alimentos del plato\n"],["insert","ListaDobleEnlazada","ListaDobleEnlazada.html#method-i-insert","(nodo)","<p>Inserta un elemento en la lista del objeto listaDobleEnlazada\n\n<pre>@param [Object] nodo Elemento a insertar</pre>\n"],["insertList","ListaDobleEnlazada","ListaDobleEnlazada.html#method-i-insertList","(*nodos)","<p>Metodo usado para insertar una lista de elementos en el objeto listaDobleEnlazada\n\n<pre>@param [List] nodos ...</pre>\n"],["inserted","ListaDobleEnlazada","ListaDobleEnlazada.html#method-i-inserted","(nodo)","<p>PlaceHolder de metodo-evento para ser sobreescrito en clases hijas Este metodo se llama cada vez que …\n"],["inserted","Plato","Plato.html#method-i-inserted","(value)","<p>Define el comportamiento de la clase Plato en el momento en el que un nuevo alimento es insertado Sobreescribe …\n"],["inserted","PlatoEficienciaEnergetica","PlatoEficienciaEnergetica.html#method-i-inserted","(value)",""],["lipidos","Alimento","Alimento.html#method-i-lipidos","()","<p>Recupera la cantidad de lipidos,en g, del alimento (relativo a la cantidad del alimento).\n"],["new","Alimento","Alimento.html#method-c-new","(nombre,proteinas,carbohidratos,lipidos, gei,terreno)","<p>Constructor de instancias de la clase Alimento.\n\n<pre>@param [String] nombre.\n@param [Float] proteinas.\n@param ...</pre>\n"],["new","ListaDobleEnlazada","ListaDobleEnlazada.html#method-c-new","()",""],["new","Plato","Plato.html#method-c-new","(nombre)",""],["new","PlatoEficienciaEnergetica","PlatoEficienciaEnergetica.html#method-c-new","(nombre)",""],["proteinas","Alimento","Alimento.html#method-i-proteinas","()","<p>Recupera la cantidad de proteinas, en g, del alimento (relativo a la cantidad del alimento).\n"],["setCantidad","Alimento","Alimento.html#method-c-setCantidad","(cantidad)","<p>Define el parametro &#39;peso&#39;(en kg) de la clase Alimento que el Constructor seteará.\n\n<pre class=\"ruby\"><span class=\"ruby-ivar\">@param</span> [<span class=\"ruby-constant\">Float</span>] <span class=\"ruby-operator\">...</span>\n</pre>\n"],["setCantidad","Alimento","Alimento.html#method-i-setCantidad","(cantidad)","<p>Define la cantidad, en kg, del alimento.\n\n<pre>@param [Float] cantidad .</pre>\n"],["setCarbohidratos","Alimento","Alimento.html#method-c-setCarbohidratos","(carbohidratos)","<p>Define el parametro &#39;carbohidratos&#39;(en g) de la clase Alimento que el Constructor seteará.\n\n<pre class=\"ruby\"><span class=\"ruby-ivar\">@param</span> <span class=\"ruby-operator\">...</span>\n</pre>\n"],["setCompareMode","Plato","Plato.html#method-c-setCompareMode","(mode)","<p>Define el modo de la comparación entre 2 instancias de la clase Plato\n\n<pre class=\"ruby\"><span class=\"ruby-ivar\">@param</span> [<span class=\"ruby-constant\">Integer</span>(<span class=\"ruby-constant\">Enum</span> <span class=\"ruby-constant\">CompareMode</span>)] <span class=\"ruby-operator\">...</span>\n</pre>\n"],["setGEI","Alimento","Alimento.html#method-c-setGEI","(gei)","<p>Define el parametro &#39;gei&#39;(gases de efecto invernadero) de la clase Alimento que el Constructor …\n"],["setLipidos","Alimento","Alimento.html#method-c-setLipidos","(lipidos)","<p>Define el parametro &#39;lipidos&#39;(en g) de la clase Alimento que el Constructor seteará.\n\n<pre class=\"ruby\"><span class=\"ruby-ivar\">@param</span> [<span class=\"ruby-constant\">Lipidos</span>] <span class=\"ruby-operator\">...</span>\n</pre>\n"],["setNombre","Alimento","Alimento.html#method-c-setNombre","(nombre)","<p>Define el parametro &#39;nombre&#39; de la clase Alimento que el Constructor seteará.\n\n<pre class=\"ruby\"><span class=\"ruby-ivar\">@param</span> [<span class=\"ruby-constant\">Nombre</span>] <span class=\"ruby-operator\">...</span>\n</pre>\n"],["setProteinas","Alimento","Alimento.html#method-c-setProteinas","(proteinas)","<p>Define el parametro &#39;proteinas&#39;(en g) de la clase Alimento que el constructor seteará.\n\n<pre class=\"ruby\"><span class=\"ruby-ivar\">@param</span> <span class=\"ruby-operator\">...</span>\n</pre>\n"],["setTerreno","Alimento","Alimento.html#method-c-setTerreno","(terreno)","<p>Define el parametro &#39;terreno&#39;(en m^2 necesarios para producir el alimento) de la clase Alimento …\n"],["terreno","Alimento","Alimento.html#method-i-terreno","()","<p>Recupera la cantidad de m^2 de terreno necesario para producir el alimento (relativo a la cantidad del …\n"],["terreno","Dieta","Dieta.html#method-i-terreno","()",""],["to_s","Alimento","Alimento.html#method-i-to_s","()","<p>Devuelve un string que es el alimento formateado para ser entendible por un humano.\n"],["to_s","ListaDobleEnlazada","ListaDobleEnlazada.html#method-i-to_s","()",""],["to_s","Plato","Plato.html#method-i-to_s","()","<p>Devuelve el objeto Plato formateado en un string endentible para un ser humano\n"],["to_s","PlatoEficienciaEnergetica","PlatoEficienciaEnergetica.html#method-i-to_s","()",""],["valorEnergetico","Alimento","Alimento.html#method-i-valorEnergetico","()","<p>Recupera el valor Energetico, en kcal, que produce la ingesta del alimento (relativo a la cantidad del …\n"],["Changelog","","Changelog_md.html","","<p>commit cc3846de10271b57f58b881e233657d490a28444\nAuthor: Javier Duque Melguizo alu0101160337@ull.edu.es ...\n"],["Gemfile","","Gemfile.html","","<p>source “rubygems.org”\n<p># Specify your gem&#39;s dependencies in prct06-TDD.gemspec gemspec\n"],["Gemfile.lock","","Gemfile_lock.html","","<p>PATH\n\n<pre>remote: .\nspecs:\n prct06-TDD (0.1.0)</pre>\n<p>GEM\n"],["Guardfile","","Guardfile.html","","<p># A sample Guardfile # More info at github.com/guard/guard#readme\n<p>## Uncomment and set this to only include …\n"],["README","","README_md.html","","<p>Prct06::TDD\n<p>Welcome to your new gem! In this directory, you&#39;ll find the files you need to be able …\n"],["Rakefile","","Rakefile.html","","<p>require “bundler/gem_tasks” require “rspec/core/rake_task”\n<p>RSpec::Core::RakeTask.new …\n"],["setup","","bin/setup.html","","<p>#!/usr/bin/env bash set -euo pipefail IFS=$&#39;nt&#39; set -vx\n<p>bundle install\n<p># Do any other automated …\n"],["prct06-TDD.gemspec","","prct06-TDD_gemspec.html","","<p>lib = File.expand_path(“lib”, __dir__) $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) …\n"]]}}
Binary file
@@ -0,0 +1,229 @@
1
+ Searcher = function(data) {
2
+ this.data = data;
3
+ this.handlers = [];
4
+ }
5
+
6
+ Searcher.prototype = new function() {
7
+ // search is performed in chunks of 1000 for non-blocking user input
8
+ var CHUNK_SIZE = 1000;
9
+ // do not try to find more than 100 results
10
+ var MAX_RESULTS = 100;
11
+ var huid = 1;
12
+ var suid = 1;
13
+ var runs = 0;
14
+
15
+ this.find = function(query) {
16
+ var queries = splitQuery(query);
17
+ var regexps = buildRegexps(queries);
18
+ var highlighters = buildHilighters(queries);
19
+ var state = { from: 0, pass: 0, limit: MAX_RESULTS, n: suid++};
20
+ var _this = this;
21
+
22
+ this.currentSuid = state.n;
23
+
24
+ if (!query) return;
25
+
26
+ var run = function() {
27
+ // stop current search thread if new search started
28
+ if (state.n != _this.currentSuid) return;
29
+
30
+ var results =
31
+ performSearch(_this.data, regexps, queries, highlighters, state);
32
+ var hasMore = (state.limit > 0 && state.pass < 4);
33
+
34
+ triggerResults.call(_this, results, !hasMore);
35
+ if (hasMore) {
36
+ setTimeout(run, 2);
37
+ }
38
+ runs++;
39
+ };
40
+ runs = 0;
41
+
42
+ // start search thread
43
+ run();
44
+ }
45
+
46
+ /* ----- Events ------ */
47
+ this.ready = function(fn) {
48
+ fn.huid = huid;
49
+ this.handlers.push(fn);
50
+ }
51
+
52
+ /* ----- Utilities ------ */
53
+ function splitQuery(query) {
54
+ return jQuery.grep(query.split(/(\s+|::?|\(\)?)/), function(string) {
55
+ return string.match(/\S/);
56
+ });
57
+ }
58
+
59
+ function buildRegexps(queries) {
60
+ return jQuery.map(queries, function(query) {
61
+ return new RegExp(query.replace(/(.)/g, '([$1])([^$1]*?)'), 'i');
62
+ });
63
+ }
64
+
65
+ function buildHilighters(queries) {
66
+ return jQuery.map(queries, function(query) {
67
+ return jQuery.map(query.split(''), function(l, i) {
68
+ return '\u0001$' + (i*2+1) + '\u0002$' + (i*2+2);
69
+ }).join('');
70
+ });
71
+ }
72
+
73
+ // function longMatchRegexp(index, longIndex, regexps) {
74
+ // for (var i = regexps.length - 1; i >= 0; i--){
75
+ // if (!index.match(regexps[i]) && !longIndex.match(regexps[i])) return false;
76
+ // };
77
+ // return true;
78
+ // }
79
+
80
+
81
+ /* ----- Mathchers ------ */
82
+
83
+ /*
84
+ * This record matches if the index starts with queries[0] and the record
85
+ * matches all of the regexps
86
+ */
87
+ function matchPassBeginning(index, longIndex, queries, regexps) {
88
+ if (index.indexOf(queries[0]) != 0) return false;
89
+ for (var i=1, l = regexps.length; i < l; i++) {
90
+ if (!index.match(regexps[i]) && !longIndex.match(regexps[i]))
91
+ return false;
92
+ };
93
+ return true;
94
+ }
95
+
96
+ /*
97
+ * This record matches if the longIndex starts with queries[0] and the
98
+ * longIndex matches all of the regexps
99
+ */
100
+ function matchPassLongIndex(index, longIndex, queries, regexps) {
101
+ if (longIndex.indexOf(queries[0]) != 0) return false;
102
+ for (var i=1, l = regexps.length; i < l; i++) {
103
+ if (!longIndex.match(regexps[i]))
104
+ return false;
105
+ };
106
+ return true;
107
+ }
108
+
109
+ /*
110
+ * This record matches if the index contains queries[0] and the record
111
+ * matches all of the regexps
112
+ */
113
+ function matchPassContains(index, longIndex, queries, regexps) {
114
+ if (index.indexOf(queries[0]) == -1) return false;
115
+ for (var i=1, l = regexps.length; i < l; i++) {
116
+ if (!index.match(regexps[i]) && !longIndex.match(regexps[i]))
117
+ return false;
118
+ };
119
+ return true;
120
+ }
121
+
122
+ /*
123
+ * This record matches if regexps[0] matches the index and the record
124
+ * matches all of the regexps
125
+ */
126
+ function matchPassRegexp(index, longIndex, queries, regexps) {
127
+ if (!index.match(regexps[0])) return false;
128
+ for (var i=1, l = regexps.length; i < l; i++) {
129
+ if (!index.match(regexps[i]) && !longIndex.match(regexps[i]))
130
+ return false;
131
+ };
132
+ return true;
133
+ }
134
+
135
+
136
+ /* ----- Highlighters ------ */
137
+ function highlightRegexp(info, queries, regexps, highlighters) {
138
+ var result = createResult(info);
139
+ for (var i=0, l = regexps.length; i < l; i++) {
140
+ result.title = result.title.replace(regexps[i], highlighters[i]);
141
+ result.namespace = result.namespace.replace(regexps[i], highlighters[i]);
142
+ };
143
+ return result;
144
+ }
145
+
146
+ function hltSubstring(string, pos, length) {
147
+ return string.substring(0, pos) + '\u0001' + string.substring(pos, pos + length) + '\u0002' + string.substring(pos + length);
148
+ }
149
+
150
+ function highlightQuery(info, queries, regexps, highlighters) {
151
+ var result = createResult(info);
152
+ var pos = 0;
153
+ var lcTitle = result.title.toLowerCase();
154
+
155
+ pos = lcTitle.indexOf(queries[0]);
156
+ if (pos != -1) {
157
+ result.title = hltSubstring(result.title, pos, queries[0].length);
158
+ }
159
+
160
+ result.namespace = result.namespace.replace(regexps[0], highlighters[0]);
161
+ for (var i=1, l = regexps.length; i < l; i++) {
162
+ result.title = result.title.replace(regexps[i], highlighters[i]);
163
+ result.namespace = result.namespace.replace(regexps[i], highlighters[i]);
164
+ };
165
+ return result;
166
+ }
167
+
168
+ function createResult(info) {
169
+ var result = {};
170
+ result.title = info[0];
171
+ result.namespace = info[1];
172
+ result.path = info[2];
173
+ result.params = info[3];
174
+ result.snippet = info[4];
175
+ result.badge = info[6];
176
+ return result;
177
+ }
178
+
179
+ /* ----- Searching ------ */
180
+ function performSearch(data, regexps, queries, highlighters, state) {
181
+ var searchIndex = data.searchIndex;
182
+ var longSearchIndex = data.longSearchIndex;
183
+ var info = data.info;
184
+ var result = [];
185
+ var i = state.from;
186
+ var l = searchIndex.length;
187
+ var togo = CHUNK_SIZE;
188
+ var matchFunc, hltFunc;
189
+
190
+ while (state.pass < 4 && state.limit > 0 && togo > 0) {
191
+ if (state.pass == 0) {
192
+ matchFunc = matchPassBeginning;
193
+ hltFunc = highlightQuery;
194
+ } else if (state.pass == 1) {
195
+ matchFunc = matchPassLongIndex;
196
+ hltFunc = highlightQuery;
197
+ } else if (state.pass == 2) {
198
+ matchFunc = matchPassContains;
199
+ hltFunc = highlightQuery;
200
+ } else if (state.pass == 3) {
201
+ matchFunc = matchPassRegexp;
202
+ hltFunc = highlightRegexp;
203
+ }
204
+
205
+ for (; togo > 0 && i < l && state.limit > 0; i++, togo--) {
206
+ if (info[i].n == state.n) continue;
207
+ if (matchFunc(searchIndex[i], longSearchIndex[i], queries, regexps)) {
208
+ info[i].n = state.n;
209
+ result.push(hltFunc(info[i], queries, regexps, highlighters));
210
+ state.limit--;
211
+ }
212
+ };
213
+ if (searchIndex.length <= i) {
214
+ state.pass++;
215
+ i = state.from = 0;
216
+ } else {
217
+ state.from = i;
218
+ }
219
+ }
220
+ return result;
221
+ }
222
+
223
+ function triggerResults(results, isLast) {
224
+ jQuery.each(this.handlers, function(i, fn) {
225
+ fn.call(this, results, isLast)
226
+ })
227
+ }
228
+ }
229
+
Binary file
@@ -0,0 +1,134 @@
1
+ <!DOCTYPE html>
2
+
3
+ <html>
4
+ <head>
5
+ <meta charset="UTF-8">
6
+
7
+ <title>prct06-TDD.gemspec - RDoc Documentation</title>
8
+
9
+ <script type="text/javascript">
10
+ var rdoc_rel_prefix = "./";
11
+ var index_rel_prefix = "./";
12
+ </script>
13
+
14
+ <script src="./js/jquery.js"></script>
15
+ <script src="./js/darkfish.js"></script>
16
+
17
+ <link href="./css/fonts.css" rel="stylesheet">
18
+ <link href="./css/rdoc.css" rel="stylesheet">
19
+
20
+
21
+
22
+
23
+ <body id="top" role="document" class="file">
24
+ <nav role="navigation">
25
+ <div id="project-navigation">
26
+ <div id="home-section" role="region" title="Quick navigation" class="nav-section">
27
+ <h2>
28
+ <a href="./index.html" rel="home">Home</a>
29
+ </h2>
30
+
31
+ <div id="table-of-contents-navigation">
32
+ <a href="./table_of_contents.html#pages">Pages</a>
33
+ <a href="./table_of_contents.html#classes">Classes</a>
34
+ <a href="./table_of_contents.html#methods">Methods</a>
35
+ </div>
36
+ </div>
37
+
38
+ <div id="search-section" role="search" class="project-section initially-hidden">
39
+ <form action="#" method="get" accept-charset="utf-8">
40
+ <div id="search-field-wrapper">
41
+ <input id="search-field" role="combobox" aria-label="Search"
42
+ aria-autocomplete="list" aria-controls="search-results"
43
+ type="text" name="search" placeholder="Search" spellcheck="false"
44
+ title="Type to search, Up and Down to navigate, Enter to load">
45
+ </div>
46
+
47
+ <ul id="search-results" aria-label="Search Results"
48
+ aria-busy="false" aria-expanded="false"
49
+ aria-atomic="false" class="initially-hidden"></ul>
50
+ </form>
51
+ </div>
52
+
53
+ </div>
54
+
55
+
56
+
57
+ <div id="project-metadata">
58
+ <div id="fileindex-section" class="nav-section">
59
+ <h3>Pages</h3>
60
+
61
+ <ul class="link-list">
62
+
63
+ <li><a href="./Changelog_md.html">Changelog</a>
64
+
65
+ <li><a href="./Gemfile.html">Gemfile</a>
66
+
67
+ <li><a href="./Gemfile_lock.html">Gemfile.lock</a>
68
+
69
+ <li><a href="./Guardfile.html">Guardfile</a>
70
+
71
+ <li><a href="./README_md.html">README</a>
72
+
73
+ <li><a href="./Rakefile.html">Rakefile</a>
74
+
75
+ <li><a href="./bin/setup.html">setup</a>
76
+
77
+ <li><a href="./prct06-TDD_gemspec.html">prct06-TDD.gemspec</a>
78
+
79
+ </ul>
80
+ </div>
81
+
82
+ </div>
83
+ </nav>
84
+
85
+ <main role="main" aria-label="Page prct06-TDD.gemspec">
86
+
87
+ <p>lib = File.expand_path(“lib”, __dir__) $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) require “gema/version”</p>
88
+
89
+ <p>Gem::Specification.new do |spec|</p>
90
+
91
+ <pre class="ruby"><span class="ruby-identifier">spec</span>.<span class="ruby-identifier">name</span> = <span class="ruby-string">&quot;prct06-TDD&quot;</span>
92
+ <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">version</span> = <span class="ruby-constant">Gema</span><span class="ruby-operator">::</span><span class="ruby-constant">VERSION</span>
93
+ <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">authors</span> = [<span class="ruby-string">&quot;Javier Duque Melguizo&quot;</span>]
94
+ <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">email</span> = [<span class="ruby-string">&quot;alu0101160337@ull.edu.es&quot;</span>]
95
+
96
+ <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">summary</span> = <span class="ruby-string">%q{Es un ejemplo de test-driven development}</span>
97
+ <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">description</span> = <span class="ruby-string">%q{En esta practica se plantea para aprender a usar bundle, rspec y como funciona el desarrollo basado en TDD.}</span>
98
+ <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">homepage</span> = <span class="ruby-string">&quot;https://github.com/ULL-ESIT-LPP-1920/tdd-JDM-ULL-93&quot;</span>
99
+
100
+ <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">metadata</span>[<span class="ruby-string">&quot;allowed_push_host&quot;</span>] = <span class="ruby-string">&quot;https://github.com/ULL-ESIT-LPP-1920/tdd-JDM-ULL-93&quot;</span>
101
+
102
+ <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">metadata</span>[<span class="ruby-string">&quot;homepage_uri&quot;</span>] = <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">homepage</span>
103
+ <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">metadata</span>[<span class="ruby-string">&quot;source_code_uri&quot;</span>] = <span class="ruby-string">&quot;https://github.com/ULL-ESIT-LPP-1920/tdd-JDM-ULL-93&quot;</span>
104
+ <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">metadata</span>[<span class="ruby-string">&quot;changelog_uri&quot;</span>] = <span class="ruby-string">&quot;https://github.com/ULL-ESIT-LPP-1920/tdd-JDM-ULL-93&quot;</span>
105
+
106
+ <span class="ruby-comment"># Specify which files should be added to the gem when it is released.</span>
107
+ <span class="ruby-comment"># The `git ls-files -z` loads the files in the RubyGem that have been added into git.</span>
108
+ <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">files</span> = <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">chdir</span>(<span class="ruby-constant">File</span>.<span class="ruby-identifier">expand_path</span>(<span class="ruby-string">&#39;..&#39;</span>, <span class="ruby-keyword">__FILE__</span>)) <span class="ruby-keyword">do</span>
109
+ <span class="ruby-string">`git ls-files -z`</span>.<span class="ruby-identifier">split</span>(<span class="ruby-string">&quot;\x0&quot;</span>).<span class="ruby-identifier">reject</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">f</span><span class="ruby-operator">|</span> <span class="ruby-identifier">f</span>.<span class="ruby-identifier">match</span>(<span class="ruby-regexp">%r{^(test|spec|features)/}</span>) }
110
+ <span class="ruby-keyword">end</span>
111
+ <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">bindir</span> = <span class="ruby-string">&quot;exe&quot;</span>
112
+ <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">executables</span> = <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">files</span>.<span class="ruby-identifier">grep</span>(<span class="ruby-regexp">%r{^exe/}</span>) { <span class="ruby-operator">|</span><span class="ruby-identifier">f</span><span class="ruby-operator">|</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">basename</span>(<span class="ruby-identifier">f</span>) }
113
+ <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">require_paths</span> = [<span class="ruby-string">&quot;lib&quot;</span>]
114
+
115
+ <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">add_development_dependency</span> <span class="ruby-string">&quot;bundler&quot;</span>, <span class="ruby-string">&quot;~&gt; 2.0&quot;</span>
116
+ <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">add_development_dependency</span> <span class="ruby-string">&quot;rake&quot;</span>, <span class="ruby-string">&quot;~&gt; 10.0&quot;</span>
117
+ <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">add_development_dependency</span> <span class="ruby-string">&quot;rspec&quot;</span>, <span class="ruby-string">&quot;~&gt; 3.0&quot;</span>
118
+ <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">add_development_dependency</span> <span class="ruby-string">&quot;guard&quot;</span>
119
+ <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">add_development_dependency</span> <span class="ruby-string">&quot;guard-rspec&quot;</span>
120
+ <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">add_development_dependency</span> <span class="ruby-string">&quot;guard-bundler&quot;</span>
121
+ </pre>
122
+
123
+ <p># spec.add_development_dependency “gema/ListaDobleEnlazada” end</p>
124
+
125
+ </main>
126
+
127
+
128
+
129
+ <footer id="validator-badges" role="contentinfo">
130
+ <p><a href="https://validator.w3.org/check/referer">Validate</a>
131
+ <p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.0.
132
+ <p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
133
+ </footer>
134
+