Skip to content

Commit b896e73

Browse files
Lucas LeblancLucas Leblanc
authored andcommitted
Add package recognition when searching.
1 parent ddb632b commit b896e73

File tree

1 file changed

+22
-6
lines changed

1 file changed

+22
-6
lines changed

scaladoc-js/main/src/searchbar/engine/PageSearchEngine.scala

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -71,20 +71,36 @@ class PageSearchEngine(pages: List[PageEntry]):
7171
pages.map(prematchPage(_, search)).filter(_.indices.nonEmpty)
7272

7373
private def prematchPage(page: PageEntry, search: String): MatchResult =
74+
val pagePackage = page.description
7475
val pageName = page.shortName
76+
val fullQualified = if page.description != "" then
77+
page.description + "." + pageName
78+
else pageName
79+
7580
@tailrec
76-
def prematchPageAcc(nameIndex: Int, searchIndex: Int, acc: Set[Int], scoreAcc: Int, consecutiveMatches: Int): MatchResult =
81+
def prematchPageAcc(nameIndex: Int, searchIndex: Int, fullIndex: Int, acc: Set[Int], scoreAcc: Int, consecutiveMatches: Int): MatchResult =
82+
println(s"pageName = $pageName, pagePackage = $pagePackage, fullQualified = $fullQualified")
83+
println(s"searchIndex = $searchIndex, searchLength = ${search.length}, nameIndex = $nameIndex, pageLength = ${pageName.length}, fullIndex = $fullIndex, fullLength = ${fullQualified.length}, score = $scoreAcc, consecutiveMatches = $consecutiveMatches")
7784
if searchIndex >= search.length then
85+
println("First IF")
7886
MatchResult(scoreAcc, page, acc)
79-
else if nameIndex >= pageName.length then
80-
MatchResult(0, page, Set.empty)
87+
else if nameIndex >= pageName.length || fullIndex >= fullQualified.length then
88+
println("Second IF")
89+
MatchResult(0, page, Set.empty)
90+
else if search.contains(".") && fullQualified(fullIndex).toLower == search(searchIndex).toLower then
91+
println("Third IF")
92+
val score = (if consecutiveMatches > 0 then 1 else 0) + positionScores(nameIndex)
93+
prematchPageAcc(nameIndex, searchIndex + 1, fullIndex + 1, acc + nameIndex, scoreAcc + score, consecutiveMatches + 1)
8194
else if pageName(nameIndex).toLower == search(searchIndex).toLower then
95+
println("Fourth IF")
8296
val score = (if consecutiveMatches > 0 then 1 else 0) + positionScores(nameIndex)
83-
prematchPageAcc(nameIndex + 1, searchIndex + 1, acc + nameIndex, scoreAcc + score, consecutiveMatches + 1)
97+
prematchPageAcc(nameIndex + 1, searchIndex + 1, fullIndex, acc + nameIndex, scoreAcc + score, consecutiveMatches + 1)
8498
else
85-
prematchPageAcc(nameIndex + 1, searchIndex, acc, scoreAcc, 0)
99+
println("Else")
100+
prematchPageAcc(nameIndex + 1, searchIndex, fullIndex + 1, acc, scoreAcc, 0)
86101

87-
val result = prematchPageAcc(0, 0, Set.empty, 0, 0)
102+
println("Calling prematchPageAcc")
103+
val result = prematchPageAcc(0, 0, 0, Set.empty, 0, 0)
88104
result.copy(score = result.score + kindScoreBonus(page.kind))
89105

90106
private def matchPage(prematched: MatchResult, nameSearch: String): MatchResult =

0 commit comments

Comments
 (0)