diff --git a/WHATSNEW.md b/WHATSNEW.md index b457806d..99629735 100644 --- a/WHATSNEW.md +++ b/WHATSNEW.md @@ -18,7 +18,7 @@ This document attempts to track **major** changes and additions in ENiGMA½. For * Default hash tags can now be set in file areas. Simply supply an array or list of values in a file area block via `hashTags`. * Added ability to pass an `env` value (map) to `abracadabra` doors. See [Local Doors](./docs/modding/local-doors.md]). * `dropFileType` is now optional when launching doors with `abracadabra`. It can also be explicitly set to `none`. -* FSE in *view* mode can now stylize quote indicators. Supply `quoteStyleLevel1` in the `config` block. This can be a single string or an array of two strings (one to style the quotee's initials and the next for the '>' character). See the `messageAreaViewPost` menu `config` block in the default `luciano_blocktronics` `theme.hjson` file for an example. An additional level style (e.g. for nested quotes) may be added in the future. +* FSE in *view* mode can now stylize quote indicators. Supply `quoteStyleLevel1` in the `config` block. This can be a single string or an array of two strings (one to style the quotee's initials, the next for the '>' character, and finally the quoted text). See the `messageAreaViewPost` menu `config` block in the default `luciano_blocktronics` `theme.hjson` file for an example. An additional level style (e.g. for nested quotes) may be added in the future. ## 0.0.11-beta * Upgraded from `alpha` to `beta` -- The software is far along and mature enough at this point! diff --git a/art/themes/luciano_blocktronics/theme.hjson b/art/themes/luciano_blocktronics/theme.hjson index a6b6e6b3..58db21f4 100644 --- a/art/themes/luciano_blocktronics/theme.hjson +++ b/art/themes/luciano_blocktronics/theme.hjson @@ -542,6 +542,7 @@ quoteStyleLevel1: [ "|00|11", "|00|08", + "|00|03", ] } diff --git a/core/fse.js b/core/fse.js index 3237a713..83d81359 100644 --- a/core/fse.js +++ b/core/fse.js @@ -444,19 +444,19 @@ exports.FullScreenEditorModule = exports.getModule = class FullScreenEditorModul // - Origins // if (this.menuConfig.config.quoteStyleLevel1) { - let quoteStyleLevel1 = this.menuConfig.config.quoteStyleLevel1; - // can be a single style to cover XX> or an array to cover XX and > - if (!Array.isArray(quoteStyleLevel1)) { - quoteStyleLevel1 = [ quoteStyleLevel1 ]; + let styleL1 = this.menuConfig.config.quoteStyleLevel1; + // can be a single style to cover 'XX> TEXT' or an array to cover 'XX', '>', and TEXT + if (!Array.isArray(styleL1)) { + styleL1 = [ styleL1 ]; } - if (quoteStyleLevel1.length < 2) { - quoteStyleLevel1.push(quoteStyleLevel1); + while (styleL1.length < 3) { + styleL1.push(styleL1); } - const QuoteRegex = /^ ([A-Za-z0-9]{1,2})>([ ]+)/gm; - msg = msg.replace(QuoteRegex, (m, initials, spc) => { + const QuoteRegex = /^ ([A-Za-z0-9]{1,2})>([ ]+)([^\r\n]*\r?\n)/gm; + msg = msg.replace(QuoteRegex, (m, initials, spc, text) => { return pipeToAnsi( - ` ${quoteStyleLevel1[0]}${initials}${quoteStyleLevel1[1]}>${bodyMessageView.styleSGR1}${spc}` + ` ${styleL1[0]}${initials}${styleL1[1]}>${spc}${styleL1[2]}${text}${bodyMessageView.styleSGR1}` ); }); }