examen 1.2.4
Sign up to get free protection for your applications and to get access to all the features.
- 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
|