gift-parser 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +2 -0
- data/LICENCE +23 -0
- data/README +18 -0
- data/RakeFile +39 -0
- data/VERSION +1 -0
- data/gift-parser.gemspec +57 -0
- data/github.com +0 -0
- data/lib/gift.rb +267 -0
- data/lib/gift_parser.rb +3242 -0
- data/src/gift_parser.treetop +207 -0
- data/test/GIFT-examples.rb +400 -0
- data/test/GIFT-examples.txt +27 -0
- data/test/gift_semantic_test.rb +179 -0
- data/test/gift_syntax_test.rb +243 -0
- data/test/gift_test.rb +55 -0
- metadata +79 -0
@@ -0,0 +1,207 @@
|
|
1
|
+
# Gift format treetop parser
|
2
|
+
|
3
|
+
#:nodoc: all
|
4
|
+
grammar Gift
|
5
|
+
|
6
|
+
rule gift
|
7
|
+
(command* question blank_line)+
|
8
|
+
{
|
9
|
+
@current_category
|
10
|
+
|
11
|
+
def questions
|
12
|
+
elements.map{|e| e.question}
|
13
|
+
end
|
14
|
+
|
15
|
+
def commands
|
16
|
+
elements.map{|e| e.elements[0].elements[0].command_text}
|
17
|
+
end
|
18
|
+
}
|
19
|
+
|
20
|
+
end
|
21
|
+
|
22
|
+
rule command
|
23
|
+
'$' (!line_break .)* line_break
|
24
|
+
<Command>
|
25
|
+
end
|
26
|
+
|
27
|
+
rule question
|
28
|
+
(essay_question / true_false_question / match_question / fill_in_question / short_answer_question / mutiple_choice_question / numeric_question / description_question)
|
29
|
+
end
|
30
|
+
|
31
|
+
# Question Types
|
32
|
+
rule essay_question
|
33
|
+
comment? title? space? question_text '{' nbsp? '}'
|
34
|
+
<EssayQuestion>
|
35
|
+
end
|
36
|
+
|
37
|
+
rule true_false_question
|
38
|
+
comment? title? space? question_text '{' space? answer_list:(true_answer / false_answer) space? '}'
|
39
|
+
<TrueFalseQuestion>
|
40
|
+
end
|
41
|
+
|
42
|
+
rule short_answer_question
|
43
|
+
comment? title? space? question_text '{' space? answer_list:(right_answer)+ space? '}'
|
44
|
+
<ShortAnswerQuestion>
|
45
|
+
end
|
46
|
+
|
47
|
+
rule mutiple_choice_question
|
48
|
+
comment? title? space? question_text '{' space? answer_list:(wrong_answer / right_answer)+ space? '}'
|
49
|
+
<MultipleChoiceQuestion>
|
50
|
+
end
|
51
|
+
|
52
|
+
rule numeric_question
|
53
|
+
comment? title? space? question_text '{#' space? answer_list:(numeric_answer)+ '}'
|
54
|
+
<NumericQuestion>
|
55
|
+
end
|
56
|
+
|
57
|
+
rule match_question
|
58
|
+
comment? title? space? question_text '{' space? answer_list:(match_answer)+ '}'
|
59
|
+
<MatchQuestion>
|
60
|
+
end
|
61
|
+
|
62
|
+
rule fill_in_question
|
63
|
+
comment? title? space? question_text '{' space? answer_list:(wrong_answer / right_answer)+ space? '}' (![\r\n] (("\\" [=~{}#:])/ .))+
|
64
|
+
<FillInQuestion>
|
65
|
+
end
|
66
|
+
|
67
|
+
rule description_question
|
68
|
+
comment? title? space? question_text
|
69
|
+
<DescriptionQuestion>
|
70
|
+
end
|
71
|
+
|
72
|
+
# Question Components
|
73
|
+
|
74
|
+
rule number
|
75
|
+
[+-]? [\d]+ (!".." "." [\d]*)?
|
76
|
+
end
|
77
|
+
|
78
|
+
rule weight
|
79
|
+
"%" [+-]? [1]? [\d]? [\d] "."? [\d]? [\d]? "%"
|
80
|
+
end
|
81
|
+
|
82
|
+
rule numeric_answer
|
83
|
+
value:(range / numeric_with_tolerance) space? feedback? space?
|
84
|
+
{
|
85
|
+
def answer
|
86
|
+
{:maximum => value.maximum, :minimum => value.minimum}
|
87
|
+
end
|
88
|
+
}
|
89
|
+
end
|
90
|
+
|
91
|
+
rule numeric_with_tolerance
|
92
|
+
"="? weight? number (':' number)?
|
93
|
+
{
|
94
|
+
def maximum
|
95
|
+
ans = Float(elements[2].text_value)
|
96
|
+
ans += Float(elements[3].elements[1].text_value) unless elements[3].text_value.blank?
|
97
|
+
return ans
|
98
|
+
end
|
99
|
+
|
100
|
+
def minimum
|
101
|
+
ans = Float(elements[2].text_value)
|
102
|
+
ans -= Float(elements[3].elements[1].text_value) unless elements[3].text_value.blank?
|
103
|
+
return ans
|
104
|
+
end
|
105
|
+
|
106
|
+
}
|
107
|
+
end
|
108
|
+
|
109
|
+
rule range
|
110
|
+
number '..' number
|
111
|
+
{
|
112
|
+
def maximum
|
113
|
+
Float(elements[0].text_value)
|
114
|
+
end
|
115
|
+
|
116
|
+
def minimum
|
117
|
+
Float(elements[2].text_value)
|
118
|
+
end
|
119
|
+
}
|
120
|
+
end
|
121
|
+
|
122
|
+
rule wrong_answer
|
123
|
+
"~" weight? (![=~}#] (("\\" [=~{}#:])/ .))* space? feedback?
|
124
|
+
{
|
125
|
+
def answer
|
126
|
+
ans = { :value => elements[2].text_value.rstrip, :correct => false, :feedback => elements[4].text_value.rstrip[1..-1] }
|
127
|
+
ans[:weight] = Float(elements[1].text_value[1..-2]) if elements[1].text_value != ""
|
128
|
+
return ans
|
129
|
+
end
|
130
|
+
}
|
131
|
+
end
|
132
|
+
|
133
|
+
rule right_answer
|
134
|
+
"=" weight? (![=~}#] (("\\" [=~{}#:])/ .))* space? feedback?
|
135
|
+
{
|
136
|
+
def answer
|
137
|
+
ans = { :value => elements[2].text_value.rstrip, :correct => true, :feedback => elements[4].text_value.rstrip[1..-1] }
|
138
|
+
ans[:weight] = Float(elements[1].text_value[1..-2]) if elements[1].text_value != ""
|
139
|
+
return ans
|
140
|
+
end
|
141
|
+
}
|
142
|
+
end
|
143
|
+
|
144
|
+
rule match_answer
|
145
|
+
"=" (!"->" ![=~}#] (("\\" [=~{}#:])/ .))* "->" (![=~}#] (("\\" [=~{}#:])/ .))* space?
|
146
|
+
{
|
147
|
+
def answer
|
148
|
+
{ elements[1].text_value.strip => elements[3].text_value.strip }
|
149
|
+
end
|
150
|
+
}
|
151
|
+
end
|
152
|
+
|
153
|
+
rule true_answer
|
154
|
+
("TRUE" / "T") space? feedback?
|
155
|
+
{
|
156
|
+
def answer
|
157
|
+
{:value => true, :correct => true, :feedback => elements[2].text_value.rstrip[1..-1]}
|
158
|
+
end
|
159
|
+
}
|
160
|
+
end
|
161
|
+
|
162
|
+
rule false_answer
|
163
|
+
("FALSE" / "F") space? feedback?
|
164
|
+
{
|
165
|
+
def answer
|
166
|
+
{:value => false, :correct => true, :feedback => elements[2].text_value.rstrip[1..-1]}
|
167
|
+
end
|
168
|
+
}
|
169
|
+
end
|
170
|
+
|
171
|
+
rule comment
|
172
|
+
"//" (!line_break .)* line_break comment?
|
173
|
+
end
|
174
|
+
|
175
|
+
rule title
|
176
|
+
'::' (!"::" (("\\" [=~{}#:])/ .))* '::' line_break?
|
177
|
+
end
|
178
|
+
|
179
|
+
rule question_text
|
180
|
+
markup:markup? (!"{" !blank_line (("\\" [=~{}#:])/ .))*
|
181
|
+
end
|
182
|
+
|
183
|
+
rule markup
|
184
|
+
"[" (!"]" !blank_line (("\\" [=~{}#:])/ .))* "]"
|
185
|
+
end
|
186
|
+
|
187
|
+
rule feedback
|
188
|
+
"#" (![=~}#] (("\\" [=~{}#:])/ .))*
|
189
|
+
end
|
190
|
+
|
191
|
+
rule line_break
|
192
|
+
"\r\n" / "\n"
|
193
|
+
end
|
194
|
+
|
195
|
+
rule nbsp
|
196
|
+
(" " / "\t")+
|
197
|
+
end
|
198
|
+
|
199
|
+
rule space
|
200
|
+
(" " / "\t" / "\r" / "\n")+
|
201
|
+
end
|
202
|
+
|
203
|
+
rule blank_line
|
204
|
+
line_break nbsp? line_break space?
|
205
|
+
end
|
206
|
+
|
207
|
+
end
|
@@ -0,0 +1,400 @@
|
|
1
|
+
# Examples of the GIFT fromat from the Moodle Docs.
|
2
|
+
|
3
|
+
class GiftExamples
|
4
|
+
|
5
|
+
|
6
|
+
def self.examples
|
7
|
+
|
8
|
+
examples = {}
|
9
|
+
|
10
|
+
examples[:description] = <<EOS
|
11
|
+
// EXAMPLE QUESTIONS for the GIFT import filter
|
12
|
+
// by Paul Tsuchido Shew, January 2004.
|
13
|
+
|
14
|
+
//-----------------------------------------//
|
15
|
+
// EXAMPLES FROM DESCRIPTION
|
16
|
+
//-----------------------------------------//
|
17
|
+
|
18
|
+
Who's buried in Grant's tomb?{~Grant ~Jefferson =no one}
|
19
|
+
|
20
|
+
Grant is {~buried =entombed ~living} in Grant's tomb.
|
21
|
+
|
22
|
+
Grant is buried in Grant's tomb.{FALSE}
|
23
|
+
|
24
|
+
Who's buried in Grant's tomb?{=no one =nobody}
|
25
|
+
|
26
|
+
When was Ulysses S. Grant born?{#1822:1}
|
27
|
+
EOS
|
28
|
+
|
29
|
+
examples[:multi] = <<EOS
|
30
|
+
//-----------------------------------------//
|
31
|
+
// EXAMPLES FROM DOCUMENTATION
|
32
|
+
//-----------------------------------------//
|
33
|
+
|
34
|
+
// ===Multiple Choice===
|
35
|
+
|
36
|
+
Who's buried in Grant's tomb?{~Grant ~Jefferson =no one}
|
37
|
+
|
38
|
+
Grant is {~buried =entombed ~living} in Grant's tomb.
|
39
|
+
|
40
|
+
The American holiday of Thanksgiving is celebrated on the {
|
41
|
+
~second
|
42
|
+
~third
|
43
|
+
=fourth
|
44
|
+
} Thursday of November.
|
45
|
+
|
46
|
+
Japanese characters originally came from what country? {
|
47
|
+
~India
|
48
|
+
=China
|
49
|
+
~Korea
|
50
|
+
~Egypt}
|
51
|
+
EOS
|
52
|
+
|
53
|
+
examples[:short] = <<EOS
|
54
|
+
// ===Short Answer===
|
55
|
+
|
56
|
+
Who's buried in Grant's tomb?{=no one =nobody}
|
57
|
+
|
58
|
+
Two plus two equals {=four =4}.
|
59
|
+
EOS
|
60
|
+
|
61
|
+
examples[:tf] = <<EOS
|
62
|
+
// ===True-False===
|
63
|
+
|
64
|
+
Grant is buried in Grant's tomb.{F}
|
65
|
+
|
66
|
+
The sun rises in the east.{T}
|
67
|
+
EOS
|
68
|
+
|
69
|
+
examples[:numerical] = <<EOS
|
70
|
+
// ===Numerical===
|
71
|
+
|
72
|
+
Matching Question. {
|
73
|
+
=subquestion1 -> subanswer1
|
74
|
+
=subquestion2 -> subanswer2
|
75
|
+
=subquestion3 -> subanswer3
|
76
|
+
}
|
77
|
+
|
78
|
+
Match the following countries with their corresponding capitals. {
|
79
|
+
=Canada -> Ottawa
|
80
|
+
=Italy -> Rome
|
81
|
+
=Japan -> Tokyo
|
82
|
+
=India -> New Delhi
|
83
|
+
}
|
84
|
+
|
85
|
+
// ===Numerical===
|
86
|
+
|
87
|
+
When was Ulysses S. Grant born? {#1822}
|
88
|
+
|
89
|
+
What is the value of pi (to 3 decimal places)? {#3.1415:0.0005}
|
90
|
+
|
91
|
+
What is the value of pi (to 3 decimal places)? {#3.141..3.142}
|
92
|
+
|
93
|
+
When was Ulysses S. Grant born? {#
|
94
|
+
=1822:0
|
95
|
+
=%50%1822:2}
|
96
|
+
EOS
|
97
|
+
|
98
|
+
examples[:line_comments] = <<EOS
|
99
|
+
// OPTIONS
|
100
|
+
|
101
|
+
// ===Line Comments===
|
102
|
+
|
103
|
+
// Subheading: Numerical questions below
|
104
|
+
What's 2 plus 2? {#4}
|
105
|
+
|
106
|
+
EOS
|
107
|
+
|
108
|
+
examples[:question_name] = <<EOS
|
109
|
+
// ===Question Name===
|
110
|
+
|
111
|
+
::Kanji Origins::Japanese characters originally came from what country? {=China}
|
112
|
+
|
113
|
+
::Thanksgiving Date::The American holiday of Thanksgiving is celebrated on the {~second ~third =fourth} Thursday of November.
|
114
|
+
EOS
|
115
|
+
|
116
|
+
examples[:feedback] = <<EOS
|
117
|
+
// ===Feedback===
|
118
|
+
|
119
|
+
What's the answer to this multiple-choice question?{
|
120
|
+
~wrong answer#feedback comment on the wrong answer
|
121
|
+
~another wrong answer#feedback comment on this wrong answer
|
122
|
+
=right answer#Very good!}
|
123
|
+
|
124
|
+
Who's buried in Grant's tomb?{
|
125
|
+
=no one#excellent answer!
|
126
|
+
=nobody#excellent answer!}
|
127
|
+
EOS
|
128
|
+
|
129
|
+
examples[:weights] = <<EOS
|
130
|
+
// ===Percentage Answer Weights===
|
131
|
+
Grant is buried in Grant's tomb.{FALSE#No one is buried in Grant's tomb.}
|
132
|
+
|
133
|
+
Difficult question.{~wrong answer ~%50%half credit answer =full credit answer}
|
134
|
+
|
135
|
+
::Jesus' hometown::Jesus Christ was from {
|
136
|
+
~Jerusalem#This was an important city, but the wrong answer.
|
137
|
+
~%25%Bethlehem#He was born here, but not raised here.
|
138
|
+
~%50%Galilee#You need to be more specific.
|
139
|
+
=Nazareth#Yes! That's right!}
|
140
|
+
|
141
|
+
::Jesus' hometown:: Jesus Christ was from {
|
142
|
+
=Nazareth#Yes! That's right!
|
143
|
+
=%75%Nazereth#Right, but misspelled.
|
144
|
+
=%25%Bethlehem#He was born here, but not raised here.}
|
145
|
+
EOS
|
146
|
+
|
147
|
+
examples[:multiple] = <<EOS
|
148
|
+
// ===Multiple Answers===
|
149
|
+
|
150
|
+
What two people are entombed in Grant's tomb? {
|
151
|
+
~No one
|
152
|
+
~%50%Grant
|
153
|
+
~%50%Grant's wife
|
154
|
+
~Grant's father }
|
155
|
+
|
156
|
+
What two people are entombed in Grant's tomb? {
|
157
|
+
~%-50%No one
|
158
|
+
~%50%Grant
|
159
|
+
~%50%Grant's wife
|
160
|
+
~%-50%Grant's father }
|
161
|
+
EOS
|
162
|
+
|
163
|
+
examples[:format] = <<EOS
|
164
|
+
//-----------------------------------------//
|
165
|
+
// EXAMPLES FROM gift/format.php
|
166
|
+
//-----------------------------------------//
|
167
|
+
|
168
|
+
Who's buried in Grant's tomb?{~Grant ~Jefferson =no one}
|
169
|
+
|
170
|
+
Grant is {~buried =entombed ~living} in Grant's tomb.
|
171
|
+
|
172
|
+
Grant is buried in Grant's tomb.{FALSE}
|
173
|
+
|
174
|
+
Who's buried in Grant's tomb?{=no one =nobody}
|
175
|
+
|
176
|
+
When was Ulysses S. Grant born?{#1822:5}
|
177
|
+
|
178
|
+
Match the following countries with their corresponding
|
179
|
+
capitals.{=Canada->Ottawa =Italy->Rome =Japan->Tokyo}
|
180
|
+
EOS
|
181
|
+
|
182
|
+
examples[:complicated] = <<EOS
|
183
|
+
//-----------------------------------------//
|
184
|
+
// MORE COMPLICATED EXAMPLES
|
185
|
+
//-----------------------------------------//
|
186
|
+
|
187
|
+
::Grant's Tomb::Grant is {
|
188
|
+
~buried#No one is buried there.
|
189
|
+
=entombed#Right answer!
|
190
|
+
~living#We hope not!
|
191
|
+
} in Grant's tomb.
|
192
|
+
|
193
|
+
Difficult multiple choice question.{
|
194
|
+
~wrong answer #comment on wrong answer
|
195
|
+
~%50%half credit answer #comment on answer
|
196
|
+
=full credit answer #well done!}
|
197
|
+
|
198
|
+
::Jesus' hometown (Short answer ex.):: Jesus Christ was from {
|
199
|
+
=Nazareth#Yes! That's right!
|
200
|
+
=%75%Nazereth#Right, but misspelled.
|
201
|
+
=%25%Bethlehem#He was born here, but not raised here.
|
202
|
+
}
|
203
|
+
|
204
|
+
//this comment will be ignored by the filter
|
205
|
+
::Numerical example::
|
206
|
+
When was Ulysses S. Grant born? {#
|
207
|
+
=1822:0 #Correct! 100% credit
|
208
|
+
=%50%1822:2 #He was born in 1822.
|
209
|
+
You get 50% credit for being close.
|
210
|
+
}
|
211
|
+
EOS
|
212
|
+
|
213
|
+
examples[:all] = <<EOS
|
214
|
+
// EXAMPLE QUESTIONS for the GIFT import filter
|
215
|
+
// by Paul Tsuchido Shew, January 2004.
|
216
|
+
|
217
|
+
//-----------------------------------------//
|
218
|
+
// EXAMPLES FROM DESCRIPTION
|
219
|
+
//-----------------------------------------//
|
220
|
+
|
221
|
+
Who's buried in Grant's tomb?{~Grant ~Jefferson =no one}
|
222
|
+
|
223
|
+
Grant is {~buried =entombed ~living} in Grant's tomb.
|
224
|
+
|
225
|
+
Grant is buried in Grant's tomb.{FALSE}
|
226
|
+
|
227
|
+
Who's buried in Grant's tomb?{=no one =nobody}
|
228
|
+
|
229
|
+
When was Ulysses S. Grant born?{#1822:1}
|
230
|
+
|
231
|
+
|
232
|
+
//-----------------------------------------//
|
233
|
+
// EXAMPLES FROM DOCUMENTATION
|
234
|
+
//-----------------------------------------//
|
235
|
+
|
236
|
+
// ===Multiple Choice===
|
237
|
+
|
238
|
+
Who's buried in Grant's tomb?{~Grant ~Jefferson =no one}
|
239
|
+
|
240
|
+
Grant is {~buried =entombed ~living} in Grant's tomb.
|
241
|
+
|
242
|
+
The American holiday of Thanksgiving is celebrated on the {
|
243
|
+
~second
|
244
|
+
~third
|
245
|
+
=fourth
|
246
|
+
} Thursday of November.
|
247
|
+
|
248
|
+
Japanese characters originally came from what country? {
|
249
|
+
~India
|
250
|
+
=China
|
251
|
+
~Korea
|
252
|
+
~Egypt}
|
253
|
+
|
254
|
+
// ===Short Answer===
|
255
|
+
|
256
|
+
Who's buried in Grant's tomb?{=no one =nobody}
|
257
|
+
|
258
|
+
Two plus two equals {=four =4}.
|
259
|
+
|
260
|
+
// ===True-False===
|
261
|
+
|
262
|
+
Grant is buried in Grant's tomb.{F}
|
263
|
+
|
264
|
+
The sun rises in the east.{T}
|
265
|
+
|
266
|
+
// ===Numerical===
|
267
|
+
|
268
|
+
Matching Question. {
|
269
|
+
=subquestion1 -> subanswer1
|
270
|
+
=subquestion2 -> subanswer2
|
271
|
+
=subquestion3 -> subanswer3
|
272
|
+
}
|
273
|
+
|
274
|
+
Match the following countries with their corresponding capitals. {
|
275
|
+
=Canada -> Ottawa
|
276
|
+
=Italy -> Rome
|
277
|
+
=Japan -> Tokyo
|
278
|
+
=India -> New Delhi
|
279
|
+
}
|
280
|
+
|
281
|
+
// ===Numerical===
|
282
|
+
|
283
|
+
When was Ulysses S. Grant born? {#1822}
|
284
|
+
|
285
|
+
What is the value of pi (to 3 decimal places)? {#3.1415:0.0005}
|
286
|
+
|
287
|
+
What is the value of pi (to 3 decimal places)? {#3.141..3.142}
|
288
|
+
|
289
|
+
When was Ulysses S. Grant born? {#
|
290
|
+
=1822:0
|
291
|
+
=%50%1822:2}
|
292
|
+
|
293
|
+
// OPTIONS
|
294
|
+
|
295
|
+
// ===Line Comments===
|
296
|
+
|
297
|
+
// Subheading: Numerical questions below
|
298
|
+
What's 2 plus 2? {#4}
|
299
|
+
|
300
|
+
|
301
|
+
// ===Question Name===
|
302
|
+
|
303
|
+
::Kanji Origins::Japanese characters originally
|
304
|
+
came from what country? {=China}
|
305
|
+
|
306
|
+
::Thanksgiving Date::The American holiday of Thanksgiving is
|
307
|
+
celebrated on the {~second ~third =fourth} Thursday of November.
|
308
|
+
|
309
|
+
// ===Feedback===
|
310
|
+
|
311
|
+
What's the answer to this multiple-choice question?{
|
312
|
+
~wrong answer#feedback comment on the wrong answer
|
313
|
+
~another wrong answer#feedback comment on this wrong answer
|
314
|
+
=right answer#Very good!}
|
315
|
+
|
316
|
+
Who's buried in Grant's tomb?{
|
317
|
+
=no one#excellent answer!
|
318
|
+
=nobody#excellent answer!}
|
319
|
+
|
320
|
+
// ===Percentage Answer Weights===
|
321
|
+
Grant is buried in Grant's tomb.{FALSE#No one is buried in Grant's tomb.}
|
322
|
+
|
323
|
+
Difficult question.{~wrong answer ~%50%half credit answer =full credit answer}
|
324
|
+
|
325
|
+
::Jesus' hometown::Jesus Christ was from {
|
326
|
+
~Jerusalem#This was an important city, but the wrong answer.
|
327
|
+
~%25%Bethlehem#He was born here, but not raised here.
|
328
|
+
~%50%Galilee#You need to be more specific.
|
329
|
+
=Nazareth#Yes! That's right!}.
|
330
|
+
|
331
|
+
::Jesus' hometown:: Jesus Christ was from {
|
332
|
+
=Nazareth#Yes! That's right!
|
333
|
+
=%75%Nazereth#Right, but misspelled.
|
334
|
+
=%25%Bethlehem#He was born here, but not raised here.}
|
335
|
+
|
336
|
+
// ===Multiple Answers===
|
337
|
+
|
338
|
+
What two people are entombed in Grant's tomb? {
|
339
|
+
~No one
|
340
|
+
~%50%Grant
|
341
|
+
~%50%Grant's wife
|
342
|
+
~Grant's father }
|
343
|
+
|
344
|
+
What two people are entombed in Grant's tomb? {
|
345
|
+
~%-50%No one
|
346
|
+
~%50%Grant
|
347
|
+
~%50%Grant's wife
|
348
|
+
~%-50%Grant's father }
|
349
|
+
|
350
|
+
//-----------------------------------------//
|
351
|
+
// EXAMPLES FROM gift/format.php
|
352
|
+
//-----------------------------------------//
|
353
|
+
|
354
|
+
Who's buried in Grant's tomb?{~Grant ~Jefferson =no one}
|
355
|
+
|
356
|
+
Grant is {~buried =entombed ~living} in Grant's tomb.
|
357
|
+
|
358
|
+
Grant is buried in Grant's tomb.{FALSE}
|
359
|
+
|
360
|
+
Who's buried in Grant's tomb?{=no one =nobody}
|
361
|
+
|
362
|
+
When was Ulysses S. Grant born?{#1822:5}
|
363
|
+
|
364
|
+
Match the following countries with their corresponding
|
365
|
+
capitals.{=Canada->Ottawa =Italy->Rome =Japan->Tokyo}
|
366
|
+
|
367
|
+
//-----------------------------------------//
|
368
|
+
// MORE COMPLICATED EXAMPLES
|
369
|
+
//-----------------------------------------//
|
370
|
+
|
371
|
+
::Grant's Tomb::Grant is {
|
372
|
+
~buried#No one is buried there.
|
373
|
+
=entombed#Right answer!
|
374
|
+
~living#We hope not!
|
375
|
+
} in Grant's tomb.
|
376
|
+
|
377
|
+
Difficult multiple choice question.{
|
378
|
+
~wrong answer #comment on wrong answer
|
379
|
+
~%50%half credit answer #comment on answer
|
380
|
+
=full credit answer #well done!}
|
381
|
+
|
382
|
+
::Jesus' hometown (Short answer ex.):: Jesus Christ was from {
|
383
|
+
=Nazareth#Yes! That's right!
|
384
|
+
=%75%Nazereth#Right, but misspelled.
|
385
|
+
=%25%Bethlehem#He was born here, but not raised here.
|
386
|
+
}
|
387
|
+
|
388
|
+
//this comment will be ignored by the filter
|
389
|
+
::Numerical example::
|
390
|
+
When was Ulysses S. Grant born? {#
|
391
|
+
=1822:0 #Correct! 100% credit
|
392
|
+
=%50%1822:2 #He was born in 1822.
|
393
|
+
You get 50% credit for being close.
|
394
|
+
}
|
395
|
+
|
396
|
+
EOS
|
397
|
+
return examples
|
398
|
+
end
|
399
|
+
|
400
|
+
end
|