Skip to content

Commit

Permalink
[Color 4] Properly serialize missing channels in legacy colors (#2115)
Browse files Browse the repository at this point in the history
  • Loading branch information
nex3 committed Oct 17, 2023
1 parent c848cb4 commit 95a0ec5
Showing 1 changed file with 30 additions and 1 deletion.
31 changes: 30 additions & 1 deletion lib/src/visitor/serialize.dart
Original file line number Diff line number Diff line change
Expand Up @@ -557,9 +557,38 @@ final class _SerializeVisitor

void visitColor(SassColor value) {
switch (value.space) {
case ColorSpace.rgb || ColorSpace.hsl || ColorSpace.hwb:
case ColorSpace.rgb || ColorSpace.hsl || ColorSpace.hwb
when !value.isChannel0Missing &&
!value.isChannel1Missing &&
!value.isChannel2Missing &&
!value.isAlphaMissing:
_writeLegacyColor(value);

case ColorSpace.rgb:
_buffer.write('rgb(');
_writeChannel(value.channel0OrNull);
_buffer.writeCharCode($space);
_writeChannel(value.channel1OrNull);
_buffer.writeCharCode($space);
_writeChannel(value.channel2OrNull);
_maybeWriteSlashAlpha(value);
_buffer.writeCharCode($rparen);

case ColorSpace.hsl || ColorSpace.hwb:
_buffer
..write(value.space)
..writeCharCode($lparen);
_writeChannel(value.channel0OrNull);
if (!_isCompressed && !value.isChannel0Missing) _buffer.write('deg');
_buffer.writeCharCode($space);
_writeChannel(value.channel1OrNull);
if (!value.isChannel1Missing) _buffer.writeCharCode($percent);
_buffer.writeCharCode($space);
_writeChannel(value.channel2OrNull);
if (!value.isChannel2Missing) _buffer.writeCharCode($percent);
_maybeWriteSlashAlpha(value);
_buffer.writeCharCode($rparen);

case ColorSpace.lab ||
ColorSpace.oklab ||
ColorSpace.lch ||
Expand Down

0 comments on commit 95a0ec5

Please sign in to comment.