mirror of
https://github.com/CaiJimmy/hugo-theme-stack.git
synced 2025-04-29 20:13:31 +08:00
Limit preview length
This commit is contained in:
parent
d0df82e8c3
commit
0c19a0370b
@ -58,13 +58,14 @@ class Search {
|
|||||||
this.bindSearchForm();
|
this.bindSearchForm();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static processMatches(str: string, matches: match[]): string[] {
|
private static processMatches(str: string, matches: match[], charLimit = 140): string[] {
|
||||||
matches.sort((a, b) => {
|
matches.sort((a, b) => {
|
||||||
return a.start - b.start;
|
return a.start - b.start;
|
||||||
});
|
});
|
||||||
|
|
||||||
let i = 0,
|
let i = 0,
|
||||||
lastIndex = 0;
|
lastIndex = 0,
|
||||||
|
charCount = 0;
|
||||||
|
|
||||||
let resultArray: string[] = [];
|
let resultArray: string[] = [];
|
||||||
|
|
||||||
@ -75,6 +76,8 @@ class Search {
|
|||||||
if (item.start - 20 > lastIndex) {
|
if (item.start - 20 > lastIndex) {
|
||||||
resultArray.push(`${replaceHTMLEnt(str.substring(lastIndex, lastIndex + 20))}`);
|
resultArray.push(`${replaceHTMLEnt(str.substring(lastIndex, lastIndex + 20))}`);
|
||||||
resultArray.push(` [...] ${replaceHTMLEnt(str.substring(item.start - 20, item.start))}`);
|
resultArray.push(` [...] ${replaceHTMLEnt(str.substring(item.start - 20, item.start))}`);
|
||||||
|
|
||||||
|
charCount += item.start - lastIndex + 40;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
resultArray.push(replaceHTMLEnt(str.substring(lastIndex, item.start)));
|
resultArray.push(replaceHTMLEnt(str.substring(lastIndex, item.start)));
|
||||||
@ -90,12 +93,16 @@ class Search {
|
|||||||
}
|
}
|
||||||
|
|
||||||
resultArray.push(`<mark>${replaceHTMLEnt(str.substring(item.start, end))}</mark>`);
|
resultArray.push(`<mark>${replaceHTMLEnt(str.substring(item.start, end))}</mark>`);
|
||||||
|
charCount += end - item.start;
|
||||||
|
|
||||||
i = j;
|
i = j;
|
||||||
lastIndex = end;
|
lastIndex = end;
|
||||||
|
|
||||||
|
if (charCount > charLimit) break;
|
||||||
}
|
}
|
||||||
|
|
||||||
resultArray.push(replaceHTMLEnt(str.substring(lastIndex)));
|
if (lastIndex < str.length)
|
||||||
|
resultArray.push(`${replaceHTMLEnt(str.substring(lastIndex, Math.min(lastIndex + 20, str.length)))} [...]`);
|
||||||
|
|
||||||
return resultArray;
|
return resultArray;
|
||||||
}
|
}
|
||||||
@ -136,7 +143,12 @@ class Search {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (titleMatches.length > 0) result.title = Search.processMatches(result.title, titleMatches).join('');
|
if (titleMatches.length > 0) result.title = Search.processMatches(result.title, titleMatches).join('');
|
||||||
if (contentMatches.length > 0) result.preview = Search.processMatches(result.content, contentMatches).join('');
|
if (contentMatches.length > 0) {
|
||||||
|
result.preview = Search.processMatches(result.content, contentMatches).join('');
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
result.preview = replaceHTMLEnt(result.content.substring(0, 140));
|
||||||
|
}
|
||||||
|
|
||||||
result.matchCount = titleMatches.length + contentMatches.length;
|
result.matchCount = titleMatches.length + contentMatches.length;
|
||||||
if (result.matchCount > 0) results.push(result);
|
if (result.matchCount > 0) results.push(result);
|
||||||
|
Loading…
Reference in New Issue
Block a user