import { marked } from 'marked'; import { EventMessageType } from '~/constants/events'; import { stripHTMLTags } from '~/utils/stripHTMLTags'; /** * Cleans youtube urls */ export const formatTextSanitizeYoutube = (text: string): string => text.replace( /(https?:\/\/(www\.)?(youtube\.com|youtu\.be)\/(watch)?(\?v=)?[\w\-&=]+)/gim, '\n$1\n' ); /** * Removes HTML tags */ export const formatTextSanitizeTags = (text: string): string => stripHTMLTags(text); /** * Returns clickable usernames */ export const formatTextClickableUsernames = (text: string): string => text.replace( /~([\wа-яА-Я-]+)/giu, `~$1` ); /** * Makes gray comments */ export const formatTextComments = (text: string): string => text .replace(/:\/\//gim, ':|--|') .replace(/(\/\/[^\n]+)/gim, '$1') .replace(/(\/\*[\s\S]*?\*\/)/gim, '$1') .replace(/:\|--\|/gim, '://'); /** * Highlights todos */ export const formatTextTodos = (text: string): string => text .replace(/\/\/\s*(todo|туду):?\s*([^\n]+)/gim, '// $1 $2') .replace( /\/\/\s*(done|сделано|сделал|готово|fixed|пофикшено|фиксед):?\s*([^\n]+)/gim, '// $1 $2' ); /** * Formats !!exclamation messages with green color */ export const formatExclamations = (text: string): string => text.replace(/(!![\s\S]*?(!!|\n|$))/gim, '$1$2'); /** * Replaces -- with dash */ export const formatTextDash = (text: string): string => text.replace(' -- ', ' — '); /** * Formats with markdown */ export const formatTextMarkdown = (text: string): string => marked(text);