Spaces:
Running
Running
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`)), | |
}]; | |
}; | |