Repository: stylelint-scss/stylelint-scss (js)

Issue:
False positive scss/operator-no-unspaced  Expected single space after "-"
Input:

```
@mixin test {
  @for $i from 0 through 10 {
    &:nth-child(#{$i + 1}) {
      top: #{$i * -10}px;
      transform: scale(#{(10 - $i) * 0.1}) !important;
    }
  }
}
```
Require:

```
@mixin test {
  @for $i from 0 through 10 {
    &:nth-child(#{$i + 1}) {
      top: #{$i * - 10}px;
      transform: scale(#{(10 - $i) * 0.1}) !important;
    }
  }
}
```
Expected (no errors):

```
@mixin test {
  @for $i from 0 through 10 {
    &:nth-child(#{$i + 1}) {
      top: #{$i * -10}px;
      transform: scale(#{(10 - $i) * 0.1}) !important;
    }
  }
}
```

Pull request description:
operator-no-unspaced: don't check operators from data URIs
Fixes #561

Patch:
diff --git a/src/rules/operator-no-unspaced/index.js b/src/rules/operator-no-unspaced/index.js
index 397fcda..b33e6fe 100644
--- a/src/rules/operator-no-unspaced/index.js
+++ b/src/rules/operator-no-unspaced/index.js
@@ -147,6 +147,8 @@ export function calculationOperatorSpaceChecker({ root, result, checker }) {
     return results;
   }
 
+  const dataURIRegex = /^url\(\s*['"]?data:.+;base64,.+['"]?\s*\)$/;
+
   root.walk(item => {
     if (item.prop === "unicode-range") {
       return;
@@ -156,6 +158,9 @@ export function calculationOperatorSpaceChecker({ root, result, checker }) {
 
     // Check a value (`10px` in `width: 10px;`)
     if (item.value !== undefined) {
+      if (dataURIRegex.test(item.value)) {
+        return results;
+      }
       results.push({
         source: item.value,
         operators: findOperators({


Test patch:
diff --git a/src/rules/operator-no-unspaced/__tests__/index.js b/src/rules/operator-no-unspaced/__tests__/index.js
index 00a936d..8ce616a 100644
--- a/src/rules/operator-no-unspaced/__tests__/index.js
+++ b/src/rules/operator-no-unspaced/__tests__/index.js
@@ -75,6 +75,10 @@ testRule({
       div { background-image: url(https://99-0a.x.y.rackcdn.com/z.jpg); }
       `,
       description: "Op +: background-image with url that has a hyphen"
+    },
+    {
+      code: `div { background: url(data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0Ljk1IDEwIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6I2ZmZjt9LmNscy0ye2ZpbGw6IzQ0NDt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPmFycm93czwvdGl0bGU+PHJlY3QgY2xhc3M9ImNscy0xIiB3aWR0aD0iNC45NSIgaGVpZ2h0PSIxMCIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMiIgcG9pbnRzPSIxLjQxIDQuNjcgMi40OCAzLjE4IDMuNTQgNC42NyAxLjQxIDQuNjciLz48cG9seWdvbiBjbGFzcz0iY2xzLTIiIHBvaW50cz0iMy41NCA1LjMzIDIuNDggNi44MiAxLjQxIDUuMzMgMy41NCA1LjMzIi8+PC9zdmc+) }`,
+      description: "background image with base64 data, issue #561"
     }
   ],