peteboere / css-crush

CSS preprocessor.
http://the-echoplex.net/csscrush
MIT License
537 stars 51 forks source link

Migration from Less - handling of double slash comments #102

Open chrisdeeming opened 7 months ago

chrisdeeming commented 7 months ago

This isn't a dealbreaker, but thought I'd ask the question.

// avatars
.avatar
{
    // overflow: hidden;
    border-radius: var(--radius-avatar, 100vw);
}

With Less, this would be output as:

.avatar
{
    border-radius: var(--radius-avatar, 100vw);
}

It looks like we can use the declaration_preprocess event to strip out properties that start with //.

Are there any events that would enable us to strip out the others, or convert them to CSS comments?

chrisdeeming commented 7 months ago

This works, I guess?

$process->on('capture_phase0', function (\CssCrush\Process $process)
{
    $process->input->string = preg_replace('/^\s*\/\/.*/m', '', $process->input->string);
    $importer = new \CssCrush\Importer($process);
    $process->string = new \CssCrush\StringObject($importer->collate());
});

We're probably just going to pre-process the template before passing it to crush. Though this highlights that perhaps an event that allows you to modify the input could be useful for others.

peteduel commented 7 months ago

This preprocessor only handles the comment style standard to CSS /* */, as staying close to the standard is a design goal