Hello,
I am building a Sieve implementation and, while reading the new 3028bis
specification, I noticed the new encoded-character extension. Its
substitution syntax is somewhat similar to what the variables extension
defined ( i.e. ${....} ). I am currently working with
draft-ietf-sieve-3028bis-13 and draft-ietf-sieve-variables-08. Now I am
wondering how these extensions are supposed to work if both are active.
Niether specification mentions this possibility (variables-08 seems to
be pretty old already though).
One could define encoded-character substituion to be performed before
any variables substitution, making the variables substitution act upon
the result of the encoded character substitution. This would make the
following possible:
"${hex: 24 7B}foobar}" ==> "${foobar}" ==> "Whatever the foobar
variable holds."
Although this is (to my opinion) intuitively the most logical
implementation, I can imagine other options in which encoded character
and variables substituion is performed in parallel, making use of the
fact that both extensions use the same delimiters for marking a
substitution. This could make things more efficient, as only one pass is
needed to identify substitutions in the string. This makes the above
situation result in just "${foobar}" without further substitution.
Although the above example is pretty useless and very unlikely to occur
in reality, I think it is appropriate for a specification to explicitly
note what is to be done in this situation.
Note that I am not trying to revive any old discussion on this topic. I
would just like to know what your opion is on this issue and I am hoping
that you could make this more explicit in the specification.
Regards,
--
Stephan Bosch
stephan(_at_)rename-it(_dot_)nl