Skip to content

Commit

Permalink
Quote channel names in color functions (#2218)
Browse files Browse the repository at this point in the history
  • Loading branch information
nex3 committed Apr 13, 2024
1 parent 470447f commit b9fb0ab
Showing 1 changed file with 11 additions and 10 deletions.
21 changes: 11 additions & 10 deletions lib/src/functions/color.dart
Expand Up @@ -448,11 +448,8 @@ final module = BuiltInModule("color", functions: <Callable>[
r"$color, $channel",
(arguments) => SassBoolean(arguments[0]
.assertColor("color")
.isChannelMissing(
(arguments[1].assertString("channel")..assertQuoted("channel"))
.text,
colorName: "color",
channelName: "channel"))),
.isChannelMissing(_channelName(arguments[1]),
colorName: "color", channelName: "channel"))),

_function(
"is-in-gamut",
Expand All @@ -475,7 +472,7 @@ final module = BuiltInModule("color", functions: <Callable>[

_function("channel", r"$color, $channel, $space: null", (arguments) {
var color = _colorInSpace(arguments[0], arguments[2]);
var channelName = arguments[1].assertString("channel").text.toLowerCase();
var channelName = _channelName(arguments[1]);
if (channelName == "alpha") return SassNumber(color.alpha);

var channelIndex = color.space.channels
Expand Down Expand Up @@ -511,10 +508,8 @@ final module = BuiltInModule("color", functions: <Callable>[
"is-powerless",
r"$color, $channel, $space: null",
(arguments) => SassBoolean(_colorInSpace(arguments[0], arguments[2])
.isChannelPowerless(
arguments[1].assertString("channel").text.toLowerCase(),
colorName: "color",
channelName: "channel"))),
.isChannelPowerless(_channelName(arguments[1]),
colorName: "color", channelName: "channel"))),

_complement,

Expand Down Expand Up @@ -1510,6 +1505,12 @@ String _suggestScaleAndAdjust(
return suggestion + "color.adjust(\$color, \$$channelName: $difference)";
}

/// Asserts that `value` is an unquoted string and throws an error if it's not.
///
/// Assumes that `value` comes from a parameter named `$channel`.
String _channelName(Value value) =>
(value.assertString("channel")..assertQuoted("channel")).text.toLowerCase();

/// Like [BuiltInCallable.function], but always sets the URL to
/// `sass:color`.
BuiltInCallable _function(
Expand Down

0 comments on commit b9fb0ab

Please sign in to comment.