From ed5f68844fc73bd46d7968afcb42f363321a87fd Mon Sep 17 00:00:00 2001 From: Evilebot Tnawi Date: Tue, 30 Jan 2018 17:53:37 +0300 Subject: [PATCH] fix(css): scss `global` flag (#3844) --- src/language-css/parser-postcss.js | 6 ++++++ src/language-css/printer-postcss.js | 1 + tests/css_scss/__snapshots__/jsfmt.spec.js.snap | 16 ++++++++++++++++ tests/css_scss/scss.css | 9 +++++++++ 4 files changed, 32 insertions(+) diff --git a/src/language-css/parser-postcss.js b/src/language-css/parser-postcss.js index 819b2e1f..4e63cf8a 100644 --- a/src/language-css/parser-postcss.js +++ b/src/language-css/parser-postcss.js @@ -163,6 +163,7 @@ function parseMediaQuery(value) { } const DEFAULT_SCSS_DIRECTIVE = "!default"; +const GLOBAL_SCSS_DIRECTIVE = "!global"; function parseNestedCSS(node) { if (node && typeof node === "object") { @@ -205,6 +206,11 @@ function parseNestedCSS(node) { node.value = node.value.slice(0, -DEFAULT_SCSS_DIRECTIVE.length); } + if (node.value.endsWith(GLOBAL_SCSS_DIRECTIVE)) { + node.global = true; + node.value = node.value.slice(0, -GLOBAL_SCSS_DIRECTIVE.length); + } + node.value = parseValue(node.value); } catch (e) { throw createError( diff --git a/src/language-css/printer-postcss.js b/src/language-css/printer-postcss.js index d4686d54..b8e82225 100644 --- a/src/language-css/printer-postcss.js +++ b/src/language-css/printer-postcss.js @@ -108,6 +108,7 @@ function genericPrint(path, options, print) { : path.call(print, "value"), n.important ? " !important" : "", n.default ? " !default" : "", + n.global ? " !global" : "", n.nodes ? concat([ " {", diff --git a/tests/css_scss/__snapshots__/jsfmt.spec.js.snap b/tests/css_scss/__snapshots__/jsfmt.spec.js.snap index 55a1dd53..92b02865 100644 --- a/tests/css_scss/__snapshots__/jsfmt.spec.js.snap +++ b/tests/css_scss/__snapshots__/jsfmt.spec.js.snap @@ -28,6 +28,15 @@ $default: "very-long-long-long-long-long-long-long-long-long-long-long-value" $default: "very-long-long-long-long-long-long-long-long-long-long-long-value" !default; +$global: #111111 !global; +$global: #111111 !global; +$global: #111111 +!global; +$global: "very-long-long-long-long-long-long-long-long-long-long-long-value" !global; +$global: "very-long-long-long-long-long-long-long-long-long-long-long-value" !global; +$global: "very-long-long-long-long-long-long-long-long-long-long-long-value" +!global; + $map: (key: value, other-key: other-value); $map: (key: value, other-key: other-value) !default; $map: (key: value, other-key: other-value) !default; @@ -467,6 +476,13 @@ $default: "very-long-long-long-long-long-long-long-long-long-long-long-value" !d $default: "very-long-long-long-long-long-long-long-long-long-long-long-value" !default; $default: "very-long-long-long-long-long-long-long-long-long-long-long-value" !default; +$global: #111111 !global; +$global: #111111 !global; +$global: #111111 !global; +$global: "very-long-long-long-long-long-long-long-long-long-long-long-value" !global; +$global: "very-long-long-long-long-long-long-long-long-long-long-long-value" !global; +$global: "very-long-long-long-long-long-long-long-long-long-long-long-value" !global; + $map: ( key: value, other-key: other-value diff --git a/tests/css_scss/scss.css b/tests/css_scss/scss.css index 417d5c01..175fc36f 100644 --- a/tests/css_scss/scss.css +++ b/tests/css_scss/scss.css @@ -18,6 +18,15 @@ $default: "very-long-long-long-long-long-long-long-long-long-long-long-value" $default: "very-long-long-long-long-long-long-long-long-long-long-long-value" !default; +$global: #111111 !global; +$global: #111111 !global; +$global: #111111 +!global; +$global: "very-long-long-long-long-long-long-long-long-long-long-long-value" !global; +$global: "very-long-long-long-long-long-long-long-long-long-long-long-value" !global; +$global: "very-long-long-long-long-long-long-long-long-long-long-long-value" +!global; + $map: (key: value, other-key: other-value); $map: (key: value, other-key: other-value) !default; $map: (key: value, other-key: other-value) !default;