Importing "GIFT" format files

GIFT is the most comprehensive import format available for importing
Moodle quiz questions from a text file. It supports Multiple-Choice,
True-False, Short Answer, Matching and Numerical questions, as well as insertion
of a _____ for the Missing Word format. Various question-types can be
mixed in a single text file, and the format also supports line comments,
question names, feedback and percentage-weight grades.

The text encoding of your text file must be utf-8 (unless you only use ascii characters).
An example questions text file can be found here: gift/examples.txt.

Basics

Each individual question in the GIFT file must not contain any blank lines. Each question is delimited by
at least one blank line. If you need to represent a blank line in your question you can use
the entity \n. You can use comments wherever you wish but they must start with two forward
slashes (//) at the start of the line.

QUESTION TYPES

Multiple Choice:
For multiple choice questions, wrong answers are prefixed with a tilde (~)
and the correct answer is prefixed with an equal sign (=).

Who's buried in Grant's tomb?{~Grant ~Jefferson =no one}

The Missing Word format automatically inserts a fill-in-the-blank line (like this _____) in the middle of the sentence.
To use the Missing Word format, place the answers where you want the line to appear in the sentence.

Grant is {~buried =entombed ~living} in Grant's tomb.

If the answers come before the closing punctuation mark, a fill-in-the-blank line will be inserted
for the "missing word" format. All question types can be written in the Missing Word format.

There must be a blank line (double carriage return) separating questions.
For clarity, the answers can be written on separate lines and even indented. For example:

The American holiday of Thanksgiving is celebrated on the {
~second
~third
=fourth
} Thursday of November.
Japanese characters originally came from what country? {
~India
=China
~Korea
~Egypt
}

Short Answer:
Answers in Short Answer question-type are all prefixed by an equal sign (=),
indicating that they are all correct answers. The answers must not contain a tilde.

Who's buried in Grant's tomb?{=no one =nobody}
Two plus two equals {=four =4}.

If there is only one correct Short Answer, it may be written without the equal sign prefix,
as long as it cannot be confused as True-False.

True-False:
In this question-type the answer indicates whether the statement is true or false.
The answer should be written as {TRUE} or {FALSE}, or abbreviated to {T} or {F}.

Grant is buried in Grant's tomb.{F}
The sun rises in the east.{T}

Matching:
Matching pairs begin with an equal sign (=) and are separated by this symbol "->". There must be at least three matching pairs.

Matching questions do not support feedback or percentage answer weights.

Numerical:
The answer section for Numerical questions must start with a number sign (#).
Numerical answers can include an error margin, which is written following the correct answer, separated by a colon.
So for example, if the correct answer is anything between 1.5 and 2.5, then it would be written as follows {#2:0.5}.
This indicates that 2 with an error margin of 0.5 is correct (i.e., the span from 1.5 to 2.5).
If no error margin is specified, it will be assumed to be zero.

When was Ulysses S. Grant born? {#1822}
What is the value of pi (to 3 decimal places)? {#3.1415:0.0005}.

Optionally, numerical answers can be written as a span in the following format {#MinimumValue..MaximumValue}.

What is the value of pi (to 3 decimal places)? {#3.141..3.142}.

Moodle's browser interface does not support multiple numerical answers, but Moodle's code can and so does GIFT.
This can be used to specify numerical multiple spans, and can be particularly usefully when combined with percentage weight grades.
If multiple answers are used, they must be separated by an equal sign, like short answer questions.

When was Ulysses S. Grant born? {#
=1822:0
=%50%1822:2
}

Note that since Moodle's browser GUI doesn't support multiple answers for Numerical questions,
there's no way to see them or edit them through Moodle.
The only way to change a numerical answer beyond the first, is to delete the question
and re-import it (or use something like phpMyAdmin).

Essay:
An essay question is simply a question with an empty answer field. Nothing is permitted
between the curly braces at all.

Write a short biography of Ulysses S. Grant {}

Description:
A description "question" has no answer part at all

The next set of questions will concern arithmatic

OPTIONS

In addition to these basic question types, this filter offers the following options:
line comments, question name, feedback and percentage answer weight.

Line Comments:
Comments that will not be imported into Moodle can be included in the text file.
This can be used to provide headers or more information about questions.
All lines that start with a double backslash (not counting tabs or spaces) will be ignored by the filter.

// Subheading: Numerical questions below
What's 2 plus 2? {#4}

Question Name:
A question name can be specified by placing it first and enclosing it within double colons.

::Kanji Origins::Japanese characters originally
came from what country? {=China}
::Thanksgiving Date::The American holiday of Thanksgiving is
celebrated on the {~second ~third =fourth} Thursday of November.

If no question name is specified, the entire question will be used as the name by default.

Feedback:
Feedback can be included for each answer by following the answer with a number sign (# also known as a hash mark) and the feedback.

For Multiple Choice questions, feedback is displayed only for the answer the student selected.
For short answer, feedback is shown only when students input the corresponding correct answer.
For true-false questions, there can be one or two feedback strings. The first is shown if the
student gives the wrong answer. The second if the student gives the right answer.

Percentage Answer Weights:
Percentage answer weights are available for both Multiple Choice and Short Answer questions.
Percentage answer weights can be included by following the tilde (for Multiple Choice) or
equal sign (for Short Answer) with the desired percent enclosed within percent signs (e.g., %50%).
This option can be combined with feedback comments.

Difficult question.{~wrong answer ~%50%half credit answer =full credit answer}
::Jesus' hometown::Jesus Christ was from {
~Jerusalem#This was an important city, but the wrong answer.
~%25%Bethlehem#He was born here, but not raised here.
~%50%Galilee#You need to be more specific.
=Nazareth#Yes! That's right!
}.
::Jesus' hometown:: Jesus Christ was from {
=Nazareth#Yes! That's right!
=%75%Nazereth#Right, but misspelled.
=%25%Bethlehem#He was born here, but not raised here.
}

Note that the last two examples are essentially the same question, first as multiple choice and then as short answer.

Note that it is possible to specify percentage answer weights that are NOT
available through the browser interface. The Match Grades drop-down on the import
page determines how these are handled. You can either request that an error be reported
or that the answer weight be adjusted to the nearest valid answer weight.

Specify text-formatting for the question
The question text (only) may have an optional text format specified. Currently the available formats are
moodle (Moodle Auto-Format), html (HTML format), plain (Plain text format) and
markdown (Markdown format). The format is specified in square brackets immediately before the
question text. More information on text formats in Moodle.

Multiple Answers:
The Multiple Answers option is used for multiple choice questions when two or more answers must
be selected in order to obtain full credit. The multiple answers option is enabled by assigning
partial answer weight to multiple answers, while allowing no single answer to receive full credit.

What two people are entombed in Grant's tomb? {
~No one
~%50%Grant
~%50%Grant's wife
~Grant's father
}

Note that there is no equal sign (=) in any answer and the answers should total no more than 100%,
otherwise Moodle will return an error.
To avoid the problem of students automatically getting 100% by simply checking all of the answers,
it is best to include negative answer weights for wrong answers.

What two people are entombed in Grant's tomb? {
~%-50%No one
~%50%Grant
~%50%Grant's wife
~%-50%Grant's father
}

Special Characters ~ = # { } :
These symbols ~ = # { } : control the operation of this filter and cannot be used as normal text within questions.
Since these symbols have a special role in determining the operation of this filter, they are called "control characters."
But sometimes you may want to use one of these characters, for example to show a mathematical formula in a question.
The way to get around this problem is "escaping" the control characters.
This means simply putting a backslash (\) before a control character so the filter will know that you want to use
it as a literal character instead of as a control character.
For example:

Which answer equals 5? {
~ \= 2 + 2
= \= 2 + 3
~ \= 2 + 4
}
::GIFT Control Characters::
Which of the following is NOT a control character for the GIFT import format? {
~ \~ # \~ is a control character.
~ \= # \= is a control character.
~ \# # \# is a control character.
~ \{ # \{ is a control character.
~ \} # \} is a control character.
= \ # Correct! \ (backslash) is not a control character. BUT,
it is used to escape the control characters.
}

When the question is processed, the backslash is removed and is not saved in Moodle.

Specifying Categories

It is possible to change the category into which the questions are added within the GIFT file.
You can change the category as many times as you wish within the file. All questions after the modifier
up to the next modifier or the end of the file will be added to the specified category. Up to the first
category modifier the category specified on the import screen will be used. Note that for this to work
the from file: box must be ticked on the import screen.

To include a category modifier include a line like this (with a blank line before and after):

$CATEGORY: tom/dick/harry

or simply

$CATEGORY: mycategory

...the first example specifies a path of nested categories. In this cae the questions will go into harry. The
categories are created if they do not exist.

Other Options:
Short Answer questions can be made case sensitive by changing "0" to "1" in the following line:$question->usecase = 0; // Ignore case