11/*
2+ * searchtools.js
3+ * ~~~~~~~~~~~~~~~~
4+ *
25 * Sphinx JavaScript utilities for the full-text search.
6+ *
7+ * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS.
8+ * :license: BSD, see LICENSE for details.
9+ *
310 */
411"use strict" ;
512
@@ -13,7 +20,7 @@ if (typeof Scorer === "undefined") {
1320 // and returns the new score.
1421 /*
1522 score: result => {
16- const [docname, title, anchor, descr, score, filename, kind ] = result
23+ const [docname, title, anchor, descr, score, filename] = result
1724 return score
1825 },
1926 */
@@ -40,14 +47,6 @@ if (typeof Scorer === "undefined") {
4047 } ;
4148}
4249
43- // Global search result kind enum, used by themes to style search results.
44- class SearchResultKind {
45- static get index ( ) { return "index" ; }
46- static get object ( ) { return "object" ; }
47- static get text ( ) { return "text" ; }
48- static get title ( ) { return "title" ; }
49- }
50-
5150const _removeChildren = ( element ) => {
5251 while ( element && element . lastChild ) element . removeChild ( element . lastChild ) ;
5352} ;
@@ -65,13 +64,9 @@ const _displayItem = (item, searchTerms, highlightTerms) => {
6564 const showSearchSummary = DOCUMENTATION_OPTIONS . SHOW_SEARCH_SUMMARY ;
6665 const contentRoot = document . documentElement . dataset . content_root ;
6766
68- const [ docName , title , anchor , descr , score , _filename , kind ] = item ;
67+ const [ docName , title , anchor , descr , score , _filename ] = item ;
6968
7069 let listItem = document . createElement ( "li" ) ;
71- // Add a class representing the item's type:
72- // can be used by a theme's CSS selector for styling
73- // See SearchResultKind for the class names.
74- listItem . classList . add ( `kind-${ kind } ` ) ;
7570 let requestUrl ;
7671 let linkUrl ;
7772 if ( docBuilder === "dirhtml" ) {
@@ -120,10 +115,8 @@ const _finishSearch = (resultCount) => {
120115 "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories."
121116 ) ;
122117 else
123- Search . status . innerText = Documentation . ngettext (
124- "Search finished, found one page matching the search query." ,
125- "Search finished, found ${resultCount} pages matching the search query." ,
126- resultCount ,
118+ Search . status . innerText = _ (
119+ "Search finished, found ${resultCount} page(s) matching the search query."
127120 ) . replace ( '${resultCount}' , resultCount ) ;
128121} ;
129122const _displayNextItem = (
@@ -145,7 +138,7 @@ const _displayNextItem = (
145138 else _finishSearch ( resultCount ) ;
146139} ;
147140// Helper function used by query() to order search results.
148- // Each input is an array of [docname, title, anchor, descr, score, filename, kind ].
141+ // Each input is an array of [docname, title, anchor, descr, score, filename].
149142// Order the results by score (in opposite order of appearance, since the
150143// `_displayNextItem` function uses pop() to retrieve items) and then alphabetically.
151144const _orderResultsByScoreThenName = ( a , b ) => {
@@ -255,7 +248,6 @@ const Search = {
255248 searchSummary . classList . add ( "search-summary" ) ;
256249 searchSummary . innerText = "" ;
257250 const searchList = document . createElement ( "ul" ) ;
258- searchList . setAttribute ( "role" , "list" ) ;
259251 searchList . classList . add ( "search" ) ;
260252
261253 const out = document . getElementById ( "search-results" ) ;
@@ -326,7 +318,7 @@ const Search = {
326318 const indexEntries = Search . _index . indexentries ;
327319
328320 // Collect multiple result groups to be sorted separately and then ordered.
329- // Each is an array of [docname, title, anchor, descr, score, filename, kind ].
321+ // Each is an array of [docname, title, anchor, descr, score, filename].
330322 const normalResults = [ ] ;
331323 const nonMainIndexResults = [ ] ;
332324
@@ -345,7 +337,6 @@ const Search = {
345337 null ,
346338 score + boost ,
347339 filenames [ file ] ,
348- SearchResultKind . title ,
349340 ] ) ;
350341 }
351342 }
@@ -363,7 +354,6 @@ const Search = {
363354 null ,
364355 score ,
365356 filenames [ file ] ,
366- SearchResultKind . index ,
367357 ] ;
368358 if ( isMain ) {
369359 normalResults . push ( result ) ;
@@ -485,7 +475,6 @@ const Search = {
485475 descr ,
486476 score ,
487477 filenames [ match [ 0 ] ] ,
488- SearchResultKind . object ,
489478 ] ) ;
490479 } ;
491480 Object . keys ( objects ) . forEach ( ( prefix ) =>
@@ -513,11 +502,9 @@ const Search = {
513502 // perform the search on the required terms
514503 searchTerms . forEach ( ( word ) => {
515504 const files = [ ] ;
516- // find documents, if any, containing the query word in their text/title term indices
517- // use Object.hasOwnProperty to avoid mismatching against prototype properties
518505 const arr = [
519- { files : terms . hasOwnProperty ( word ) ? terms [ word ] : undefined , score : Scorer . term } ,
520- { files : titleTerms . hasOwnProperty ( word ) ? titleTerms [ word ] : undefined , score : Scorer . title } ,
506+ { files : terms [ word ] , score : Scorer . term } ,
507+ { files : titleTerms [ word ] , score : Scorer . title } ,
521508 ] ;
522509 // add support for partial matches
523510 if ( word . length > 2 ) {
@@ -549,9 +536,8 @@ const Search = {
549536
550537 // set score for the word in each file
551538 recordFiles . forEach ( ( file ) => {
552- if ( ! scoreMap . has ( file ) ) scoreMap . set ( file , new Map ( ) ) ;
553- const fileScores = scoreMap . get ( file ) ;
554- fileScores . set ( word , record . score ) ;
539+ if ( ! scoreMap . has ( file ) ) scoreMap . set ( file , { } ) ;
540+ scoreMap . get ( file ) [ word ] = record . score ;
555541 } ) ;
556542 } ) ;
557543
@@ -590,7 +576,7 @@ const Search = {
590576 break ;
591577
592578 // select one (max) score for the file.
593- const score = Math . max ( ...wordList . map ( ( w ) => scoreMap . get ( file ) . get ( w ) ) ) ;
579+ const score = Math . max ( ...wordList . map ( ( w ) => scoreMap . get ( file ) [ w ] ) ) ;
594580 // add result to the result list
595581 results . push ( [
596582 docNames [ file ] ,
@@ -599,7 +585,6 @@ const Search = {
599585 null ,
600586 score ,
601587 filenames [ file ] ,
602- SearchResultKind . text ,
603588 ] ) ;
604589 }
605590 return results ;
0 commit comments