From 37938d82b8a28c373d679d1007218f2ed99dbd8c Mon Sep 17 00:00:00 2001 From: the-djmaze <> Date: Mon, 23 Sep 2024 12:50:29 +0200 Subject: [PATCH] Bugfix: handling of Sieve GrammarQuotedString --- dev/Sieve/Grammar.js | 6 +++++- dev/Sieve/Parser.js | 3 ++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/dev/Sieve/Grammar.js b/dev/Sieve/Grammar.js index a113374c5..60f39cabd 100644 --- a/dev/Sieve/Grammar.js +++ b/dev/Sieve/Grammar.js @@ -271,10 +271,14 @@ GrammarStringList.fromString = list => { export class GrammarQuotedString extends GrammarString { + constructor(value = '') + { + super(value instanceof GrammarQuotedString ? value.value : value); + } + toString() { return '"' + this._value.replace(/[\\"]/g, '\\$&') + '"'; -// return '"' + super.toString().replace(/[\\"]/g, '\\$&') + '"'; } } diff --git a/dev/Sieve/Parser.js b/dev/Sieve/Parser.js index 16d81f896..64364cf95 100644 --- a/dev/Sieve/Parser.js +++ b/dev/Sieve/Parser.js @@ -228,7 +228,8 @@ export const parseScript = (script, name = 'script.sieve') => { pushArg(GrammarMultiLine.fromString(value)); break; case T_QUOTED_STRING: - pushArg(new GrammarQuotedString(value.slice(1,-1))); + try { value = JSON.parse(value); } catch(e) { console.error(e, value); } + pushArg(new GrammarQuotedString(value)); break; case T_NUMBER: pushArg(new GrammarNumber(value));