- From: Tab Atkins Jr. <jackalmage@gmail.com>
- Date: Tue, 22 Mar 2011 09:58:19 -0700
- To: Alan Gresley <alan@css-class.com>
- Cc: www-style list <www-style@w3.org>, Shane Stephens <shans@google.com>, Nathan Weizenbaum <nweiz@google.com>, Chris Eppstein <chris@eppsteins.net>
On Tue, Mar 22, 2011 at 2:13 AM, Alan Gresley <alan@css-class.com> wrote: > On 22/03/2011 4:33 PM, Tab Atkins Jr. wrote: >>> Look at this. >>> >>> @trait bar($one, $two) { >>> prop: $one; >>> prop: $two; >>> } >>> >>> >>> I rejected your proposal regarding variables because they behaved like >>> other >>> @rules ending with and a semicolon. I look at the above syntax and I >>> seeing >>> declaration blocks in between curly braces {...}. I do not support your >>> syntax since it move away from core grammar. >> >> There is absolutely nothing wrong with @trait from a Core Grammar >> perspective (or @var, for that matter). The @mixin rule inside of a >> declaration block violates the Core Grammar, but it fails in a way >> that is still forwards-compatible for any parser that properly >> implements the error-recovery rules. > > > Have you tested any of this. Have you tested error recovery. Yes. No modern browser has any problem with mixins. The following document renders correctly (ignoring the @-rules) in all modern browsers: <!doctype html> <style> @trait foo { color: red; } #one { @mixin foo; color: blue; } #two { color: green; @mixin foo; } </style> <p id=one>blue</p> <p id=two>green</p> Mixins with arguments are similarly compatible and friendly. > Can you point > to test cases that show properly formed 'mixin' and test cases that show > poorly formed 'mixin'? > > > What should happen here? > > > @mixing table-base { > ht { > text-align: center; > font-weight: bold; > /*}*/ > TD, ht {padding: 2PX} > } > > @mixing left($dist) { > float: left; > margin-left: $dist; > } > > #data { > @include left(10PX); > @include table-base; > } This test-case has absolutely nothing to do with my proposal; it's a generic test of mismatched braces handling, and would apply equally to any construct with braces, such as @media or a declaration block. (In a conformant parser, error recovery would cause the rest of the document to be swallowed.) >> The fact that IE7 has buggy >> error-recovery behavior should not hold back the evolution of the CSS >> language. > > The reason I have raised IE7 buggy behavior is to illustrate what happens > when you change core grammar. Supporting IE7 is not my concern. I have > always stated that CSS should been view from a pass, present and future > perspective. There are a limited number of tokens that can be used. I think > we should be wise when adding new tokens (or some used in a different > manner) or new grammar rules. Making a mistake now affects the future of > CSS. We have parsing rules for a reason. If a browser doesn't implement them, that's not an indictment of the parsing rules (not necessarily, at least). IE7 was a non-conformant parser in quite a number of ways. ~TJ
Received on Tuesday, 22 March 2011 16:59:11 UTC