in lib/parser.dart [2715:2743]
HexColorTerm _parseHex(String hexText, SourceSpan span) {
var hexValue = 0;
for (var i = 0; i < hexText.length; i++) {
var digit = _hexDigit(hexText.codeUnitAt(i));
if (digit < 0) {
_warning('Bad hex number', span);
return HexColorTerm(BAD_HEX_VALUE(), hexText, span);
}
hexValue = (hexValue << 4) + digit;
}
// Make 3 character hex value #RRGGBB => #RGB iff:
// high/low nibble of RR is the same, high/low nibble of GG is the same and
// high/low nibble of BB is the same.
if (hexText.length == 6 &&
hexText[0] == hexText[1] &&
hexText[2] == hexText[3] &&
hexText[4] == hexText[5]) {
hexText = '${hexText[0]}${hexText[2]}${hexText[4]}';
} else if (hexText.length == 4 &&
hexText[0] == hexText[1] &&
hexText[2] == hexText[3]) {
hexText = '${hexText[0]}${hexText[2]}';
} else if (hexText.length == 2 && hexText[0] == hexText[1]) {
hexText = '${hexText[0]}';
}
return HexColorTerm(hexValue, hexText, span);
}