Add new helper string related to justified MCQ flag
This commit is contained in:
parent
11e0b46034
commit
c5b65289d3
10 changed files with 122 additions and 70 deletions
|
@ -123,33 +123,44 @@ func SyncExerciceFlags(i Importer, exercice fic.Exercice) (errs []string) {
|
|||
isJustified := false
|
||||
for cid, choice := range quest.Choice {
|
||||
var val bool
|
||||
var justify string
|
||||
|
||||
if choice.Value == nil {
|
||||
val = false
|
||||
} else if p, ok := choice.Value.(bool); ok {
|
||||
val = p
|
||||
if len(choice.Help) > 0 {
|
||||
errs = append(errs, fmt.Sprintf("%q: error MCQ #%d: help field has to be used only with justified mcq.", path.Base(exercice.Path), nline + 1))
|
||||
continue
|
||||
}
|
||||
if 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
|
||||
}
|
||||
} else if p, ok := choice.Value.(string); ok {
|
||||
val = true
|
||||
if len(choice.Help) == 0 {
|
||||
choice.Help = "Flag correspondant"
|
||||
}
|
||||
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
|
||||
}
|
||||
isJustified = true
|
||||
if _, err := exercice.AddRawFlag("%" + quest.Label + "%" + choice.Label, "", false, nil, []byte(p)); err != nil {
|
||||
errs = append(errs, fmt.Sprintf("%q: error MCQ #%d: %s", path.Base(exercice.Path), nline + 1, err))
|
||||
continue
|
||||
}
|
||||
justify = p
|
||||
} else {
|
||||
errs = append(errs, fmt.Sprintf("%q: error in MCQ %d choice %d: has an invalid type. Expected true, false or a string", path.Base(exercice.Path), nline + 1, cid))
|
||||
continue
|
||||
}
|
||||
|
||||
if _, err := flag.AddEntry(choice.Label, val); err != nil {
|
||||
if e, err := flag.AddEntry(choice.Label, val); err != nil {
|
||||
errs = append(errs, fmt.Sprintf("%q: error in MCQ %d choice %d: %s", path.Base(exercice.Path), nline + 1, cid, err))
|
||||
continue
|
||||
} else if len(justify) > 0 {
|
||||
if _, err := exercice.AddRawFlag(fmt.Sprintf("%%%d%%%s", e.Id, choice.Help), "", false, nil, []byte(justify)); err != nil {
|
||||
errs = append(errs, fmt.Sprintf("%q: error MCQ #%d: %s", path.Base(exercice.Path), nline + 1, err))
|
||||
continue
|
||||
}
|
||||
}
|
||||
|
||||
if val {
|
||||
|
|
Reference in a new issue