mirror of
https://github.com/SillyTavern/SillyTavern.git
synced 2024-12-13 01:46:57 +01:00
37 lines
1.2 KiB
JavaScript
37 lines
1.2 KiB
JavaScript
|
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.custom_chat_separator) {
|
||
|
combinedExcludeString += `${power_user.custom_chat_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`))
|
||
|
}];
|
||
|
}
|