sync: MCQ justifications are given in the choice tag directly

This commit is contained in:
nemunaire 2019-09-06 22:58:30 +02:00
parent d7f0425d8a
commit 33f7d104e4
2 changed files with 9 additions and 10 deletions

View File

@ -27,13 +27,6 @@ type ExerciceUnlockFile struct {
Filename string `toml:",omitempty"`
}
// ExerciceFlagChoice holds informations about a choice (for MCQ and UCQ).
type ExerciceFlagChoice struct {
Label string `toml:",omitempty"`
Value interface{} `toml:",omitempty"`
Justification *ExerciceFlag `toml:",omitempty""`
}
// ExerciceFlag holds informations about one flag.
type ExerciceFlag struct {
Id int64
@ -52,6 +45,12 @@ type ExerciceFlag struct {
NoShuffle bool
}
// ExerciceFlagChoice holds informations about a choice (for MCQ and UCQ).
type ExerciceFlagChoice struct {
ExerciceFlag
Value interface{} `toml:",omitempty"`
}
// ExerciceParams contains values parsed from defines.txt.
type ExerciceParams struct {
Gain int64

View File

@ -233,7 +233,7 @@ func buildExerciceFlags(i Importer, exercice fic.Exercice) (flags map[int64]impo
for cid, choice := range flag.Choice {
var val bool
if choice.Justification != nil {
if choice.Raw != nil {
if hasOne && !isJustified {
errs = append(errs, fmt.Sprintf("%q: error MCQ #%d: all true items has to be justified in this MCQ.", path.Base(exercice.Path), nline+1))
continue
@ -259,8 +259,8 @@ func buildExerciceFlags(i Importer, exercice fic.Exercice) (flags map[int64]impo
Response: val,
})
if isJustified && choice.Justification != nil {
addedFlag, choices, berrs := buildKeyFlag(exercice, *choice.Justification, nline+1, "Flag correspondant")
if isJustified && choice.Raw != nil {
addedFlag, choices, berrs := buildKeyFlag(exercice, choice.ExerciceFlag, nline+1, "Flag correspondant")
if len(berrs) > 0 {
errs = append(errs, berrs...)
}