19 lines
629 B
JavaScript
19 lines
629 B
JavaScript
import { PHRASE_MATCH_REGEXP_PATTERN } from "discourse/lib/concerns/search-constants";
|
|
|
|
export const CLASS_NAME = "search-highlight";
|
|
|
|
export default function($elem, term, opts = {}) {
|
|
if (!_.isEmpty(term)) {
|
|
// special case ignore "l" which is used for magic sorting
|
|
let words = _.reject(
|
|
term.match(new RegExp(`${PHRASE_MATCH_REGEXP_PATTERN}|[^\\s]+`, "g")),
|
|
t => t === "l"
|
|
);
|
|
|
|
words = words.map(w => w.replace(/^"(.*)"$/, "$1"));
|
|
const highlightOpts = { wordsOnly: true };
|
|
if (!opts.defaultClassName) highlightOpts.className = CLASS_NAME;
|
|
$elem.highlight(words, highlightOpts);
|
|
}
|
|
}
|