From bdece37fe32adc6afd317716fac6e8483883dcb3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thiemo=20M=C3=A4ttig?= Date: Mon, 8 Dec 2014 19:00:32 +0100 Subject: [PATCH] Simplify LanguageNameSearch code A more efficient "startsWith" lookup. And simplifying redundant modulo code. Change-Id: I87ab0ff70d26fc058fc40bd20745b9b6effb7ddd --- data/LanguageNameSearch.php | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/data/LanguageNameSearch.php b/data/LanguageNameSearch.php index da1c76bb..3062f818 100644 --- a/data/LanguageNameSearch.php +++ b/data/LanguageNameSearch.php @@ -42,11 +42,9 @@ class LanguageNameSearch { $results = array(); foreach ( $bucket as $name => $code ) { // Prefix search - if ( strpos( $name, $searchKey, 0 ) === 0 ) { - $results[$code] = $name; - continue; - } - if ( $typos > 0 && self::levenshteinDistance( $name, $searchKey ) === $typos ) { + if ( strrpos( $name, $searchKey, -strlen( $name ) ) !== false + || ( $typos > 0 && self::levenshteinDistance( $name, $searchKey ) <= $typos ) + ) { $results[$code] = $name; } } @@ -55,14 +53,7 @@ class LanguageNameSearch { } public static function getIndex( $name ) { - $codepoint = self::getCodepoint( $name ); - if ( $codepoint < 1000 ) { - $bucket = $codepoint; - } else { - $bucket = $codepoint % 1000; - } - - return $bucket; + return self::getCodepoint( $name ) % 1000; } /**