Problem
|
let index = write_to_json(index, search_config, doc_urls)?; |
|
debug!("Writing search index ✓"); |
|
if index.len() > 10_000_000 { |
|
warn!("searchindex.json is very large ({} bytes)", index.len()); |
|
} |
|
|
|
if search_config.copy_js { |
|
utils::fs::write_file(destination, "searchindex.json", index.as_bytes())?; |
|
utils::fs::write_file( |
|
destination, |
|
"searchindex.js", |
|
format!("Object.assign(window.search, {});", index).as_bytes(), |
|
)?; |
Here, if !search_config.copy_js, then index is not used, so the above expensive computation is wasted.
More importantly, since the search index is not written, the search feature does not work.
That is, search is only enabled if search_config.enable && search_config.copy_js, instead of the intended behavior of just depending on search_config.enable.
Steps
N/A
Possible Solution(s)
The name copy_js seems to suggest the use of a CDN if set to false, however, looking at
, the links to a CDN seems to be missing. If so, then the solution would be:
- Add the CDN links of the search JS to the
index.hbs file and enable them when search_config.enable && !search_config.copy_js.
- Correct
create_files to write the index JSON file when !search_config.copy_js.
However, if !search_config.copy_js disabling the search entirely is the intended behavior (which would be weird), then maybe we should just get rid of it and fully rely on search_config.enable.
Notes
Additionally, the search index is unnecessarily duplicated in both searchindex.json and searchindex.js, which are sequentially tentatively queried by searcher.js.
Version
Please see the permalink above pointing to the latest master as of this writing.
Problem
mdBook/src/renderer/html_handlebars/search.rs
Lines 42 to 54 in 3bdcc0a
Here, if
!search_config.copy_js, thenindexis not used, so the above expensive computation is wasted.More importantly, since the search index is not written, the search feature does not work.
That is, search is only enabled if
search_config.enable && search_config.copy_js, instead of the intended behavior of just depending onsearch_config.enable.Steps
N/A
Possible Solution(s)
The name
copy_jsseems to suggest the use of a CDN if set to false, however, looking atmdBook/src/theme/index.hbs
Line 311 in 3bdcc0a
index.hbsfile and enable them whensearch_config.enable && !search_config.copy_js.create_filesto write the index JSON file when!search_config.copy_js.However, if
!search_config.copy_jsdisabling the search entirely is the intended behavior (which would be weird), then maybe we should just get rid of it and fully rely onsearch_config.enable.Notes
Additionally, the search index is unnecessarily duplicated in both
searchindex.jsonandsearchindex.js, which are sequentially tentatively queried bysearcher.js.Version