From 99a7beba575bf50170dada5b4681ccaad40263d1 Mon Sep 17 00:00:00 2001 From: Junegunn Choi Date: Thu, 22 Feb 2024 23:19:11 +0900 Subject: [PATCH] Fix missing bonus score on a delimiter character Fix #3645 --- src/algo/algo.go | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/algo/algo.go b/src/algo/algo.go index 1d021ed..5cb82bd 100644 --- a/src/algo/algo.go +++ b/src/algo/algo.go @@ -255,24 +255,29 @@ func charClassOf(char rune) charClass { func bonusFor(prevClass charClass, class charClass) int16 { if class > charNonWord { - if prevClass == charWhite { + switch prevClass { + case charWhite: // Word boundary after whitespace return bonusBoundaryWhite - } else if prevClass == charDelimiter { + case charDelimiter: // Word boundary after a delimiter character return bonusBoundaryDelimiter - } else if prevClass == charNonWord { + case charNonWord: // Word boundary return bonusBoundary } } + if prevClass == charLower && class == charUpper || prevClass != charNumber && class == charNumber { // camelCase letter123 return bonusCamel123 - } else if class == charNonWord { + } + + switch class { + case charNonWord, charDelimiter: return bonusNonWord - } else if class == charWhite { + case charWhite: return bonusBoundaryWhite } return 0