ILIAS  trunk Revision v13.0_alpha-62-g3b72d83f2e5
TextMatchingOptions.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
22
24use ILIAS\Refinery\Factory as Refinery;
25
27{
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';
35
36 public function getLabel(
38 ): string {
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)
42 };
43 }
44
45 public static function buildOptionsList(
47 ): array {
48 return array_reduce(
49 self::cases(),
50 function (array $c, self $v) use ($lng): array {
51 $c[$v->value] = $v->getLabel($lng);
52 return $c;
53 },
54 []
55 );
56 }
57
58 public function determineEquivalence(
60 string $predefined_text,
61 string $response_text
62 ): bool {
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(
67 $predefined_text,
68 1
69 )->transform($response_text) >= 0,
70 self::Levenshtein2 => $refinery->string()->levenshtein()->standard(
71 $predefined_text,
72 2
73 )->transform($response_text) >= 0,
74 self::Levenshtein3 => $refinery->string()->levenshtein()->standard(
75 $predefined_text,
76 3
77 )->transform($response_text) >= 0,
78 self::Levenshtein4 => $refinery->string()->levenshtein()->standard(
79 $predefined_text,
80 4
81 )->transform($response_text) >= 0,
82 self::Levenshtein5 => $refinery->string()->levenshtein()->standard(
83 $predefined_text,
84 5
85 )->transform($response_text) >= 0
86 };
87 }
88}
Builds data types.
Definition: Factory.php:36
global $lng
Definition: privfeed.php:26