From 22d73d987c665896f80e134154ea04833d28d8c9 Mon Sep 17 00:00:00 2001
From: Elmar Ludwig <elmar.ludwig@uni-osnabrueck.de>
Date: Thu, 2 Mar 2023 11:45:22 +0100
Subject: [PATCH] also trigger escaping on ~ and *, fixes #186

---
 exercises/cloze_exercise.php | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/exercises/cloze_exercise.php b/exercises/cloze_exercise.php
index 3fceddf..de795c8 100644
--- a/exercises/cloze_exercise.php
+++ b/exercises/cloze_exercise.php
@@ -355,14 +355,18 @@ class cloze_exercise extends Exercise
                 $select = $this->isSelect($blank, false) ? ':' : '';
 
                 foreach ($this->task['answers'][$blank] as $answer) {
+                    $answer_text = $answer['text'];
+
+                    if (preg_match('/^([":*~]|$)/', $answer_text)) {
+                        $answer_text = '"' . $answer_text . '"';
+                    }
+
                     if ($answer['score'] == 0) {
-                        $answers[] = '*' . $answer['text'];
+                        $answers[] = '*' . $answer_text;
                     } else if ($answer['score'] == 0.5) {
-                        $answers[] = '~' . $answer['text'];
-                    } else if (preg_match('/^([":*~]|$)/', $answer['text'])) {
-                        $answers[] = '"' . $answer['text'] . '"';
+                        $answers[] = '~' . $answer_text;
                     } else {
-                        $answers[] = $answer['text'];
+                        $answers[] = $answer_text;
                     }
                 }
 
-- 
GitLab