// ____ _ ____ // / ___|_ __ __ _ ___| | _| _ \ _____ ___ __ // | | | '__/ _` |/ __| |/ / | | |/ _ \ \ /\ / / '_ \ // | |___| | | (_| | (__| <| |_| | (_) \ V V /| | | | // \____|_| \__,_|\___|_|\_\____/ \___/ \_/\_/ |_| |_| // // // _ __ __ _ _ __ ___ ___ _ __ // | '_ \ / _` | '__/ __|/ _ \ '__| // | |_) | (_| | | \__ \ __/ | // | .__/ \__,_|_| |___/\___|_| // |_| export function crackdown(text) { console.debug("starting crack parsing"); console.debug(text); return text .replace(/[&<>"'`]/g, (c) => { switch (c) { case "&": return "&"; case "<": return "<"; case ">": return ">"; case '"': return """; case "'": return "'"; case "`": return "`"; default: return c; } }) .replace( /---(([a-zA-Z0-9:].*?[a-zA-Z0-9:])|[a-zA-Z0-9:])---/g, '$1', ) // line-through .replace( /___(([a-zA-Z0-9:].*?[a-zA-Z0-9:])|[a-zA-Z0-9:])___/g, '$1', ) // underline .replace( /_(([a-zA-Z0-9:].*?[a-zA-Z0-9:])|[a-zA-Z0-9:])_/g, '$1', ) // italic .replace( /\*(([a-zA-Z0-9:].*?[a-zA-Z0-9:])|[a-zA-Z0-9:])\*/g, '$1', ) // bold .replace( /\.{3}(([a-zA-Z0-9:].*?[a-zA-Z0-9:])|[a-zA-Z0-9:])\.{3}/g, '$1', ) // undercurl .replace( /\({3}(([a-zA-Z0-9:].*?[a-zA-Z0-9:])|[a-zA-Z0-9:])\){3}/g, '($1)', ) // faint with parentheses .replace( /\({2}(([a-zA-Z0-9:].*?[a-zA-Z0-9:])|[a-zA-Z0-9:])\){2}/g, '$1', ); // faint with parentheses console.debug("crack output", text); return text; }