Faire des qcm simplement - retour accueil
git clone git://bebou.netlib.re/qcm
Log | Files | Refs | README |
commit efd03ac02586366bb9df5fadcf1e94ded1dc9fb3 parent c05685556f0f8a381b32039ba2584dd7cc0742e4 Auteurice: Arthur Pons <arthur.pons@unistra.fr> Date: Sat, 22 Feb 2025 09:13:46 +0100 Ajout du type vote Pour se mettre d'accord sur une date par ex Diffstat:
M | README | | | 23 | +++++++++++++++-------- |
M | qcm.sh | | | 11 | +++++++---- |
M | writeqcm.sh | | | 2 | +- |
3 files changed, 23 insertions(+), 13 deletions(-)
diff --git a/README b/README @@ -183,14 +183,21 @@ La liste des attributs : * `question` : L'intitulé de la question. Optionnel. S'il n'existe pas rien ne sera affiché - * `type` : le type de question. Optionnel. `qcm`, type par défaut, proposera - un choix multiple (A, B, C...), uniquement ces réponses seront valides. Si - `options` existe il fera correspondre les options aux différentes lettres. - En l'absence d'`options` `qcm` proposera 4 choix par défaut (A, B, C et D). - Malgré son nom `qcm` n'admet par défaut qu'une seule réponse possible. Voir - `choix`. `ouverte` permettra n'importe quelle réponse et ignore `options`. - `regex` permet de restreindre les réponses possibles en écrivant un - expression régulière. Dans ce cas-ci `options` renseigne l'expression. + * `type` : le type de question. Optionnel. + * `qcm`, type par défaut, proposera un choix multiple (A, B, C...), + uniquement ces réponses seront valides. Si `options` existe il fera + correspondre les options aux différentes lettres. En l'absence + d'`options` `qcm` proposera 4 choix par défaut (A, B, C et D). Malgré + son nom `qcm` n'admet par défaut qu'une seule réponse possible. Voir + `choix`. + * `vote`, fonctionne comme `qcm` sauf que chaque option choisie est comptée + indépendamment. Répondre `ABC` ne comptera pas comme une réponse pour la + combinaison `ABC` mais comme une réponse pour `A`, une pour `B` et une + pour `C`. Plus approprié pour des votes. Utile pour se mettre d'accord + sur une date par exemple. + * `ouverte` permettra n'importe quelle réponse et ignore `options`. + * `regex` permet de restreindre les réponses possibles en écrivant un + expression régulière. Dans ce cas-ci `options` renseigne l'expression. * `options` : Si la question est de type `qcm`, `options` est la liste des réponses possibles séparées par des `~`. Il ne doit pas y avoir de `~` à la fin. Si la question est de type `regex`, `options` est l'expression diff --git a/qcm.sh b/qcm.sh @@ -66,9 +66,12 @@ calcandshow() { if [ -n "$hide" ];then groupedanswers= else - if [ "$type" != "ouverte" ] && [ "$type" != "regex" ];then + if [ "$type" = "qcm" ];then sortanswers='while read line;do echo "$line" | grep -o . | sort -u | tr -d "\n";printf "\n";done' - else sortanswers='cat' + elif [ "$type" = "vote" ];then + sortanswers='grep -o .' + else + sortanswers='cat' fi groupedanswers=$(echo "$uniqueanswers" | grep -Eo "/$id/[^ ]+ " | cut -d'/' -f3- | # PARSAGE DE LOG @@ -85,8 +88,8 @@ calcandshow() { ( "regex" ) printf "format autorisé : %s" "$options" ;; ( * ) [ "$choix" = "+" ] \ - && printf "%s\n" "une ou plusieurs options vraies" \ - || printf "%s\n" "une seule option vraie" + && printf "%s\n" "plusieurs choix possibles" \ + || printf "%s\n" "un seul choix possible" [ -n "$options" ] \ && printf "%s" "$(echo "$options" | tr '~' '\n' | paste "$tmpd/o" -)" \ || printf "options : %s" "$(< "$tmpd/o" paste -d '\0' -s -)" diff --git a/writeqcm.sh b/writeqcm.sh @@ -30,7 +30,7 @@ gatherquestion() { --header="Tapez votre question" \ --header.foreground="#875fff" \ --placeholder="De quelle couleur est le cheval blanc d'Henri IV") - t=$(echo "qcm\nregex\nouverte" | + t=$(echo "qcm\nvote\nregex\nouverte" | gum choose \ --header="Quel type de question ?" \ --selected=$t)