import { power_user } from './power-user.js';

// Showdown extension to make chat separators (dinkuses) ignore markdown formatting
export const markdownExclusionExt = () => {
    if (!power_user) {
        console.log('Showdown-dinkus extension: power_user wasn\'t found! Returning.');
        return [];
    }

    let combinedExcludeString = '';
    if (power_user.context.chat_start) {
        combinedExcludeString += `${power_user.context.chat_start},`;
    }

    if (power_user.context.example_separator) {
        combinedExcludeString += `${power_user.context.example_separator},`;
    }

    if (power_user.markdown_escape_strings) {
        combinedExcludeString += power_user.markdown_escape_strings;
    }

    const escapedExclusions = combinedExcludeString
        .split(',')
        .filter((element) => element.length > 0)
        .map((element) => `(${element.split('').map((char) => `\\${char}`).join('')})`);


    // No exclusions? No extension!
    if (!combinedExcludeString || combinedExcludeString.length === 0 || escapedExclusions.length === 0) {
        return [];
    }

    const replaceRegex = new RegExp(`^(${escapedExclusions.join('|')})\n`, 'gm');
    return [{
        type: 'lang',
        regex: replaceRegex,
        replace: ((match) => match.replace(replaceRegex, `\u0000${match} \n`)),
    }];
};