Kronuz/pyScss

Exception: No color stops provided to linear-gradient function

lvsoft opened this issue · 0 comments

I got an issue while compiling MDL's SCSS files. I traced the code which seems to be a bug of pyScss in parsing color string as String object.

Here's the minimum SCSS which can trigger this issue:

$color-white: "255,255,255";
$progress-secondary-color: unquote("rgba(#{$color-white}, 0.4)");
$progress-main-color: "128,128,128";

@supports (-webkit-appearance:none) {
  .mdl-progress:not(.mdl-progress--indeterminate):not(.mdl-progress--indeterminate) > .auxbar,
  .mdl-progress:not(.mdl-progress__indeterminate):not(.mdl-progress__indeterminate) > .auxbar {
    background-image: linear-gradient(to right, $progress-secondary-color, $progress-secondary-color),
      linear-gradient(to right, $progress-main-color, $progress-main-color);
  }
}
$ python -m scss < test.scss
Traceback (most recent call last):
 ... ...
  File "/usr/lib/python2.7/dist-packages/scss/extension/compass/gradients.py", line 316, in linear_gradient
    raise Exception('No color stops provided to linear-gradient function')
scss.errors.SassEvaluationError: Error evaluating expression:
    linear-gradient(to right, $progress-secondary-color, $progress-secondary-color),
    linear-gradient(to right, $progress-main-color, $progress-main-color)

on line 7 of /home/lv/scss/<stdin>
Traceback:
  File "/usr/lib/python2.7/dist-packages/scss/calculator.py", line 141, in evaluate_expression
    return ast.evaluate(self, divide=divide)
  File "/usr/lib/python2.7/dist-packages/scss/ast.py", line 373, in evaluate
    items = [item.evaluate(calculator, divide=divide) for item in self.items]
  File "/usr/lib/python2.7/dist-packages/scss/ast.py", line 230, in evaluate
    ret = funct(*args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/scss/extension/compass/gradients.py", line 316, in linear_gradient
    raise Exception('No color stops provided to linear-gradient function')
Exception: No color stops provided to linear-gradient function

Expected result:

@supports (-webkit-appearance: none) {
	.mdl-progress:not(.mdl-progress--indeterminate):not(.mdl-progress--indeterminate) > .auxbar,
  .mdl-progress:not(.mdl-progress__indeterminate):not(.mdl-progress__indeterminate) > .auxbar {
		background-image: linear-gradient(to right, rgba(255,255,255, 0.4), rgba(255,255,255, 0.4)), linear-gradient(to right, "128,128,128", "128,128,128");
	}
}