Skip to content

Commit e4e1361

Browse files
committed
ObjectHelpers::getSuggestion() improved weights
1 parent c9abda7 commit e4e1361

2 files changed

Lines changed: 7 additions & 2 deletions

File tree

src/Utils/ObjectHelpers.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,14 +131,14 @@ public static function getMagicProperties(string $class): array
131131
*/
132132
public static function getSuggestion(array $possibilities, string $value): ?string
133133
{
134-
$norm = preg_replace($re = '#^(get|set|has|is|add)(?=[A-Z])#', '', $value);
134+
$norm = preg_replace($re = '#^(get|set|has|is|add)(?=[A-Z])#', '+', $value);
135135
$best = null;
136136
$min = (strlen($value) / 4 + 1) * 10 + .1;
137137
foreach (array_unique($possibilities, SORT_REGULAR) as $item) {
138138
$item = $item instanceof \Reflector ? $item->getName() : $item;
139139
if ($item !== $value && (
140140
($len = levenshtein($item, $value, 10, 11, 10)) < $min
141-
|| ($len = levenshtein(preg_replace($re, '', $item), $norm, 10, 11, 10) + 20) < $min
141+
|| ($len = levenshtein(preg_replace($re, '*', $item), $norm, 10, 11, 10)) < $min
142142
)) {
143143
$min = $len;
144144
$best = $item;

tests/Utils/ObjectHelpers.getSuggestion().phpt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,11 @@ Assert::same(null, ObjectHelpers::getSuggestion(['setItem'], 'item'));
3030
Assert::same('setItem', ObjectHelpers::getSuggestion(['setItem'], 'Item'));
3131
Assert::same('setItem', ObjectHelpers::getSuggestion(['setItem'], 'addItem'));
3232
Assert::same(null, ObjectHelpers::getSuggestion(['addItem'], 'addItem'));
33+
Assert::same('set', ObjectHelpers::getSuggestion(['set'], 'get'));
34+
Assert::same('getA', ObjectHelpers::getSuggestion(['getA'], 'gtA'));
35+
Assert::same('trim', ObjectHelpers::getSuggestion([new ReflectionFunction('trim')], 'trm'));
36+
Assert::same('trim', ObjectHelpers::getSuggestion([new ReflectionFunction('trim')], 'getTrim'));
37+
Assert::same(null, ObjectHelpers::getSuggestion(['123'], 'x'));
3338

3439

3540
/*

0 commit comments

Comments
 (0)