Fixed consecutive searches with quotes

This commit is contained in:
squidfunk 2020-06-29 10:57:56 +02:00
parent 83bba6bee4
commit 759f2b9e36
6 changed files with 12 additions and 12 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,6 +1,6 @@
{ {
"assets/javascripts/bundle.js": "assets/javascripts/bundle.8db80c2a.min.js", "assets/javascripts/bundle.js": "assets/javascripts/bundle.adcd0787.min.js",
"assets/javascripts/bundle.js.map": "assets/javascripts/bundle.8db80c2a.min.js.map", "assets/javascripts/bundle.js.map": "assets/javascripts/bundle.adcd0787.min.js.map",
"assets/javascripts/vendor.js": "assets/javascripts/vendor.de50e36d.min.js", "assets/javascripts/vendor.js": "assets/javascripts/vendor.de50e36d.min.js",
"assets/javascripts/vendor.js.map": "assets/javascripts/vendor.de50e36d.min.js.map", "assets/javascripts/vendor.js.map": "assets/javascripts/vendor.de50e36d.min.js.map",
"assets/javascripts/worker/search.js": "assets/javascripts/worker/search.9b3611bd.min.js", "assets/javascripts/worker/search.js": "assets/javascripts/worker/search.9b3611bd.min.js",

View File

@ -183,7 +183,7 @@
</div> </div>
{% block scripts %} {% block scripts %}
<script src="{{ 'assets/javascripts/vendor.de50e36d.min.js' | url }}"></script> <script src="{{ 'assets/javascripts/vendor.de50e36d.min.js' | url }}"></script>
<script src="{{ 'assets/javascripts/bundle.8db80c2a.min.js' | url }}"></script> <script src="{{ 'assets/javascripts/bundle.adcd0787.min.js' | url }}"></script>
{%- set translations = {} -%} {%- set translations = {} -%}
{%- for key in [ {%- for key in [
"clipboard.copy", "clipboard.copy",

View File

@ -42,10 +42,10 @@ export type SearchTransformFn = (value: string) => string
* *
* 1. Search for terms in quotation marks and prepend a `+` modifier to denote * 1. Search for terms in quotation marks and prepend a `+` modifier to denote
* that the resulting document must contain all terms, converting the query * that the resulting document must contain all terms, converting the query
* to and `AND` query (as opposed to the default `OR` behavior). While users * to an `AND` query (as opposed to the default `OR` behavior). While users
* may expected terms enclosed in quotation marks to map to span queries, * may expect terms enclosed in quotation marks to map to span queries, i.e.
* i.e. for which order is important, `lunr` doesn't support them, so the * for which order is important, `lunr` doesn't support them, so the best
* best we can do is to convert the terms to an `AND` query. * we can do is to convert the terms to an `AND` query.
* *
* 2. Replace control characters which are not located at the beginning of the * 2. Replace control characters which are not located at the beginning of the
* query or preceded by white space, or are not followed by a non-whitespace * query or preceded by white space, or are not followed by a non-whitespace
@ -56,7 +56,7 @@ export type SearchTransformFn = (value: string) => string
* *
* 4. Append a wildcard to the end of every word to make every word a prefix * 4. Append a wildcard to the end of every word to make every word a prefix
* query in order to provide a good type-ahead experience, by adding an * query in order to provide a good type-ahead experience, by adding an
* asterisik (wildcard) in between terms, which can be denoted by whitespace, * asterisk (wildcard) in between terms, which can be denoted by whitespace,
* any non-control character, or a word boundary. * any non-control character, or a word boundary.
* *
* @param value - Query value * @param value - Query value
@ -65,7 +65,7 @@ export type SearchTransformFn = (value: string) => string
*/ */
export function defaultTransform(value: string): string { export function defaultTransform(value: string): string {
return value return value
.split(/"([^"]+)"/) /* => 1 */ .split(/"([^"]+)"/g) /* => 1 */
.map((terms, i) => i & 1 .map((terms, i) => i & 1
? terms.replace(/^\b|^(?![^\x00-\x7F]|$)|\s+/g, " +") ? terms.replace(/^\b|^(?![^\x00-\x7F]|$)|\s+/g, " +")
: terms : terms