mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-08-29 20:19:22 +03:00
Added the new Sieve parser as script validator
This commit is contained in:
parent
9bae77bfa1
commit
42813b90dd
3 changed files with 19 additions and 5 deletions
|
|
@ -168,7 +168,7 @@ export const parseScript = (script, name = 'script.sieve') => {
|
|||
error = message => {
|
||||
// throw new SyntaxError(message + ' at ' + regex.lastIndex + ' line ' + line, name, line)
|
||||
throw new SyntaxError(message + ' on line ' + line
|
||||
+ ' around: ' + script.substr(regex.lastIndex - 10, 20).replace(/\r\n/g, '\\r\\n'), name, line)
|
||||
+ ' around:\n\n' + script.substr(regex.lastIndex - 20, 30), name, line)
|
||||
},
|
||||
pushArg = arg => {
|
||||
command || error('Argument not part of command');
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import { SieveScriptModel } from 'Sieve/Model/Script';
|
|||
|
||||
import { FilterPopupView } from 'Sieve/View/Filter';
|
||||
|
||||
//import { parseScript } from 'Sieve/Parser';
|
||||
import { parseScript } from 'Sieve/Parser';
|
||||
|
||||
import {
|
||||
capa,
|
||||
|
|
@ -18,7 +18,7 @@ export class SieveScriptPopupView extends rl.pluginPopupView {
|
|||
|
||||
this.addObservables({
|
||||
saveError: false,
|
||||
saveErrorText: '',
|
||||
errorText: '',
|
||||
rawActive: false,
|
||||
allowToggle: false,
|
||||
script: null
|
||||
|
|
@ -30,6 +30,15 @@ export class SieveScriptPopupView extends rl.pluginPopupView {
|
|||
this.filterForDeletion = ko.observable(null).askDeleteHelper();
|
||||
}
|
||||
|
||||
validateScript() {
|
||||
try {
|
||||
this.errorText('');
|
||||
parseScript(this.script().body());
|
||||
} catch (e) {
|
||||
this.errorText(e.message);
|
||||
}
|
||||
}
|
||||
|
||||
saveScript() {
|
||||
let self = this,
|
||||
script = self.script();
|
||||
|
|
@ -45,6 +54,7 @@ export class SieveScriptPopupView extends rl.pluginPopupView {
|
|||
|
||||
self.saving = true;
|
||||
self.saveError(false);
|
||||
self.errorText('');
|
||||
|
||||
if (self.allowToggle()) {
|
||||
script.body(script.filtersToRaw());
|
||||
|
|
@ -56,7 +66,7 @@ export class SieveScriptPopupView extends rl.pluginPopupView {
|
|||
|
||||
if (iError) {
|
||||
self.saveError(true);
|
||||
self.saveErrorText((data && data.ErrorMessageAdditional) || getNotification(iError));
|
||||
self.errorText((data && data.ErrorMessageAdditional) || getNotification(iError));
|
||||
} else {
|
||||
script.exists() || scripts.push(script);
|
||||
script.exists(true);
|
||||
|
|
@ -125,6 +135,7 @@ export class SieveScriptPopupView extends rl.pluginPopupView {
|
|||
this.rawActive(raw);
|
||||
this.allowToggle(!raw);
|
||||
this.saveError(false);
|
||||
this.errorText('');
|
||||
|
||||
/*
|
||||
// TODO: Sieve GUI
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue