mirror of
https://github.com/squidfunk/mkdocs-material.git
synced 2024-06-14 11:52:32 +03:00
Fixed incomplete search highlighting for code blocks in titles
This commit is contained in:
parent
790a446dd7
commit
57e598b96e
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -221,7 +221,7 @@
|
|||||||
"base": base_url,
|
"base": base_url,
|
||||||
"features": features,
|
"features": features,
|
||||||
"translations": {},
|
"translations": {},
|
||||||
"search": "assets/javascripts/workers/search.b4c2f2ff.min.js" | url
|
"search": "assets/javascripts/workers/search.f886a092.min.js" | url
|
||||||
} -%}
|
} -%}
|
||||||
{%- if config.extra.version -%}
|
{%- if config.extra.version -%}
|
||||||
{%- set _ = app.update({ "version": config.extra.version }) -%}
|
{%- set _ = app.update({ "version": config.extra.version }) -%}
|
||||||
|
@ -264,7 +264,7 @@ export class Search {
|
|||||||
: highlight
|
: highlight
|
||||||
|
|
||||||
// @ts-expect-error - stop moaning, TypeScript!
|
// @ts-expect-error - stop moaning, TypeScript!
|
||||||
doc[field] = fn(doc[field], table, positions)
|
doc[field] = fn(doc[field], table, positions, field !== "text")
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Highlight title and text and apply post-query boosts */
|
/* Highlight title and text and apply post-query boosts */
|
||||||
|
@ -49,13 +49,14 @@ export type Position = number
|
|||||||
* @param input - Input value
|
* @param input - Input value
|
||||||
* @param table - Table for indexing
|
* @param table - Table for indexing
|
||||||
* @param positions - Occurrences
|
* @param positions - Occurrences
|
||||||
|
* @param full - Full results
|
||||||
*
|
*
|
||||||
* @returns Highlighted string value
|
* @returns Highlighted string value
|
||||||
*/
|
*/
|
||||||
export function highlight(
|
export function highlight(
|
||||||
input: string, table: PositionTable, positions: Position[]
|
input: string, table: PositionTable, positions: Position[], full = false
|
||||||
): string {
|
): string {
|
||||||
return highlightAll([input], table, positions).pop()!
|
return highlightAll([input], table, positions, full).pop()!
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -64,11 +65,12 @@ export function highlight(
|
|||||||
* @param inputs - Input values
|
* @param inputs - Input values
|
||||||
* @param table - Table for indexing
|
* @param table - Table for indexing
|
||||||
* @param positions - Occurrences
|
* @param positions - Occurrences
|
||||||
|
* @param full - Full results
|
||||||
*
|
*
|
||||||
* @returns Highlighted string values
|
* @returns Highlighted string values
|
||||||
*/
|
*/
|
||||||
export function highlightAll(
|
export function highlightAll(
|
||||||
inputs: string[], table: PositionTable, positions: Position[]
|
inputs: string[], table: PositionTable, positions: Position[], full = false
|
||||||
): string[] {
|
): string[] {
|
||||||
|
|
||||||
/* Map blocks to input values */
|
/* Map blocks to input values */
|
||||||
@ -87,6 +89,7 @@ export function highlightAll(
|
|||||||
|
|
||||||
/* Highlight strings one after another */
|
/* Highlight strings one after another */
|
||||||
return inputs.map((input, i) => {
|
return inputs.map((input, i) => {
|
||||||
|
let cursor = 0
|
||||||
|
|
||||||
/* Map occurrences to blocks */
|
/* Map occurrences to blocks */
|
||||||
const blocks = new Map<number, number[]>()
|
const blocks = new Map<number, number[]>()
|
||||||
@ -119,6 +122,10 @@ export function highlightAll(
|
|||||||
const end = t[t.length - 1] >>> 12
|
const end = t[t.length - 1] >>> 12
|
||||||
const length = t[t.length - 1] >>> 2 & 0x3FF
|
const length = t[t.length - 1] >>> 2 & 0x3FF
|
||||||
|
|
||||||
|
/* Add prefix, if full results are desired */
|
||||||
|
if (full && start > cursor)
|
||||||
|
slices.push(input.slice(cursor, start))
|
||||||
|
|
||||||
/* Extract and highlight slice */
|
/* Extract and highlight slice */
|
||||||
let slice = input.slice(start, end + length)
|
let slice = input.slice(start, end + length)
|
||||||
for (const j of indexes.sort((a, b) => b - a)) {
|
for (const j of indexes.sort((a, b) => b - a)) {
|
||||||
@ -137,11 +144,18 @@ export function highlightAll(
|
|||||||
].join("")
|
].join("")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Update cursor */
|
||||||
|
cursor = end + length
|
||||||
|
|
||||||
/* Append slice and abort if we have two */
|
/* Append slice and abort if we have two */
|
||||||
if (slices.push(slice) === 2)
|
if (slices.push(slice) === 2)
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Add suffix, if full results are desired */
|
||||||
|
if (full && cursor < input.length)
|
||||||
|
slices.push(input.slice(cursor))
|
||||||
|
|
||||||
/* Return highlighted slices */
|
/* Return highlighted slices */
|
||||||
return slices.join("")
|
return slices.join("")
|
||||||
})
|
})
|
||||||
|
Loading…
Reference in New Issue
Block a user