#1: Need to deal with nested for_every_part loops. What will this do:
for_every_part { if (some test here) { for_every_part { ... } } }
My inclination is to ban them, or at least allow an implementation-defined
limit which can be set to 1. (Actually, such a limit is allowed implicitly for
almost anything in sieve by the base spec.)
I would like the nested for_every_part to operate on the child nodes of the
current context body part, not always operate on all the body parts of the root
message. This to me is the obvious behaviour. If Ned wants to
(understandably) ban them from his implementation, that's fine by me ;o)
#2: Need to decide if there would be a "mime" shorthand for testing the
type/subtype, without requiring
if allof (mime :type "multipart", mime :subtype "alternative") ?
How about getting rid of :subtype and making :type check the whole thing? A
subtype is only meaningful in the context of a particular type; the only
exception to this are suffix tags, and checking those would require :matches
anyway.
And :matches can easily be used to check the primary type by itself. I see no
strong reason to prefer
if mime :type "text" ...
over
if mime :type :matches "text/*" ...
Although it isn't very explicit, I think I'm right in saying the default match
type for mime is "is"? So that means if :type matches against type/subtype,
then I would be very confused if I wrote :type "text" and it didn't match
against text/plain.
I suggest:
- :type to match against type,
- :subtype to match against subtype
- :contenttype to match against type/subtype
#3: We need to add some way to look at parameter lists:
Content-Type: text/plain; charset="foo"
I currently have:
MimeClause ::= "x_mime" [COMPARATOR] [MATCH-TYPE]
<header-list: string-list> [<parameter-list: string-list>] <key-list:
string-list>
MimeClause ::= "x_mime" :filename <key-list: string-list>
MimeClause ::= "x_mime" :type <key-list: string-list>
MimeClause ::= "x_mime" :subtype <key-list: string-list>
So if you don't have a :type/:subtype/:filename, then you must specify a list
of header names, a list of parameter names, and the search strings. "type" and
"subtype" are supported as psuedo parameter names of the bit before the first
";". If there are no parameter names, then it matches against the text before
the first ";". :type/:subtype/:filename then become short hands:
mime :type "text"
mime "Content-Type" "type" "text
mime :subtype "plain"
mime "Content-Type" "subtype" "plain"
mime :filename "junk.txt"
anyof (
mime "Content-Disposition" "filemane""junk.txt"'
mime "Content-Type" "name" "junk.txt"
)
The following issues/comments were raised at the meeting:
interactions with variables
notifications
notifications to calendar service
address tests, exists tests
add tests mimeheader, mimeparameter
I prefer
header :mime
exists :mime
address :mime
Over
mimeheader
mimeexists
mimeaddress
but I do want to see some way to do address and exists tests on inner
headers. This is actually quite a bit more important than a parameter
test IMO.
I agree
Nigel