- From: Tab Atkins Jr. via GitHub <sysbot+gh@w3.org>
- Date: Thu, 22 Aug 2024 19:34:41 +0000
- To: public-css-archive@w3.org
This is the sort of thing you can add when you're *designing* a language, but can't actually add later, because people end up relying on comment parsing. Unfortunately, CSS went with C rules for this, and we're stuck with them.
For example, it's *not uncommon* for me to exploit comment parsing to get easy binary toggling of sections when I'm experimenting, like:
```css
/**
this area is initially commented
/*/
this area is initially active
/**/
```
Because then, with the addition of a single character to the end of the first line:
```css
/**/
this area is now active
/*/
this area is now commented
/**/
```
This unfortunately means that to comment out large sections that might contain comments themselves, you need the help of a smart editor. Or you can use CSS parsing against itself - any of the brace pairs can effectively toggle stuff by making them invalid (with `{}` being the easiest, as it triggers rule parsing and doesn't need a closing `;` to restart normal parsing).
```css
{
this stuff is *basically* commented out, since the whole block is invalid and dropped
{
and you can nest them
}
so this is still commented out too
}
body::before { content: "normal content here"; }
```
It's even parsing-aware, so you can have, say, a string that contains an unmatched `}` and it won't accidentally close your comment, like a string with `*/` will in normal CSS.
--
GitHub Notification of comment by tabatkins
Please view or discuss this issue at https://github.com/w3c/csswg-drafts/issues/10768#issuecomment-2305490458 using your GitHub account
--
Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config
Received on Thursday, 22 August 2024 19:34:42 UTC