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 Question. {
             =subquestion1 -> subanswer1
             =subquestion2 -> subanswer2
             =subquestion3 -> subanswer3
             }

         Match the following countries with their corresponding capitals. {
             =Canada -> Ottawa
             =Italy  -> Rome
             =Japan  -> Tokyo
             =India  -> New Delhi
             }

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).

### 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.

         What's the answer to this multiple-choice question?{
         ~wrong answer#feedback comment on the wrong answer
         ~another wrong answer#feedback comment on this wrong answer
         =right answer#Very good!}

         Who's buried in Grant's tomb?{
         =no one#excellent answer!
         =nobody#excellent answer!}

         Grant is buried in Grant's tomb.{FALSE#No one is buried in Grant's tomb.}

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, the imported feedback is saved so that it will display if the student chose the wrong answer. So, in the last example above, the student would see the feedback only if they selected TRUE as their 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.

    [markdown]The *American holiday of Thanksgiving* is celebrated on the {
             ~second
             ~third
             =fourth
         } Thursday of November.

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.

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