mirror of
https://github.com/the-djmaze/snappymail.git
synced 2025-01-09 00:08:18 +08:00
49 lines
986 B
JavaScript
49 lines
986 B
JavaScript
/**
|
|
* https://tools.ietf.org/html/rfc5173
|
|
*/
|
|
|
|
(Sieve => {
|
|
|
|
const Grammar = Sieve.Grammar;
|
|
|
|
class Body extends Grammar.Test
|
|
{
|
|
constructor()
|
|
{
|
|
super('body');
|
|
this.comparator = 'i;ascii-casemap',
|
|
this.match_type = ':is',
|
|
this.body_transform = ''; // :raw, :content <string-list>, :text
|
|
this.key_list = new Grammar.StringList;
|
|
}
|
|
|
|
toString()
|
|
{
|
|
return 'body'
|
|
// + ' ' + this.comparator
|
|
+ ' ' + this.match_type
|
|
+ ' ' + this.body_transform
|
|
+ ' ' + this.key_list;
|
|
}
|
|
|
|
|
|
pushArguments(args)
|
|
{
|
|
args.forEach((arg, i) => {
|
|
if (':is' === arg || ':contains' === arg || ':matches' === arg) {
|
|
this.match_type = arg;
|
|
} else if (':raw' === arg || ':text' === arg) {
|
|
this.body_transform = arg;
|
|
} else if (':content' === arg) {
|
|
// string-list
|
|
} else if (arg instanceof Grammar.StringList || arg instanceof Grammar.StringType) {
|
|
this[args[i+1] ? 'content_list' : 'key_list'] = arg;
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
Sieve.Extensions.Body = Body;
|
|
|
|
})(this.Sieve);
|
|
|