blob: 1d174c99b7c1b77c5e534b1f9f1bbabdb53e842b [file] [log] [blame]
import esquery from 'esquery';
import {
visitorKeys as jsdocTypePrattParserVisitorKeys
} from 'jsdoc-type-pratt-parser';
import {
commentParserToESTree, jsdocVisitorKeys
} from './commentParserToESTree.js';
/**
* @callback CommentHandler
* @param {string} commentSelector
* @param {Node} jsdoc
* @returns {boolean}
*/
/**
* @param {Settings} settings
* @returns {CommentHandler}
*/
const commentHandler = (settings) => {
/**
* @type {CommentHandler}
*/
return (commentSelector, jsdoc) => {
const {mode} = settings;
const selector = esquery.parse(commentSelector);
const ast = commentParserToESTree(jsdoc, mode);
return esquery.matches(ast, selector, null, {
visitorKeys: {
...jsdocTypePrattParserVisitorKeys,
...jsdocVisitorKeys
}
});
};
};
export default commentHandler;