babel-plugin-transform-syntax-highlight
Version:
Perform syntax highlighting of string and template literals during Babel compilation, rather than at runtime
18 lines (13 loc) • 543 B
JavaScript
;
const balancedMatch = require('balanced-match');
module.exports = (string, delimiters, transform) => {
const transformNextPlaceholder = str => {
const match = balancedMatch(delimiters[0], delimiters[1], str);
if (!match) return str;
const transformed = transform(match.body.trim(), String(match.start));
if (transformed === false) return str;
const nextStr = [match.pre, transformed, match.post].join('');
return transformNextPlaceholder(nextStr);
};
return transformNextPlaceholder(string);
};