@putout/operator-regexp
Version:
🐊Putout operator adds ability to check if provided regexp can be converted to string without losing it's sense
43 lines (32 loc) • 848 B
JavaScript
import regexpTree from 'regexp-tree';
export const transformRegExp = (str, regExpTransformer) => {
check(regExpTransformer);
const {
report,
traverse,
fix,
} = regExpTransformer;
const ast = regexpTree.parse(str, {
captureLocations: true,
});
const places = [];
const push = (path) => {
const {start} = (path.path || path).node.loc;
places.push({
position: start,
message: report(path),
});
fix(path);
};
regexpTree.traverse(ast, traverse({
push,
}));
return [
regexpTree.generate(ast),
places,
];
};
function check(regExpTransformer) {
if (!regExpTransformer)
throw Error('☝️ Looks like RegExpTransformer is missing');
}