c59c7c3aeda4d5ffae880f2225a27d6df1afc2ab
hiram
Sat Aug 31 09:06:23 2024 -0700
this may fix the highlight when the word has non-word characters around it refs #32596
diff --git src/hg/js/assemblySearch.js src/hg/js/assemblySearch.js
index 0fe5661..96f8ee9 100644
--- src/hg/js/assemblySearch.js
+++ src/hg/js/assemblySearch.js
@@ -260,60 +260,60 @@
var prefix = []; // going to be words that match prefix
for (let word of words) {
var noPrefix = word.replace(/^[-+]/, ''); // remove + - beginning
if (noPrefix.endsWith("*")) {
prefix.push(noPrefix.replace(/\*$/, ''));
} else {
wholeWord.push(noPrefix);
}
}
if (wholeWord.length > 0) {
for (let word of wholeWord) {
for (let key in rowData) {
if (rowData.hasOwnProperty(key)) {
if (typeof rowData[key] === 'string') {
let value = rowData[key];
- let subWords = value.split(/\s+/);
+ let subWords = value.match(/(\w+)|(\W+)/g);
let newString = "";
for (let subWord of subWords) {
if ( word.toLowerCase() === subWord.toLowerCase() ) {
newString += "" + subWord + "";
} else {
- newString += " " + subWord;
+ newString += subWord;
}
}
newString = newString.trim();
if (newString !== rowData[key])
rowData[key] = newString;
}
}
}
}
}
if (prefix.length > 0) {
for (let word of prefix) {
for (let key in rowData) {
if (rowData.hasOwnProperty(key)) {
if (typeof rowData[key] === 'string') {
let value = rowData[key];
- let subWords = value.split(/\s+/);
+ let subWords = value.match(/(\w+)|(\W+)/g);
let newString = "";
for (let subWord of subWords) {
if ( subWord.toLowerCase().startsWith(word.toLowerCase())) {
newString += "" + subWord + "";
} else {
- newString += " " + subWord;
+ newString += subWord;
}
}
newString = newString.trim();
if (newString !== rowData[key])
rowData[key] = newString;
}
}
}
}
}
}
// Function to generate the table and extra information
function populateTableAndInfo(jsonData) {
var tableHeader = document.getElementById('tableHeader');