[Gisle Aas]:
I was not able to tell from RFC 3028 if the extension names
provided with the require statement are case-insensitive or not.
Should this work?
REQUIRE "FILEINTO";
fileinto "FOO";
I'd say no.
I'd say yes. It isn't like we're going to define FILEINTO to have a different
meaning than fileinto, so implementations get maximum interop by performing
a case-insensitive comparison in this context.
The closest thing I find is section 2.1 that says:
Tokens in the ASCII range are considered case-insensitive.
Should strings (as the argument to require) be considered tokens
in this regard?
I agree it isn't clearly stated, but strings are called "literal
data", and you can do case sensitive matching (using the "i;octet"
comparator) on literal strings. from this I conclude that strings
preserve case unless otherwise stated. but then there is this tidbit:
Case preservation does not imply case sensitivity on comparisons.
[2.7.3 Comparators]:
| In order to allow for language-independent, case-independent matches,
| the match type may be coupled with a comparator name. [...]
|
| All implementations MUST support the "i;octet" comparator (simply
| compares octets) and the "i;ascii-casemap" comparator (which treats
| uppercase and lowercase characters in the ASCII subset of UTF-8 as
| the same). If left unspecified, the default is "i;ascii-casemap".
I find it dubious to apply this default comparator on actions where no
match type can be specified or is explicitly specified. in other
words, I don't think it is right to say that REQUIRE has an implicit
:IS match type.
We have case-insensitive tokens and string comparisons are case-insensitive
by default. I'm sorry, but what's dubious is the assrtion that require should
be case-sensitive.
Ned