@@ -120,9 +120,8 @@ final global = UnmodifiableListView([
120
120
121
121
_function ("adjust-hue" , r"$color, $degrees" , (arguments) {
122
122
var color = arguments[0 ].assertColor ("color" );
123
- var degrees = arguments[1 ].assertNumber ("degrees" );
124
- _checkAngle (degrees, "degrees" );
125
- return color.changeHsl (hue: color.hue + degrees.value);
123
+ var degrees = _angleValue (arguments[1 ], "degrees" );
124
+ return color.changeHsl (hue: color.hue + degrees);
126
125
}),
127
126
128
127
_function ("lighten" , r"$color, $amount" , (arguments) {
@@ -484,9 +483,9 @@ SassColor _updateComponents(List<Value> arguments,
484
483
var green = getParam ("green" , 255 );
485
484
var blue = getParam ("blue" , 255 );
486
485
487
- var hueNumber = scale ? null : keywords. remove ( "hue" ) ? . assertNumber ( "hue" );
488
- if (hueNumber != null ) _checkAngle (hueNumber, "hue" );
489
- var hue = hueNumber ? .value ;
486
+ var hue = scale
487
+ ? null
488
+ : keywords. remove ( " hue" ). andThen ((hue) => _angleValue (hue, "hue" )) ;
490
489
491
490
var saturation = getParam ("saturation" , 100 , checkPercent: true );
492
491
var lightness = getParam ("lightness" , 100 , checkPercent: true );
@@ -634,54 +633,37 @@ Value _hsl(String name, List<Value> arguments) {
634
633
return _functionString (name, arguments);
635
634
}
636
635
637
- var hue = arguments[0 ]. assertNumber ( "hue" );
636
+ var hue = _angleValue ( arguments[0 ], "hue" );
638
637
var saturation = arguments[1 ].assertNumber ("saturation" );
639
638
var lightness = arguments[2 ].assertNumber ("lightness" );
640
639
641
- _checkAngle (hue, "hue" );
642
640
_checkPercent (saturation, "saturation" );
643
641
_checkPercent (lightness, "lightness" );
644
642
645
643
return SassColor .hslInternal (
646
- hue.value ,
644
+ hue,
647
645
saturation.value.clamp (0 , 100 ),
648
646
lightness.value.clamp (0 , 100 ),
649
647
alpha.andThen ((alpha) =>
650
648
_percentageOrUnitless (alpha.assertNumber ("alpha" ), 1 , "alpha" )),
651
649
ColorFormat .hslFunction);
652
650
}
653
651
654
- /// Prints a deprecation warning if [hue] has a unit other than `deg` .
655
- void _checkAngle (SassNumber angle, String name) {
656
- if (! angle.hasUnits || angle.hasUnit ('deg' )) return ;
657
-
658
- var message = StringBuffer ()
659
- ..writeln ("\$ $name : Passing a unit other than deg ($angle ) is deprecated." )
660
- ..writeln ();
661
-
662
- if (angle.compatibleWithUnit ('deg' )) {
663
- message
664
- ..writeln (
665
- "You're passing $angle , which is currently (incorrectly) converted "
666
- "to ${SassNumber (angle .value , 'deg' )}." )
667
- ..writeln ("Soon, it will instead be correctly converted to "
668
- "${angle .coerce (['deg' ], [])}." )
669
- ..writeln ();
670
-
671
- var actualUnit = angle.numeratorUnits.first;
672
- message
673
- ..writeln (
674
- "To preserve current behavior: calc(\$ $name * 1deg/1$actualUnit )" )
675
- ..writeln ("To migrate to new behavior: 0deg + \$ $name " )
676
- ..writeln ();
677
- } else {
678
- message
679
- ..writeln ("To preserve current behavior: ${angle .unitSuggestion (name )}" )
680
- ..writeln ();
681
- }
652
+ /// Asserts that [angle] is a number and returns its value in degrees.
653
+ ///
654
+ /// Prints a deprecation warning if [angle] has a non-angle unit.
655
+ double _angleValue (Value angleValue, String name) {
656
+ var angle = angleValue.assertNumber (name);
657
+ if (angle.compatibleWithUnit ('deg' )) return angle.coerceValueToUnit ('deg' );
682
658
683
- message.write ("See https://sass-lang.com/d/color-units" );
684
- warn (message.toString (), deprecation: true );
659
+ warn (
660
+ "\$ $name : Passing a unit other than deg ($angle ) is deprecated.\n "
661
+ "\n "
662
+ "To preserve current behavior: ${angle .unitSuggestion (name )}\n "
663
+ "\n "
664
+ "See https://sass-lang.com/d/function-units" ,
665
+ deprecation: true );
666
+ return angle.value;
685
667
}
686
668
687
669
/// Prints a deprecation warning if [number] doesn't have unit `%` .
@@ -700,16 +682,15 @@ void _checkPercent(SassNumber number, String name) {
700
682
/// Create an HWB color from the given [arguments] .
701
683
Value _hwb (List <Value > arguments) {
702
684
var alpha = arguments.length > 3 ? arguments[3 ] : null ;
703
- var hue = arguments[0 ]. assertNumber ( "hue" );
685
+ var hue = _angleValue ( arguments[0 ], "hue" );
704
686
var whiteness = arguments[1 ].assertNumber ("whiteness" );
705
687
var blackness = arguments[2 ].assertNumber ("blackness" );
706
688
707
- _checkAngle (hue, "hue" );
708
689
whiteness.assertUnit ("%" , "whiteness" );
709
690
blackness.assertUnit ("%" , "blackness" );
710
691
711
692
return SassColor .hwb (
712
- hue.value ,
693
+ hue,
713
694
whiteness.valueInRange (0 , 100 , "whiteness" ),
714
695
blackness.valueInRange (0 , 100 , "blackness" ),
715
696
alpha.andThen ((alpha) =>
0 commit comments