const CODE_PATTERN = /\[([\w-]+)\]([\s\S]*?)\[\/\1\]/;
const handlerMap = {
shortcode: (content) => {
console.log(content);
return `<div class="foo">${content}</div>`;
},
};
function parseCode(value) {
let parsedValue = value;
while (CODE_PATTERN.test(parsedValue)) {
parsedValue = parsedValue.replace(CODE_PATTERN, (_matches, id, content) => {
const idLower = id.toLowerCase();
return handlerMap.hasOwnProperty(idLower) ? handlerMap[idLower](content) : content;
});
}
return parsedValue;
}
console.log(parseCode(sourceText));