mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-26 00:34:06 +00:00
rustdoc-search: case-sensitive only when capitals are used
This is the "smartcase" behavior, described by vim and dtolnay.
This commit is contained in:
parent
a4cedecc9e
commit
32500aa8e0
@ -2500,6 +2500,7 @@ class DocSearch {
|
|||||||
const sortResults = async(results, typeInfo, preferredCrate) => {
|
const sortResults = async(results, typeInfo, preferredCrate) => {
|
||||||
const userQuery = parsedQuery.userQuery;
|
const userQuery = parsedQuery.userQuery;
|
||||||
const normalizedUserQuery = parsedQuery.userQuery.toLowerCase();
|
const normalizedUserQuery = parsedQuery.userQuery.toLowerCase();
|
||||||
|
const isMixedCase = normalizedUserQuery !== userQuery;
|
||||||
const result_list = [];
|
const result_list = [];
|
||||||
for (const result of results.values()) {
|
for (const result of results.values()) {
|
||||||
result.item = this.searchIndex[result.id];
|
result.item = this.searchIndex[result.id];
|
||||||
@ -2511,11 +2512,13 @@ class DocSearch {
|
|||||||
let a, b;
|
let a, b;
|
||||||
|
|
||||||
// sort by exact case-sensitive match
|
// sort by exact case-sensitive match
|
||||||
|
if (isMixedCase) {
|
||||||
a = (aaa.item.name !== userQuery);
|
a = (aaa.item.name !== userQuery);
|
||||||
b = (bbb.item.name !== userQuery);
|
b = (bbb.item.name !== userQuery);
|
||||||
if (a !== b) {
|
if (a !== b) {
|
||||||
return a - b;
|
return a - b;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// sort by exact match with regard to the last word (mismatch goes later)
|
// sort by exact match with regard to the last word (mismatch goes later)
|
||||||
a = (aaa.word !== normalizedUserQuery);
|
a = (aaa.word !== normalizedUserQuery);
|
||||||
|
24
tests/rustdoc-js-std/write.js
Normal file
24
tests/rustdoc-js-std/write.js
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
const EXPECTED = [
|
||||||
|
{
|
||||||
|
'query': 'write',
|
||||||
|
'others': [
|
||||||
|
{ 'path': 'std::fmt', 'name': 'write' },
|
||||||
|
{ 'path': 'std::fs', 'name': 'write' },
|
||||||
|
{ 'path': 'std::ptr', 'name': 'write' },
|
||||||
|
{ 'path': 'std::fmt', 'name': 'Write' },
|
||||||
|
{ 'path': 'std::io', 'name': 'Write' },
|
||||||
|
{ 'path': 'std::hash::Hasher', 'name': 'write' },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'query': 'Write',
|
||||||
|
'others': [
|
||||||
|
{ 'path': 'std::fmt', 'name': 'Write' },
|
||||||
|
{ 'path': 'std::io', 'name': 'Write' },
|
||||||
|
{ 'path': 'std::fmt', 'name': 'write' },
|
||||||
|
{ 'path': 'std::fs', 'name': 'write' },
|
||||||
|
{ 'path': 'std::ptr', 'name': 'write' },
|
||||||
|
{ 'path': 'std::hash::Hasher', 'name': 'write' },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
];
|
17
tests/rustdoc-js/case.js
Normal file
17
tests/rustdoc-js/case.js
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
const EXPECTED = [
|
||||||
|
{
|
||||||
|
'query': 'Foo',
|
||||||
|
'others': [
|
||||||
|
{ 'path': 'case', 'name': 'Foo', 'desc': 'Docs for Foo' },
|
||||||
|
{ 'path': 'case', 'name': 'foo', 'desc': 'Docs for foo' },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'query': 'foo',
|
||||||
|
'others': [
|
||||||
|
// https://github.com/rust-lang/rust/issues/133017
|
||||||
|
{ 'path': 'case', 'name': 'Foo', 'desc': 'Docs for Foo' },
|
||||||
|
{ 'path': 'case', 'name': 'foo', 'desc': 'Docs for foo' },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
];
|
7
tests/rustdoc-js/case.rs
Normal file
7
tests/rustdoc-js/case.rs
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
#![allow(nonstandard_style)]
|
||||||
|
|
||||||
|
/// Docs for Foo
|
||||||
|
pub struct Foo;
|
||||||
|
|
||||||
|
/// Docs for foo
|
||||||
|
pub struct foo;
|
Loading…
Reference in New Issue
Block a user