Skip to content

Commit 24d529c

Browse files
authored
Merge pull request Sub6Resources#837 from windows7lake/master
Fix issue Sub6Resources#834 Inline style with "text-shadow" parse failed.
2 parents f7e5ee9 + 9d78902 commit 24d529c

File tree

1 file changed

+29
-22
lines changed

1 file changed

+29
-22
lines changed

lib/src/css_parser.dart

Lines changed: 29 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -809,33 +809,40 @@ class ExpressionMapping {
809809
previousIndex = i + 1;
810810
}
811811
for (List<css.Expression> list in valueList) {
812-
css.Expression exp = list[0];
813-
css.Expression exp2 = list[1];
814-
css.LiteralTerm? exp3 = list.length > 2 ? list[2] as css.LiteralTerm? : null;
815-
css.LiteralTerm? exp4 = list.length > 3 ? list[3] as css.LiteralTerm? : null;
812+
css.Expression? offsetX;
813+
css.Expression? offsetY;
814+
css.Expression? blurRadius;
815+
css.HexColorTerm? color;
816+
int expressionIndex = 0;
817+
list.forEach((element) {
818+
if (element is css.HexColorTerm) {
819+
color = element;
820+
} else if (expressionIndex == 0) {
821+
offsetX = element;
822+
expressionIndex++;
823+
} else if (expressionIndex++ == 1) {
824+
offsetY = element;
825+
expressionIndex++;
826+
} else {
827+
blurRadius = element;
828+
}
829+
});
816830
RegExp nonNumberRegex = RegExp(r'\s+(\d+\.\d+)\s+');
817-
if (exp is css.LiteralTerm && exp2 is css.LiteralTerm) {
818-
if (exp3 != null && ExpressionMapping.expressionToColor(exp3) != null) {
831+
if (offsetX is css.LiteralTerm && offsetY is css.LiteralTerm) {
832+
if (color != null && ExpressionMapping.expressionToColor(color) != null) {
819833
shadow.add(Shadow(
820-
color: expressionToColor(exp3)!,
821-
offset: Offset(double.tryParse(exp.text.replaceAll(nonNumberRegex, ''))!, double.tryParse(exp2.text.replaceAll(nonNumberRegex, ''))!)
834+
color: expressionToColor(color)!,
835+
offset: Offset(
836+
double.tryParse((offsetX as css.LiteralTerm).text.replaceAll(nonNumberRegex, ''))!,
837+
double.tryParse((offsetY as css.LiteralTerm).text.replaceAll(nonNumberRegex, ''))!),
838+
blurRadius: (blurRadius is css.LiteralTerm) ? double.tryParse((blurRadius as css.LiteralTerm).text.replaceAll(nonNumberRegex, ''))! : 0.0,
822839
));
823-
} else if (exp3 != null && exp3 is css.LiteralTerm) {
824-
if (exp4 != null && ExpressionMapping.expressionToColor(exp4) != null) {
825-
shadow.add(Shadow(
826-
color: expressionToColor(exp4)!,
827-
offset: Offset(double.tryParse(exp.text.replaceAll(nonNumberRegex, ''))!, double.tryParse(exp2.text.replaceAll(nonNumberRegex, ''))!),
828-
blurRadius: double.tryParse(exp3.text.replaceAll(nonNumberRegex, ''))!
829-
));
830-
} else {
831-
shadow.add(Shadow(
832-
offset: Offset(double.tryParse(exp.text.replaceAll(nonNumberRegex, ''))!, double.tryParse(exp2.text.replaceAll(nonNumberRegex, ''))!),
833-
blurRadius: double.tryParse(exp3.text.replaceAll(nonNumberRegex, ''))!
834-
));
835-
}
836840
} else {
837841
shadow.add(Shadow(
838-
offset: Offset(double.tryParse(exp.text.replaceAll(nonNumberRegex, ''))!, double.tryParse(exp2.text.replaceAll(nonNumberRegex, ''))!)
842+
offset: Offset(
843+
double.tryParse((offsetX as css.LiteralTerm).text.replaceAll(nonNumberRegex, ''))!,
844+
double.tryParse((offsetY as css.LiteralTerm).text.replaceAll(nonNumberRegex, ''))!),
845+
blurRadius: (blurRadius is css.LiteralTerm) ? double.tryParse((blurRadius as css.LiteralTerm).text.replaceAll(nonNumberRegex, ''))! : 0.0,
839846
));
840847
}
841848
}

0 commit comments

Comments
 (0)