- From: Alan Gresley <alan@css-class.com>
- Date: Fri, 11 Feb 2011 15:03:50 +1100
- To: "Linss, Peter" <peter.linss@hp.com>, Alex Robinson <css-discuss@alex.fu2k.org>
- CC: "L. David Baron" <dbaron@dbaron.org>, Tab Atkins <jackalmage@gmail.com>, www-style list <www-style@w3.org>, Daniel Glazman <daniel.glazman@disruptive-innovations.com>
Caveat, I may be way off the mark here. If so please ignore.
On 11/02/2011 12:23 PM, Linss, Peter wrote:
>>>> Do we really want that?
>>>>
>>>> How about:
>>>> @var $foo url(;
>>>> @var $bar );
>>>>
>>>> p { content: $foo http://example.com/yikes.gif $bar }
>>>
>>> Oh jeezus no.  I don't know the precise details of url() parsing, but
>>> either that is parsed into a single $foo variable containing
>>> "url(;\n@var $bar )", or they're both invalid.  Either way works for
>>> me.
>>
>> Even if variables represent a token-stream, we should require that
>> they be (), {}, and [] -balanced.
>
> We also need to prohibit ':' from being in a variable value.
>
> Now, how about:
>
> @var $foo */;
>
> Or if at runtime I change a variable value to "/*"?
>
> I think the "token stream" concept is opening us up to a word of hurt...
>
> Variable values are going to need to be very tightly restricted... and/or
> the rules of variable expansion. The more I think about "hixie style evil
> test cases" the more I think variable values should be only a single
> property value.
This is why I don't like this format,
@var $foo whatever;
and prefer something that is easy dropped.
@var $foo {
     color: red;
}
or
@var foo {
     color: red;
}
On 11/02/2011 12:34 PM, Daniel Glazman wrote:
> Le 11/02/11 02:15, Linss, Peter a écrit :
>
>> Don¹t forget this case:
>> @var $foo /*this_is_a_valid_url*/; p { content: url($foo); }
>>
>> Is it a comment or not?
>
>
> Never. A comment is explicitely said to be able to happen anywhere
> between tokens in the grammar and you can almost consider it's
> stripped before tokenization (even if of course it is not).
>
> The variable assignment above is always reduced to @var $foo ;
I guess you never messed with hacking IE7 or earlier version with 
@imports. Maybe most decent browsers may drop poorly written CSS 
(grammar wise) but IE7 or earlier will eat many things.
<http://css-class.com/test/variables.htm>
<http://css-class.com/test/@var%20$ie>
<http://css-class.com/test/@var%20$ie2>
And the way some versions of IE treat comments and other tokens, we 
don't want loose tokenization.
-- 
Alan http://css-class.com/
Armies Cannot Stop An Idea Whose Time Has Come. - Victor Hugo
Received on Friday, 11 February 2011 04:04:26 UTC