examen 1.2.4
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/.coveralls.yml +1 -0
- data/.gitignore +14 -0
- data/.rspec +2 -0
- data/.travis.yml +6 -0
- data/Gemfile +8 -0
- data/Gemfile.lock +91 -0
- data/Guardfile +40 -0
- data/LICENSE.txt +22 -0
- data/README.md +65 -0
- data/README.rdoc +65 -0
- data/Rakefile +25 -0
- data/doc/prct10.pdf +0 -0
- data/doc/prct5.pdf +0 -0
- data/doc/prct6.pdf +0 -0
- data/doc/prct7.pdf +0 -0
- data/doc/prct8.pdf +0 -0
- data/doc/prct9.pdf +0 -0
- data/doc/pruebas/index.html +430 -0
- data/examen.gemspec +29 -0
- data/html/Exam.html +296 -0
- data/html/Examen.html +119 -0
- data/html/ExamenIu.html +278 -0
- data/html/Lista.html +536 -0
- data/html/Object.html +119 -0
- data/html/Pregunta.html +361 -0
- data/html/PreguntaVerdaderoFalso.html +169 -0
- data/html/Quiz.html +363 -0
- data/html/README_rdoc.html +154 -0
- data/html/created.rid +11 -0
- data/html/fonts.css +167 -0
- data/html/fonts/Lato-Light.ttf +0 -0
- data/html/fonts/Lato-LightItalic.ttf +0 -0
- data/html/fonts/Lato-Regular.ttf +0 -0
- data/html/fonts/Lato-RegularItalic.ttf +0 -0
- data/html/fonts/SourceCodePro-Bold.ttf +0 -0
- data/html/fonts/SourceCodePro-Regular.ttf +0 -0
- data/html/images/add.png +0 -0
- data/html/images/arrow_up.png +0 -0
- data/html/images/brick.png +0 -0
- data/html/images/brick_link.png +0 -0
- data/html/images/bug.png +0 -0
- data/html/images/bullet_black.png +0 -0
- data/html/images/bullet_toggle_minus.png +0 -0
- data/html/images/bullet_toggle_plus.png +0 -0
- data/html/images/date.png +0 -0
- data/html/images/delete.png +0 -0
- data/html/images/find.png +0 -0
- data/html/images/loadingAnimation.gif +0 -0
- data/html/images/macFFBgHack.png +0 -0
- data/html/images/package.png +0 -0
- data/html/images/page_green.png +0 -0
- data/html/images/page_white_text.png +0 -0
- data/html/images/page_white_width.png +0 -0
- data/html/images/plugin.png +0 -0
- data/html/images/ruby.png +0 -0
- data/html/images/tag_blue.png +0 -0
- data/html/images/tag_green.png +0 -0
- data/html/images/transparent.png +0 -0
- data/html/images/wrench.png +0 -0
- data/html/images/wrench_orange.png +0 -0
- data/html/images/zoom.png +0 -0
- data/html/index.html +178 -0
- data/html/js/darkfish.js +140 -0
- data/html/js/jquery.js +4 -0
- data/html/js/navigation.js +142 -0
- data/html/js/search.js +109 -0
- data/html/js/search_index.js +1 -0
- data/html/js/searcher.js +228 -0
- data/html/rdoc.css +580 -0
- data/html/table_of_contents.html +204 -0
- data/lib/examen.rb +3 -0
- data/lib/examen/base.rb +3 -0
- data/lib/examen/exam.rb +24 -0
- data/lib/examen/examen_iu.rb +38 -0
- data/lib/examen/lista.rb +108 -0
- data/lib/examen/pregunta.rb +38 -0
- data/lib/examen/pregunta_verdadero_falso.rb +16 -0
- data/lib/examen/quiz.rb +35 -0
- data/lib/examen/version.rb +4 -0
- data/spec/examen_spec.rb +334 -0
- data/spec/spec_helper.rb +99 -0
- metadata +229 -0
@@ -0,0 +1,204 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
|
3
|
+
<html>
|
4
|
+
<head>
|
5
|
+
<meta charset="UTF-8">
|
6
|
+
|
7
|
+
<title>Table of Contents - RDoc Documentation</title>
|
8
|
+
|
9
|
+
<link href="./fonts.css" rel="stylesheet">
|
10
|
+
<link href="./rdoc.css" rel="stylesheet">
|
11
|
+
|
12
|
+
<script type="text/javascript">
|
13
|
+
var rdoc_rel_prefix = "./";
|
14
|
+
</script>
|
15
|
+
|
16
|
+
<script src="./js/jquery.js"></script>
|
17
|
+
<script src="./js/navigation.js"></script>
|
18
|
+
<script src="./js/search_index.js"></script>
|
19
|
+
<script src="./js/search.js"></script>
|
20
|
+
<script src="./js/searcher.js"></script>
|
21
|
+
<script src="./js/darkfish.js"></script>
|
22
|
+
|
23
|
+
|
24
|
+
<body id="top" class="table-of-contents">
|
25
|
+
<main role="main">
|
26
|
+
<h1 class="class">Table of Contents - RDoc Documentation</h1>
|
27
|
+
|
28
|
+
<h2 id="pages">Pages</h2>
|
29
|
+
<ul>
|
30
|
+
<li class="file">
|
31
|
+
<a href="README_rdoc.html">README</a>
|
32
|
+
|
33
|
+
<ul>
|
34
|
+
<li><a href="README_rdoc.html#label-"></a>
|
35
|
+
</ul>
|
36
|
+
</li>
|
37
|
+
|
38
|
+
</ul>
|
39
|
+
|
40
|
+
<h2 id="classes">Classes and Modules</h2>
|
41
|
+
<ul>
|
42
|
+
<li class="class">
|
43
|
+
<a href="Exam.html">Exam</a>
|
44
|
+
</li>
|
45
|
+
<li class="class">
|
46
|
+
<a href="Examen.html">Examen</a>
|
47
|
+
</li>
|
48
|
+
<li class="class">
|
49
|
+
<a href="ExamenIu.html">ExamenIu</a>
|
50
|
+
</li>
|
51
|
+
<li class="class">
|
52
|
+
<a href="Lista.html">Lista</a>
|
53
|
+
</li>
|
54
|
+
<li class="class">
|
55
|
+
<a href="Object.html">Object</a>
|
56
|
+
</li>
|
57
|
+
<li class="class">
|
58
|
+
<a href="Pregunta.html">Pregunta</a>
|
59
|
+
</li>
|
60
|
+
<li class="class">
|
61
|
+
<a href="PreguntaVerdaderoFalso.html">PreguntaVerdaderoFalso</a>
|
62
|
+
</li>
|
63
|
+
<li class="class">
|
64
|
+
<a href="Quiz.html">Quiz</a>
|
65
|
+
</li>
|
66
|
+
</ul>
|
67
|
+
|
68
|
+
<h2 id="methods">Methods</h2>
|
69
|
+
<ul>
|
70
|
+
|
71
|
+
<li class="method">
|
72
|
+
<a href="Exam.html#method-c-new">::new</a>
|
73
|
+
—
|
74
|
+
<span class="container">Exam</span>
|
75
|
+
|
76
|
+
<li class="method">
|
77
|
+
<a href="Quiz.html#method-c-new">::new</a>
|
78
|
+
—
|
79
|
+
<span class="container">Quiz</span>
|
80
|
+
|
81
|
+
<li class="method">
|
82
|
+
<a href="Pregunta.html#method-c-new">::new</a>
|
83
|
+
—
|
84
|
+
<span class="container">Pregunta</span>
|
85
|
+
|
86
|
+
<li class="method">
|
87
|
+
<a href="Lista.html#method-c-new">::new</a>
|
88
|
+
—
|
89
|
+
<span class="container">Lista</span>
|
90
|
+
|
91
|
+
<li class="method">
|
92
|
+
<a href="ExamenIu.html#method-c-new">::new</a>
|
93
|
+
—
|
94
|
+
<span class="container">ExamenIu</span>
|
95
|
+
|
96
|
+
<li class="method">
|
97
|
+
<a href="PreguntaVerdaderoFalso.html#method-c-new">::new</a>
|
98
|
+
—
|
99
|
+
<span class="container">PreguntaVerdaderoFalso</span>
|
100
|
+
|
101
|
+
<li class="method">
|
102
|
+
<a href="Exam.html#method-i-3C-3C">#<<</a>
|
103
|
+
—
|
104
|
+
<span class="container">Exam</span>
|
105
|
+
|
106
|
+
<li class="method">
|
107
|
+
<a href="Lista.html#method-i-3C-3C">#<<</a>
|
108
|
+
—
|
109
|
+
<span class="container">Lista</span>
|
110
|
+
|
111
|
+
<li class="method">
|
112
|
+
<a href="Pregunta.html#method-i-3C-3D-3E">#<=></a>
|
113
|
+
—
|
114
|
+
<span class="container">Pregunta</span>
|
115
|
+
|
116
|
+
<li class="method">
|
117
|
+
<a href="Pregunta.html#method-i-3D-3D">#==</a>
|
118
|
+
—
|
119
|
+
<span class="container">Pregunta</span>
|
120
|
+
|
121
|
+
<li class="method">
|
122
|
+
<a href="Lista.html#method-i-each">#each</a>
|
123
|
+
—
|
124
|
+
<span class="container">Lista</span>
|
125
|
+
|
126
|
+
<li class="method">
|
127
|
+
<a href="Lista.html#method-i-inv">#inv</a>
|
128
|
+
—
|
129
|
+
<span class="container">Lista</span>
|
130
|
+
|
131
|
+
<li class="method">
|
132
|
+
<a href="Lista.html#method-i-invertir">#invertir</a>
|
133
|
+
—
|
134
|
+
<span class="container">Lista</span>
|
135
|
+
|
136
|
+
<li class="method">
|
137
|
+
<a href="Lista.html#method-i-pop">#pop</a>
|
138
|
+
—
|
139
|
+
<span class="container">Lista</span>
|
140
|
+
|
141
|
+
<li class="method">
|
142
|
+
<a href="Lista.html#method-i-push_back">#push_back</a>
|
143
|
+
—
|
144
|
+
<span class="container">Lista</span>
|
145
|
+
|
146
|
+
<li class="method">
|
147
|
+
<a href="Exam.html#method-i-push_back">#push_back</a>
|
148
|
+
—
|
149
|
+
<span class="container">Exam</span>
|
150
|
+
|
151
|
+
<li class="method">
|
152
|
+
<a href="Quiz.html#method-i-question">#question</a>
|
153
|
+
—
|
154
|
+
<span class="container">Quiz</span>
|
155
|
+
|
156
|
+
<li class="method">
|
157
|
+
<a href="Quiz.html#method-i-right">#right</a>
|
158
|
+
—
|
159
|
+
<span class="container">Quiz</span>
|
160
|
+
|
161
|
+
<li class="method">
|
162
|
+
<a href="ExamenIu.html#method-i-test">#test</a>
|
163
|
+
—
|
164
|
+
<span class="container">ExamenIu</span>
|
165
|
+
|
166
|
+
<li class="method">
|
167
|
+
<a href="ExamenIu.html#method-i-testinteractivo">#testinteractivo</a>
|
168
|
+
—
|
169
|
+
<span class="container">ExamenIu</span>
|
170
|
+
|
171
|
+
<li class="method">
|
172
|
+
<a href="Lista.html#method-i-to_s">#to_s</a>
|
173
|
+
—
|
174
|
+
<span class="container">Lista</span>
|
175
|
+
|
176
|
+
<li class="method">
|
177
|
+
<a href="Exam.html#method-i-to_s">#to_s</a>
|
178
|
+
—
|
179
|
+
<span class="container">Exam</span>
|
180
|
+
|
181
|
+
<li class="method">
|
182
|
+
<a href="Quiz.html#method-i-to_s">#to_s</a>
|
183
|
+
—
|
184
|
+
<span class="container">Quiz</span>
|
185
|
+
|
186
|
+
<li class="method">
|
187
|
+
<a href="Pregunta.html#method-i-to_s">#to_s</a>
|
188
|
+
—
|
189
|
+
<span class="container">Pregunta</span>
|
190
|
+
|
191
|
+
<li class="method">
|
192
|
+
<a href="Quiz.html#method-i-wrong">#wrong</a>
|
193
|
+
—
|
194
|
+
<span class="container">Quiz</span>
|
195
|
+
</ul>
|
196
|
+
</main>
|
197
|
+
|
198
|
+
|
199
|
+
<footer id="validator-badges" role="contentinfo">
|
200
|
+
<p><a href="http://validator.w3.org/check/referer">Validate</a>
|
201
|
+
<p>Generated by <a href="http://rdoc.rubyforge.org">RDoc</a> 4.1.0.
|
202
|
+
<p>Based on <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
|
203
|
+
</footer>
|
204
|
+
|
data/lib/examen.rb
ADDED
data/lib/examen/base.rb
ADDED
data/lib/examen/exam.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
require "lista"
|
3
|
+
# Clase gestora de examenes con preguntas
|
4
|
+
class Exam
|
5
|
+
attr_accessor :list
|
6
|
+
# Crea una instancia de la clase Exam , a partir de una pregunta.
|
7
|
+
def initialize(p)
|
8
|
+
@list = Lista.new(p)
|
9
|
+
end
|
10
|
+
# Definición del Metotodo to_s, para la clase Exam.
|
11
|
+
def to_s
|
12
|
+
"#{@list}"
|
13
|
+
end
|
14
|
+
# Sobrecarga del operador << para insertar preguntas al final del Examen.
|
15
|
+
def <<(p)
|
16
|
+
@list << p
|
17
|
+
end
|
18
|
+
# Inserta una o varias preguntas sucesivamente.
|
19
|
+
def push_back(*preguntas)
|
20
|
+
preguntas.each { |p| @list << p}
|
21
|
+
preguntas
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'exam'
|
3
|
+
# Clase gestora de la Interfaz de usuario de la gema.
|
4
|
+
class ExamenIu
|
5
|
+
attr_accessor :exam
|
6
|
+
# Crea una nueva instancia a partir de una pregunta.
|
7
|
+
def initialize(pregunta)
|
8
|
+
@exam = Exam.new(pregunta)
|
9
|
+
end
|
10
|
+
# Dado un conjunto de respuestas las evalua e indica cuales son correctas y cuales no.
|
11
|
+
def test(resp)
|
12
|
+
result = Array.new(@exam.list.count, 0)
|
13
|
+
i = 0
|
14
|
+
@exam.list.each do |p|
|
15
|
+
result[i] = (p.right.to_s.eql?resp[i].to_s)?1:0
|
16
|
+
i += 1
|
17
|
+
end
|
18
|
+
result
|
19
|
+
end
|
20
|
+
# Muestra la Interfaz de Usuario solicitando por pantalla las respuestas e indicando si son correctas o no.
|
21
|
+
def testinteractivo
|
22
|
+
result = Array.new(@exam.list.count, 0)
|
23
|
+
i = 0
|
24
|
+
acertadas = 0
|
25
|
+
@exam.list.each do |p|
|
26
|
+
pActual = p.to_s
|
27
|
+
puts (i + 1).to_s + ") " + pActual
|
28
|
+
STDOUT.flush
|
29
|
+
opc = pActual.match(%r{#{gets.chomp}\)\s+(.*)})[1]
|
30
|
+
result[i] = (p.right.to_s.eql?opc)?1:0
|
31
|
+
acertadas += 1 if (result[i] == 1)
|
32
|
+
puts "> Respuesta #{((result[i] == 1)?"correcta":"incorrecta") + " (" + acertadas.to_s + "/" + result.size.to_s + ")"}\n\n"
|
33
|
+
i += 1
|
34
|
+
end
|
35
|
+
result
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
data/lib/examen/lista.rb
ADDED
@@ -0,0 +1,108 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
require "pregunta_verdadero_falso"
|
3
|
+
|
4
|
+
Nodo = Struct.new :value, :next, :prev
|
5
|
+
|
6
|
+
# Clase gestora de Lista doblemente enlazada.
|
7
|
+
class Lista
|
8
|
+
attr_accessor :cabeza, :cola, :total
|
9
|
+
|
10
|
+
include Enumerable
|
11
|
+
|
12
|
+
# Instancia de la clase Lista a partir de una Pregunta.
|
13
|
+
def initialize(p)
|
14
|
+
raise TypeError, "Esperada pregunta como parámetro de entrada" unless p.is_a? (Pregunta)
|
15
|
+
@cabeza = Nodo.new(p, nil, nil)
|
16
|
+
@cola = @cabeza
|
17
|
+
@total = 1
|
18
|
+
end
|
19
|
+
|
20
|
+
# Extrae la cabeza de la lista actualmente. Si la lista está vacía genera una excepción (IndexError).
|
21
|
+
def pop
|
22
|
+
raise IndexError, "Lista vacía, imposible hacer pop" unless @total > 0
|
23
|
+
head = nil
|
24
|
+
if @cola == @cabeza
|
25
|
+
head = @cabeza
|
26
|
+
@cola = @cabeza = nil
|
27
|
+
head.next = head.prev = nil
|
28
|
+
else
|
29
|
+
head = @cabeza
|
30
|
+
@cabeza = @cabeza.next
|
31
|
+
@cabeza.prev = nil
|
32
|
+
head.next = nil
|
33
|
+
end
|
34
|
+
@total -= 1
|
35
|
+
head.value
|
36
|
+
end
|
37
|
+
|
38
|
+
# Sobrecarga del operador << para insertar una pregunta al final de la lista.
|
39
|
+
def <<(p)
|
40
|
+
raise TypeError, "Esperada pregunta para inserción" unless p.is_a? (Pregunta)
|
41
|
+
if (@total == 0)
|
42
|
+
@cabeza = Nodo.new(p, nil, nil)
|
43
|
+
@cola = @cabeza
|
44
|
+
else
|
45
|
+
@cola.next = Nodo.new(p, nil, @cola)
|
46
|
+
@cola = @cola.next
|
47
|
+
@cola.value
|
48
|
+
end
|
49
|
+
@total += 1
|
50
|
+
end
|
51
|
+
|
52
|
+
# Inserta una o varias preguntas sucesivamente.
|
53
|
+
def push_back(*preguntas)
|
54
|
+
preguntas.each do |p|
|
55
|
+
if (@total == 0)
|
56
|
+
@cabeza = Nodo.new(p, nil, nil)
|
57
|
+
@cola = @cabeza
|
58
|
+
else
|
59
|
+
@cola.next = Nodo.new(p, nil, @cola)
|
60
|
+
@cola = @cola.next
|
61
|
+
end
|
62
|
+
@total += 1
|
63
|
+
end
|
64
|
+
preguntas
|
65
|
+
end
|
66
|
+
|
67
|
+
# Definición del Metotodo to_s, para la clase Lista.
|
68
|
+
def to_s
|
69
|
+
aux = @cabeza
|
70
|
+
s = ''
|
71
|
+
i = 1
|
72
|
+
while (aux != nil) do
|
73
|
+
s += "#{i}.-) #{aux.value}\n"
|
74
|
+
aux = aux.next
|
75
|
+
i += 1
|
76
|
+
end
|
77
|
+
s
|
78
|
+
end
|
79
|
+
|
80
|
+
# Definición del método :each para el manejo de métodos del módulo Enumerable.
|
81
|
+
def each
|
82
|
+
aux = @cabeza
|
83
|
+
while (aux != nil) do
|
84
|
+
yield aux.value
|
85
|
+
aux = aux.next
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
# Devuelve la lista actual invertida.
|
90
|
+
def inv(&block)
|
91
|
+
block = ->(x) {true} if !block_given?
|
92
|
+
list = invertir(@cabeza, &block)
|
93
|
+
list.pop
|
94
|
+
return nil if list.total == 0
|
95
|
+
list
|
96
|
+
end
|
97
|
+
|
98
|
+
# Método auxiliar utilizado para invertir la lista mediante recursividad.
|
99
|
+
def invertir(actual, &block)
|
100
|
+
return Lista.new(Pregunta.new(:text => "dummy", :right => "dummy", :distractors => ["dummy"])) if (actual == nil)
|
101
|
+
list = invertir(actual.next, &block)
|
102
|
+
list << actual.value if block[actual.value]
|
103
|
+
list
|
104
|
+
end
|
105
|
+
|
106
|
+
private :invertir
|
107
|
+
|
108
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
# Clase gestora de una Pregunta de multiples opciones.
|
3
|
+
class Pregunta
|
4
|
+
attr_accessor :text, :right, :distractors, :difficulty
|
5
|
+
|
6
|
+
include Comparable
|
7
|
+
# Instancia una nueva Pregunta, a partir de un texto, una respuesta correcta, un conjunto de respuestas falsas y opcionalmente la dificultad.
|
8
|
+
def initialize(args)
|
9
|
+
raise ArgumentError, "Esperada pregunta (:text)" unless args[:text]
|
10
|
+
raise ArgumentError, "Esperada respuesta correcta (:right)" unless args[:right]
|
11
|
+
raise ArgumentError, "Esperadas respuestas incorrectas (:distractors)" unless args[:distractors]
|
12
|
+
@text = args[:text]
|
13
|
+
@right = args[:right]
|
14
|
+
@distractors = args[:distractors]
|
15
|
+
@difficulty = (args.key?:difficulty)?args[:difficulty]:1
|
16
|
+
end
|
17
|
+
# Definición del Metodo to_s para mostrar una pregunta.
|
18
|
+
def to_s
|
19
|
+
opciones = @distractors + [@right]
|
20
|
+
opciones = opciones.shuffle
|
21
|
+
s = "#{@text}\n"
|
22
|
+
letras = ('a'..'z').to_a[0..(opciones.size - 1)]
|
23
|
+
i = 0
|
24
|
+
opciones.each do |o|
|
25
|
+
s += "#{letras[i]}) #{o}\n"
|
26
|
+
i += 1
|
27
|
+
end
|
28
|
+
s
|
29
|
+
end
|
30
|
+
# Sobrecarga el operador <=> para comparar por dificultad.
|
31
|
+
def <=>(p)
|
32
|
+
@difficulty <=> p.difficulty
|
33
|
+
end
|
34
|
+
# Sobrecarga el operador == para comparar por el texto.
|
35
|
+
def ==(p)
|
36
|
+
@text.eql?p.text
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'pregunta'
|
3
|
+
|
4
|
+
# Clase gestora de preguntas de verdadero y falso.
|
5
|
+
class PreguntaVerdaderoFalso < Pregunta
|
6
|
+
|
7
|
+
# Instancia de la clase PreguntaVerdaderoFalso donde le pasas un texto y un booleano asociado a la respuesta correcta.
|
8
|
+
def initialize(args)
|
9
|
+
raise ArgumentError, "Esperada pregunta (:text)" unless args.key?(:text)
|
10
|
+
raise ArgumentError, "Esperada respuesta correcta (:right)" unless args.key?(:right)
|
11
|
+
args[:right] = ((args[:right])?"Cierto":"Falso")
|
12
|
+
args[:distractors] = [((args[:right])?"Falso":"Cierto")]
|
13
|
+
super args
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
data/lib/examen/quiz.rb
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require "exam"
|
3
|
+
#Clase gestora de un DSL
|
4
|
+
class Quiz
|
5
|
+
attr_accessor :exam, :count, :title
|
6
|
+
#Crea una Instancia de la clase Quiz, a partir de un título y un bloque
|
7
|
+
def initialize(title, &block)
|
8
|
+
@title = title
|
9
|
+
@exam = Exam.new(Pregunta.new(:text => "dummy", :right => "dummy", :distractors => ["dummy"]))
|
10
|
+
@exam.list.pop
|
11
|
+
@count = 0
|
12
|
+
instance_eval &block
|
13
|
+
end
|
14
|
+
#Devuelve el Simbolo :right
|
15
|
+
def right
|
16
|
+
:right
|
17
|
+
end
|
18
|
+
#Devuelve un Array con el Simbolo :wrong y un indice
|
19
|
+
def wrong
|
20
|
+
@count += 1
|
21
|
+
[:wrong, @count]
|
22
|
+
end
|
23
|
+
#Actualiza el examen actual, con una nueva pregunta
|
24
|
+
def question(*args)
|
25
|
+
distract = Array.new
|
26
|
+
args[1].keys.each { |x| distract << args[1][x] if x.class.equal? Array }
|
27
|
+
exam << Pregunta.new(:text => args[0], :right => args[1][:right], :distractors => distract)
|
28
|
+
exam
|
29
|
+
end
|
30
|
+
#Definicion del Metodo to_s, para la Clase Quiz
|
31
|
+
def to_s
|
32
|
+
"\s\s#{@title}\n#{'#' * (@title.size + 4)}\n\n#{@exam}"
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|