From 0f8238ec90cb561867e3eba3803f847e0ae3ed8a Mon Sep 17 00:00:00 2001 From: Cerdic Date: Mon, 3 Jun 2019 14:28:34 +0200 Subject: [PATCH 1/2] Unit test for supporting unicode high range chars in selector name (https://github.com/leafo/scssphp/issues/531) --- tests/inputs/selectors.scss | 10 ++++++++++ tests/outputs/selectors.css | 7 +++++++ tests/outputs_numbered/selectors.css | 7 +++++++ 3 files changed, 24 insertions(+) diff --git a/tests/inputs/selectors.scss b/tests/inputs/selectors.scss index 36ae5a2b..0b9092c2 100644 --- a/tests/inputs/selectors.scss +++ b/tests/inputs/selectors.scss @@ -287,3 +287,13 @@ ul, ol { display: block; } } + +// unicode +.👤 { + display: inline-block; +} + +.❮ { + display:inline; + content:'↦'; +} diff --git a/tests/outputs/selectors.css b/tests/outputs/selectors.css index 64d55926..66a6ab15 100644 --- a/tests/outputs/selectors.css +++ b/tests/outputs/selectors.css @@ -370,3 +370,10 @@ span a, p a, div a { ul ul, ul ol, ol ul, ol ol { display: block; } + +.👤 { + display: inline-block; } + +.❮ { + display: inline; + content: '↦'; } diff --git a/tests/outputs_numbered/selectors.css b/tests/outputs_numbered/selectors.css index d2572233..7b6a8571 100644 --- a/tests/outputs_numbered/selectors.css +++ b/tests/outputs_numbered/selectors.css @@ -407,3 +407,10 @@ span a, p a, div a { ul ul, ul ol, ol ul, ol ol { display: block; } +/* line 292, inputs/selectors.scss */ +.👤 { + display: inline-block; } +/* line 296, inputs/selectors.scss */ +.❮ { + display: inline; + content: '↦'; } From 65a799584fb1812d8d97a90a9b228ee5bbdbb206 Mon Sep 17 00:00:00 2001 From: Cerdic Date: Mon, 3 Jun 2019 12:22:31 +0200 Subject: [PATCH 2/2] Fix https://github.com/leafo/scssphp/issues/531 : In CSS, identifiers (including element names, classes, and IDs in selectors) can contain only the characters [a-zA-Z0-9] and ISO 10646 characters U+00A0 and higher, plus the hyphen (-) and the underscore (_); they cannot start with a digit, two hyphens, or a hyphen followed by a digit. Identifiers can also contain escaped characters and any ISO 10646 character as a numeric code (see next item). --- src/Parser.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Parser.php b/src/Parser.php index 076f1620..78f30475 100644 --- a/src/Parser.php +++ b/src/Parser.php @@ -2477,7 +2477,7 @@ protected function keyword(&$word, $eatWhitespace = null) { if ($this->match( $this->utf8 - ? '(([\pL\w_\-\*!"\']|[\\\\].)([\pL\w\-_"\']|[\\\\].)*)' + ? '(([\pL\w\x{00A0}-\x{10FFFF}_\-\*!"\']|[\\\\].)([\pL\w\x{00A0}-\x{10FFFF}\-_"\']|[\\\\].)*)' : '(([\w_\-\*!"\']|[\\\\].)([\w\-_"\']|[\\\\].)*)', $m, $eatWhitespace