diff --git a/public/index.html b/public/index.html index 5e144530c..a14c3fda0 100644 --- a/public/index.html +++ b/public/index.html @@ -1628,7 +1628,6 @@ -

Instruct mode diff --git a/public/script.js b/public/script.js index 516d28b33..10cc3ad6a 100644 --- a/public/script.js +++ b/public/script.js @@ -150,7 +150,7 @@ import { } from "./scripts/secrets.js"; import { EventEmitter } from './scripts/eventemitter.js'; import { context_settings, loadContextTemplatesFromSettings } from "./scripts/context-template.js"; -import { dinkusExtension } from "./scripts/showdown-dinkus.js"; +import { markdownExclusionExt } from "./scripts/showdown-exclusion.js"; import { setFloatingPrompt } from "./scripts/extensions/floating-prompt/index.js"; //exporting functions and vars for mods @@ -545,7 +545,7 @@ function reloadMarkdownProcessor(render_formulas = false) { // Maybe move this into power_user init? setTimeout(() => { if (power_user) { - converter.addExtension(dinkusExtension(), 'dinkus'); + converter.addExtension(markdownExclusionExt(), 'exclusion'); } }, 1) diff --git a/public/scripts/power-user.js b/public/scripts/power-user.js index 797184aa3..d6de47d9b 100644 --- a/public/scripts/power-user.js +++ b/public/scripts/power-user.js @@ -93,7 +93,7 @@ let power_user = { multigen_first_chunk: 50, multigen_next_chunks: 30, custom_chat_separator: '', - // markdown_escape_strings: '', + markdown_escape_strings: '', fast_ui_mode: true, avatar_style: avatar_styles.ROUND, chat_display: chat_styles.DEFAULT, @@ -562,7 +562,7 @@ function loadPowerUserSettings(settings, data) { $("#include_newline_checkbox").prop("checked", power_user.include_newline); $('#render_formulas').prop("checked", power_user.render_formulas); $("#custom_chat_separator").val(power_user.custom_chat_separator); - //$("#markdown_escape_strings").val(power_user.markdown_escape_strings); + $("#markdown_escape_strings").val(power_user.markdown_escape_strings); $("#fast_ui_mode").prop("checked", power_user.fast_ui_mode); $("#waifuMode").prop("checked", power_user.waifuMode); $("#movingUImode").prop("checked", power_user.movingUI); @@ -1009,13 +1009,13 @@ $(document).ready(() => { saveSettingsDebounced(); reloadMarkdownProcessor(power_user.render_formulas); }); - /* - $("#markdown_escape_strings").on('input', function () { - power_user.markdown_escape_strings = $(this).val(); - saveSettingsDebounced(); - reloadMarkdownProcessor(power_user.render_formulas); - }); - */ + + $("#markdown_escape_strings").on('input', function () { + power_user.markdown_escape_strings = $(this).val(); + saveSettingsDebounced(); + reloadMarkdownProcessor(power_user.render_formulas); + }); + $("#multigen").change(function () { power_user.multigen = $(this).prop("checked"); saveSettingsDebounced(); diff --git a/public/scripts/showdown-dinkus.js b/public/scripts/showdown-dinkus.js deleted file mode 100644 index 9a895ee9d..000000000 --- a/public/scripts/showdown-dinkus.js +++ /dev/null @@ -1,25 +0,0 @@ -import { power_user } from './power-user.js'; - -// Showdown extension to make chat separators (dinkuses) ignore markdown formatting -export const dinkusExtension = () => { - if (!power_user) { - console.log("Showdown-dinkus extension: power_user wasn't found! Returning."); - return [] - } - - // Create an escaped sequence so the regex can work with any character - const savedDinkus = power_user.custom_chat_separator - - // No dinkus? No extension! - if (!savedDinkus || savedDinkus.trim().length === 0) { - return [] - } - - const escapedDinkus = savedDinkus.split('').map((e) => `\\${e}`).join(''); - const replaceRegex = new RegExp(`^(${escapedDinkus})\n`, "gm") - return [{ - type: "lang", - regex: replaceRegex, - replace: (match) => match.replace(replaceRegex, `\u0000${savedDinkus} \n`) - }]; -} diff --git a/public/scripts/showdown-exclusion.js b/public/scripts/showdown-exclusion.js new file mode 100644 index 000000000..39637150e --- /dev/null +++ b/public/scripts/showdown-exclusion.js @@ -0,0 +1,35 @@ +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(",") + .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`)) + }]; +}