19declare(strict_types=1);
28 case CaseInsensitive =
'case_insensitive';
29 case CaseSensitive =
'case_sensitive';
30 case Levenshtein1 =
'1';
31 case Levenshtein2 =
'2';
32 case Levenshtein3 =
'3';
33 case Levenshtein4 =
'4';
34 case Levenshtein5 =
'5';
39 return match ($this) {
40 self::CaseInsensitive, self::CaseSensitive =>
$lng->txt(
"cloze_textgap_{$this->value}"),
41 default => sprintf(
$lng->txt(
'cloze_textgap_levenshtein_of'), $this->value)
45 public static function buildOptionsList(
50 function (array
$c,
self $v) use (
$lng): array {
51 $c[$v->value] = $v->getLabel(
$lng);
58 public function determineEquivalence(
60 string $predefined_text,
63 return match ($this) {
64 self::CaseInsensitive => strtolower($predefined_text) === strtolower($response_text),
65 self::CaseSensitive => $predefined_text === $response_text,
66 self::Levenshtein1 =>
$refinery->string()->levenshtein()->standard(
69 )->transform($response_text) >= 0,
70 self::Levenshtein2 =>
$refinery->string()->levenshtein()->standard(
73 )->transform($response_text) >= 0,
74 self::Levenshtein3 =>
$refinery->string()->levenshtein()->standard(
77 )->transform($response_text) >= 0,
78 self::Levenshtein4 =>
$refinery->string()->levenshtein()->standard(
81 )->transform($response_text) >= 0,
82 self::Levenshtein5 =>
$refinery->string()->levenshtein()->standard(
85 )->transform($response_text) >= 0