qcm

Faire des qcm simplement - retour accueil

git clone git://bebou.netlib.re/qcm
Log | Files | Refs | README |

commit 6cf47f31126b81fcaabb67dca65c095e9b386983
parent 10d46c2d3b2eb711f6127bc3027442ef4f5fa249
Auteurice: Arthur Pons <arthur.pons@unistra.fr>
Date:   Mon, 18 Nov 2024 21:11:02 +0100

Ajout d'un script helper pour créer un qcm

Me suis dit que de manière optionnelle ça pouvait aider
Dépend de gum : https://github.com/charmbracelet/gum
Un peu lourd et gros mais fonctionne bien, donne surtout l'envie de
faire sa propre version !

Diffstat:
M.gitignore | 1+
Mmakefile | 3++-
Awriteqcm.sh | 76++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 79 insertions(+), 1 deletion(-)

diff --git a/.gitignore b/.gitignore @@ -1,2 +1,3 @@ .*.sw? qcm +writeqcm diff --git a/makefile b/makefile @@ -1,7 +1,8 @@ PREFIX = /usr/local -all: qcm +all: qcm writeqcm install: mkdir -p "${DESTDIR}${PREFIX}/bin" cp qcm "${DESTDIR}${PREFIX}/bin" + cp writeqcm "${DESTDIR}${PREFIX}/bin" diff --git a/writeqcm.sh b/writeqcm.sh @@ -0,0 +1,76 @@ +#! /bin/sh + +res=$(mktemp) +tmp=$(mktemp) + +writequestion() { + echo "question: \"$q\"" >> $1 + echo "type: $t" >> $1 + [ -n "$o" ] && echo "options: $o" >> $1 + [ -n "$c" ] && echo "choix: $c" >> $1 + echo "$r" && echo "unique: $r" >> $1 +} + +confirmquestion() { + echo "La question : \n" + cat $tmp + echo + conf=$(echo "oui\nnon" | gum choose --header="Cette question est correcte ?") +} + +addquestion() { + echo >> $res + cat $res + fin=$(echo "oui\nnon" | gum choose --header="Ajouter une question ?") +} + +gatherquestion() { + q=$(echo "$q" | + gum write \ + --header="Tapez votre question" \ + --placeholder="De quelle couleur est le cheval blanc d'Henri IV") + t=$(echo "qcm\nregex\nouverte" | + gum choose \ + --header="Quel type de question ?" \ + --selected=$t) + if [ "$t" = "qcm" ];then + c=$(echo "multiple\nunique" | + gum choose \ + --header="Choix multiple ou unique" \ + --selected=$c) + o=$(echo "$o" | + gum write \ + --header="Les options de réponses, une par ligne" \ + --placeholder="Réponse A" | + paste -s -d '~' -) + fi + [ "$t" = "regex" ] \ + && o=$(echo "$o" | + gum input \ + --header="La regex" \ + --placeholder="Par ex pour des années -?[0-9]+") + r=$(echo "oui\nnon" | + gum choose \ + --header="Une seule réponse autorisée ?" \ + --selected=$r) +} + +command -V gum 2> /dev/null || { echo "Il faut gum";exit 1; } + +while [ "$fin" != "non" ];do + conf=;q=;t=;c=;o=;r=; + while [ "$conf" != "oui" ];do + cat /dev/null > $tmp + clear + gatherquestion + writequestion $tmp + clear + confirmquestion + done + writequestion $res + clear + addquestion +done + +[ -n "$1" ] && cat $res > $1 || cat $res +