diff --git a/search.js b/search.js index cc889b4..a6f176f 100644 --- a/search.js +++ b/search.js @@ -109,7 +109,7 @@ export const search = (strs, query, options) => { } export const searchMatcher = (textWalker, opts) => { - const { defaultLocale, matchCase, matchDiacritics, matchWholeWords } = opts + const { defaultLocale, matchCase, matchDiacritics, matchWholeWords, acceptNode } = opts return function* (doc, query) { const iter = textWalker(doc, function* (strs, makeRange) { for (const result of search(strs, query, { @@ -124,7 +124,7 @@ export const searchMatcher = (textWalker, opts) => { result.range = makeRange(startIndex, startOffset, endIndex, endOffset) yield result } - }) + }, acceptNode) for (const result of iter) yield result } } diff --git a/text-walker.js b/text-walker.js index 3e2c44e..4ff9dff 100644 --- a/text-walker.js +++ b/text-walker.js @@ -27,9 +27,9 @@ const acceptNode = node => { return NodeFilter.FILTER_ACCEPT } -export const textWalker = function* (x, func) { +export const textWalker = function* (x, func, filterFunc) { const root = x.commonAncestorContainer ?? x.body ?? x - const walker = document.createTreeWalker(root, filter, { acceptNode }) + const walker = document.createTreeWalker(root, filter, { acceptNode: filterFunc || acceptNode }) const walk = x.commonAncestorContainer ? walkRange : walkDocument const nodes = walk(x, walker) const strs = nodes.map(node => node.nodeValue)