Index: gc_core/js/lang_core/gc_engine.js ================================================================== --- gc_core/js/lang_core/gc_engine.js +++ gc_core/js/lang_core/gc_engine.js @@ -231,10 +231,13 @@ this.sText = this.sText.replace(/'/g, "’"); } if (this.sText.includes("‑")) { this.sText = this.sText.replace(/‑/g, "-"); // nobreakdash } + if (this.sText.includes("@@")) { + this.sText = this.sText.replace(/@@+/g, ""); + } // parse sentence for (let [iStart, iEnd] of gc_engine.getSentenceBoundaries(this.sText)) { try { this.sSentence = this.sText.slice(iStart, iEnd); @@ -795,12 +798,12 @@ let ln = m.end[iGroup] - m.start[iGroup]; let sNew = ""; if (sRepl === "*") { sNew = " ".repeat(ln); } - else if (sRepl === ">" || sRepl === "_" || sRepl === "~") { - sNew = sRepl + " ".repeat(ln-1); + else if (sRepl === "_") { + sNew = "_".repeat(ln); } else if (sRepl === "@") { sNew = "@".repeat(ln); } else if (sRepl.slice(0,1) === "=") { Index: gc_core/py/lang_core/gc_engine.py ================================================================== --- gc_core/py/lang_core/gc_engine.py +++ gc_core/py/lang_core/gc_engine.py @@ -260,10 +260,12 @@ sText = sText.replace(" ", ' ') # nnbsp if "'" in sText: sText = sText.replace("'", "’") if "‑" in sText: sText = sText.replace("‑", "-") # nobreakdash + if "@@" in sText: + sText = re.sub("@@+", "", sText) # parse sentences for iStart, iEnd in _getSentenceBoundaries(sText): if 4 < (iEnd - iStart) < 2000: try: @@ -687,11 +689,13 @@ "text processor: write in at position" nLen = m.end(iGroup) - m.start(iGroup) if sRepl == "*": sNew = " " * nLen elif sRepl == "_": - sNew = sRepl + " " * (nLen-1) + sNew = "_" * nLen + elif sRepl == "@": + sNew = "@" * nLen elif sRepl[0:1] == "=": sNew = globals()[sRepl[1:]](sText, m) sNew = sNew + " " * (nLen-len(sNew)) if bUppercase and m.group(iGroup)[0:1].isupper(): sNew = sNew.capitalize()