- From: Chris Eppstein <chris@eppsteins.net>
- Date: Wed, 23 May 2012 18:05:00 -0700
- To: Brian Kardell <bkardell@gmail.com>
- Cc: "Tab Atkins Jr." <jackalmage@gmail.com>, "www-style@w3.org" <www-style@w3.org>, Eric Meyer <eric@oddbird.net>, "liam@w3.org" <liam@w3.org>
- Message-Id: <AEE92AF0-DB79-4F77-BFAD-CCFBC75EC853@eppsteins.net>
In sass, variables have two modes. 1. As in theproposal by Tab, they can be used in any value context and their data type is preserved. 2. In non-value contexts (properties, selectors), there is a macro-expansion phase where variables (and other script expressions) can be evaluated and cast to a string before they are parsed. To do this, sass has an escape sequence of #{}. Which is a syntax that derives from its ruby-based roots. To be honest, I don't think the variables proposal, being cascade based, is at all compatible with non-value use-cases. But it doesn't really matter unless Mixins or some sort of in-browser macro expansion phase comes along. I was under the impression these were extremely unlikely. Maybe Tab has a grand vision for how this spec would integrate with mixins that I can't see. Hunt & pecked on my iPhone... Sorry if it's brief! On May 23, 2012, at 5:32 PM, Brian Kardell <bkardell@gmail.com> wrote: > Interesting, I never would have expected that to work, I wonder how many people would. Earlier in this thread[1], marat also suggested this: > > /* Using compact $bp as property name instead of long 'background-position' */ > .foo {$bp: center; } > > I also didn't expect that to work (don't see how it could if that is the syntax for assignment), regardless of the syntax, but no one seems to have addressed it. I think it is as interesting and maybe as valid as interpolated strings... no? > > [1] http://lists.w3.org/Archives/Public/www-style/2012May/0782.html > > On May 23, 2012 8:23 PM, "Tab Atkins Jr." <jackalmage@gmail.com> wrote: > On Wed, May 23, 2012 at 5:18 PM, Liam R E Quin <liam@w3.org> wrote: > > On Wed, 2012-05-23 at 12:54 -0700, Tab Atkins Jr. wrote: > >> [...] > > > >> Variables can hold any value, > >> including values that contain commas. > > > > Presumably they can also hold $ signs too. > > Kinda. When I change the spec to explicitly define the value-space, > unrestricted DELIM tokens won't be allowed. However, var references > can be - they're expanded at computed-value time (the only thing > that's ever "resolved" in a variable before it's used in a property). > > > Is the ${name} syntax also allowed? e.g. > > > > content: "hello ${var1}000 and ${var2}nospaceafter"; > > No, they can only be used as component values right now, so they can't > be used within strings. That's an interesting use-case, though. > > ~TJ >
Received on Thursday, 24 May 2012 01:05:42 UTC