@botonic/react
Version:
Build Chatbots using React
42 lines • 1.85 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.convertToMarkdownMeta = void 0;
const REGEX_MARKDOWN_BOLD = /(\*\*|__)(.*?)\1/g;
const REGEX_MARKDOWN_ITALIC = /(\*|_)(.*?)\1/g;
const REGEX_MARKDOWN_LINK = /\[([^\]]+)\]\(([^)]+)\)/g;
const NORMALIZED_BOLD = '&%BOLD%&';
const REGEX_NORMALIZED_BOLD = new RegExp(`${NORMALIZED_BOLD}(.*?)${NORMALIZED_BOLD}`, 'g');
const NORMALIZED_ITALIC = '&%ITALIC%&';
const REGEX_NORMALIZED_ITALIC = new RegExp(`${NORMALIZED_ITALIC}(.*?)${NORMALIZED_ITALIC}`, 'g');
const WHATSAPP_BOLD = '*';
const WHATSAPP_ITALIC = '_';
// Convert markdown to WhatsApp and Facebook format
function convertToMarkdownMeta(text) {
const textWithBoldAndItalic = replaceBoldAndItalic(text);
return replaceMarkdownLinks(textWithBoldAndItalic);
}
exports.convertToMarkdownMeta = convertToMarkdownMeta;
function replaceBoldAndItalic(text) {
const normalizedText = normalizeBoldAndItalic(text);
const boldAndItalicText = normalizedToMarkdownMeta(normalizedText);
return boldAndItalicText;
}
function normalizeBoldAndItalic(text) {
// Normalize bold
text = text.replace(REGEX_MARKDOWN_BOLD, `${NORMALIZED_BOLD}$2${NORMALIZED_BOLD}`);
// Normalize italic
text = text.replace(REGEX_MARKDOWN_ITALIC, `${NORMALIZED_ITALIC}$2${NORMALIZED_ITALIC}`);
return text;
}
function normalizedToMarkdownMeta(text) {
// convert &%BOLD%&text&%BOLD%& to *text*
text = text.replace(REGEX_NORMALIZED_BOLD, `${WHATSAPP_BOLD}$1${WHATSAPP_BOLD}`);
// convert &%ITALIC%&text&%ITALIC%& to _text_
text = text.replace(REGEX_NORMALIZED_ITALIC, `${WHATSAPP_ITALIC}$1${WHATSAPP_ITALIC}`);
return text;
}
function replaceMarkdownLinks(text) {
// $1 = textUrl, $2 = linkUrl
return text.replace(REGEX_MARKDOWN_LINK, '$1: $2');
}
//# sourceMappingURL=markdown-meta.js.map
;