Improve search term escaping and formatting in Gamemaster search functionality

This commit is contained in:
2026-01-29 03:18:18 +00:00
parent 777bcae010
commit 17d24b72d1

View File

@@ -138,7 +138,10 @@ export function useGamemasterSearch(fileLines, displayLines) {
function performSynchronousSearch() { function performSynchronousSearch() {
const results = []; const results = [];
const searchTerm = searchQuery.value.toLowerCase(); const searchTerm = searchQuery.value.toLowerCase();
const escapedTerm = searchTerm.replace(/[.*+?^${}()|[\]\\]/g, String.raw`\$&`); const escapedTerm = searchTerm.replace(
/[.*+?^${}()|[\]\\]/g,
String.raw`\$&`
);
try { try {
// Try regex pattern first // Try regex pattern first
@@ -171,7 +174,7 @@ export function useGamemasterSearch(fileLines, displayLines) {
/** /**
* Execute search when query changes * Execute search when query changes
*/ */
const executeSearch = async (query) => { const executeSearch = async query => {
searchQuery.value = query; searchQuery.value = query;
await performSearch(); await performSearch();
}; };
@@ -243,7 +246,10 @@ export function useGamemasterSearch(fileLines, displayLines) {
if (!searchQuery.value.trim()) return lineContent; if (!searchQuery.value.trim()) return lineContent;
const searchTerm = searchQuery.value; const searchTerm = searchQuery.value;
const escapedTerm = searchTerm.replace(/[.*+?^${}()|[\]\\]/g, String.raw`\$&`); const escapedTerm = searchTerm.replace(
/[.*+?^${}()|[\]\\]/g,
String.raw`\$&`
);
const regex = new RegExp(`(${escapedTerm})`, 'gi'); const regex = new RegExp(`(${escapedTerm})`, 'gi');
return lineContent.replaceAll(regex, '<mark>$1</mark>'); return lineContent.replaceAll(regex, '<mark>$1</mark>');