Activate more Sieve extensions and use parseScript when saving script

This commit is contained in:
the-djmaze 2022-03-13 20:22:00 +01:00
parent 58f5e90f8f
commit 40adf992ed
9 changed files with 39 additions and 38 deletions

View file

@ -43,5 +43,3 @@ export class BodyCommand extends GrammarTest
});
}
}
//Sieve.Commands.body = BodyCommand;

View file

@ -34,5 +34,3 @@ export class EnvironmentCommand extends GrammarTest
this.key_list = args[args.length-1];
}
}
//Sieve.Commands.environment = EnvironmentCommand;

View file

@ -69,10 +69,3 @@ export class StringCommand extends GrammarTest
this.key_list = args[args.length-1];
}
}
/*
Object.assign(Sieve.Commands, {
set: SetCommand,
string: StringCommand
});
*/

View file

@ -68,10 +68,3 @@ export class VirusTestCommand extends GrammarTest
});
}
}
/*
Object.assign(Sieve.Commands, {
spamtest: SpamTestCommand,
virustest: VirusTestCommand
});
*/

View file

@ -66,7 +66,7 @@ export class CurrentDateCommand extends GrammarTest
{
constructor()
{
super('date');
super();
this.zone = new GrammarQuotedString;
this.date_part = new GrammarQuotedString;
this.key_list = new GrammarStringList;
@ -76,7 +76,7 @@ export class CurrentDateCommand extends GrammarTest
toString()
{
return 'date'
return 'currentdate'
+ (this.zone.length ? ' :zone ' + this.zone : '')
+ (this.comparator ? ' :comparator ' + this.comparator : '')
+ ' ' + this.match_type
@ -98,9 +98,3 @@ export class CurrentDateCommand extends GrammarTest
});
}
}
/*
Object.assign(Sieve.Commands, {
date: DateTestCommand,
currentdate: CurrentDateCommand
*/

View file

@ -83,9 +83,3 @@ export class DeleteHeaderCommand extends GrammarCommand
}
}
}
/*
Object.assign(Sieve.Commands, {
addheader: AddHeaderCommand,
deleteheader: DeleteHeaderCommand
});
*/

View file

@ -51,9 +51,10 @@ import {
TrueCommand
} from 'Sieve/Tests';
import {
VacationCommand
} from 'Sieve/Extensions/rfc5230';
import { BodyCommand } from 'Sieve/Extensions/rfc5173';
import { EnvironmentCommand } from 'Sieve/Extensions/rfc5183';
import { SetCommand, StringCommand } from 'Sieve/Extensions/rfc5229';
import { VacationCommand } from 'Sieve/Extensions/rfc5230';
import {
SetFlagCommand,
@ -62,6 +63,10 @@ import {
HasFlagCommand
} from 'Sieve/Extensions/rfc5232';
import { SpamTestCommand, VirusTestCommand } from 'Sieve/Extensions/rfc5235';
import { DateCommand, CurrentDateCommand } from 'Sieve/Extensions/rfc5260';
import { AddHeaderCommand, DeleteHeaderCommand } from 'Sieve/Extensions/rfc5293';
import {
ErejectCommand,
RejectCommand
@ -97,6 +102,13 @@ const
not: NotCommand,
size: SizeCommand,
true: TrueCommand,
// rfc5173
body: BodyCommand,
// rfc5183
environment: EnvironmentCommand,
// rfc5229
set: SetCommand,
string: StringCommand,
// rfc5230
vacation: VacationCommand,
// rfc5232
@ -104,6 +116,15 @@ const
addflag: AddFlagCommand,
removeflag: RemoveFlagCommand,
hasflag: HasFlagCommand,
// rfc5235
spamtest: SpamTestCommand,
virustest: VirusTestCommand,
// rfc5260
date: DateCommand,
currentdate: CurrentDateCommand,
// rfc5293
AddHeaderCommand,
DeleteHeaderCommand,
// rfc5429
ereject: ErejectCommand,
reject: RejectCommand,

View file

@ -43,6 +43,9 @@ export class SieveScriptPopupView extends rl.pluginPopupView {
let self = this,
script = self.script();
if (!self.saving/* && script.hasChanges()*/) {
this.errorText('');
self.saveError(false);
if (!script.verify()) {
return;
}
@ -52,9 +55,14 @@ export class SieveScriptPopupView extends rl.pluginPopupView {
return;
}
try {
parseScript(this.script().body());
} catch (e) {
this.errorText(e.message);
return;
}
self.saving = true;
self.saveError(false);
self.errorText('');
if (self.allowToggle()) {
script.body(script.filtersToRaw());