sass4 4.0.1 → 4.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2532993143d7c789248e915c271040649e7e3c8c45f8d42ed2cf2863ce302a92
4
- data.tar.gz: 389ead2b3f1bca0cff8146ec3b3ab86c68528f06305e1f3ada7ed838d93d37c3
3
+ metadata.gz: 79095b6077df8eb4d50e07a93777f9329698826c6e1808c967e81b2287750d33
4
+ data.tar.gz: 72dc31095bad03f738348e08827e23aa99a9bef422b3862d127e605ee3e45ddb
5
5
  SHA512:
6
- metadata.gz: 7e37cc075482ea8f56e8bfd6e18f5f96cf9b9cfd83a06fa4505b570631e22eb2a4f9438ee3e86e22fbec17333138ea730f1236f57d4e93a4238d9547a25cad08
7
- data.tar.gz: e1b0176044a695d57546d2ba441c21cc18e45c5cdf0bdfa391c76124cd2682a5ae05d98c295534d9f733839b303c803bb8a128cc6026410903963a9731e3a4e7
6
+ metadata.gz: 995ef5b88bc45a6950ee82e53f3be623c0541904b660251cfacc675393f6827e95452a3c2036a01435a24adcc2b47aa37c0f5b89ad78dc741fd401e771ab1589
7
+ data.tar.gz: f60e62faa1bb3e5bc9ceca43b31fcf16c8e767fca3b10e0d005da3550821301496aef0d16082a008fadaf8c946396bd71f2d9aad8576e18c7029ea368e6ea4e5
@@ -0,0 +1,217 @@
1
+ # Тесты CSS Color Level 4 для Ruby Sass
2
+
3
+ ## Обзор
4
+
5
+ Полная поддержка синтаксиса CSS Color Level 4 согласно спецификации W3C: https://www.w3.org/TR/css-color-4/
6
+
7
+ **Файл тестов:** `test/sass/css_color_level4_test.rb`
8
+ **Всего тестов:** 40
9
+ **Статус:** ✅ Все проходят
10
+
11
+ ## Покрываемая функциональность
12
+
13
+ ### 1. Special Numbers (CSS функции)
14
+ Ruby Sass корректно обрабатывает CSS функции без попыток их вычисления:
15
+ - `var()` - CSS Custom Properties
16
+ - `calc()` - математические вычисления
17
+ - `env()` - environment variables
18
+ - `attr()` - атрибуты элементов
19
+ - `clamp()` - ограничение значений
20
+ - `min()` / `max()` - минимум/максимум
21
+
22
+ **Примеры:**
23
+ ```scss
24
+ // var() в каналах
25
+ rgb(var(--r), var(--g), var(--b))
26
+ // ✅ rgb(var(--r), var(--g), var(--b))
27
+
28
+ // calc() в альфе
29
+ rgb(255 128 0 / calc(0.5 * 2))
30
+ // ✅ rgb(255 128 0 / calc(0.5 * 2))
31
+ ```
32
+
33
+ ### 2. Space-separated синтаксис
34
+ Новый синтаксис без запятых для RGB/HSL:
35
+ ```scss
36
+ rgb(255 128 0) // ✅ #ff8000
37
+ hsl(180 50% 50%) // ✅ #40bfbf
38
+ ```
39
+
40
+ ### 3. Slash-separated альфа
41
+ Альфа-канал через `/` вместо запятой:
42
+ ```scss
43
+ rgb(255 128 0 / 0.5) // ✅ rgba(255,128,0,0.5)
44
+ hsl(180 50% 50% / 0.8) // ✅ rgba(64,191,191,0.8)
45
+ ```
46
+
47
+ ### 4. Проценты в RGB каналах
48
+ RGB каналы могут быть указаны в процентах (0%-100%):
49
+ ```scss
50
+ rgb(100% 0% 0%) // ✅ red (#ff0000)
51
+ rgb(50% 25% 75%) // ✅ #7f3fbf
52
+ rgb(100% 50% 0%) // ✅ #ff7f00
53
+ ```
54
+
55
+ **Конвертация:**
56
+ - `0%` → `0`
57
+ - `100%` → `255`
58
+ - `50%` → `127.5` → округление до `127`
59
+
60
+ ### 5. Проценты в альфа-канале
61
+ Альфа-канал поддерживает проценты (0%-100%):
62
+ ```scss
63
+ // Новый синтаксис
64
+ rgb(100% 0% 0% / 50%) // ✅ rgba(255,0,0,0.5)
65
+ rgb(255 128 0 / 50%) // ✅ rgba(255,128,0,0.5)
66
+
67
+ // Legacy синтаксис
68
+ rgba(255, 128, 0, 80%) // ✅ rgba(255,128,0,0.8)
69
+
70
+ // HSL
71
+ hsl(180 50% 50% / 75%) // ✅ rgba(64,191,191,0.75)
72
+ ```
73
+
74
+ **Конвертация:**
75
+ - `0%` → `0` (полностью прозрачный)
76
+ - `100%` → `1` (полностью непрозрачный)
77
+ - `50%` → `0.5`
78
+
79
+ ### 6. Комбинации процентов и CSS функций
80
+ ```scss
81
+ // Проценты в каналах + var() в альфе
82
+ rgb(100% 0% 0% / var(--alpha))
83
+ // ✅ rgb(100% 0% 0% / var(--alpha))
84
+
85
+ // Проценты в каналах + calc() в альфе
86
+ rgb(100% 50% 0% / calc(50% + 25%))
87
+ // ✅ rgb(100% 50% 0% / calc(50% + 25%))
88
+ ```
89
+
90
+ ### 7. Обратная совместимость
91
+ Все старые форматы продолжают работать:
92
+ ```scss
93
+ rgb(255, 128, 0) // ✅ #ff8000
94
+ rgba(255, 128, 0, 0.5) // ✅ rgba(255,128,0,0.5)
95
+ hsl(180, 50%, 50%) // ✅ #40bfbf
96
+ hsla(180, 50%, 50%, 0.8) // ✅ rgba(64,191,191,0.8)
97
+ ```
98
+
99
+ ## Структура тестов
100
+
101
+ ### RGB тесты (13 тестов)
102
+ - `test_rgb_with_var` - var() в каналах
103
+ - `test_rgb_with_calc` - calc() в каналах
104
+ - `test_rgb_with_env` - env() в каналах
105
+ - `test_rgb_with_clamp` - clamp() в каналах
106
+ - `test_rgb_with_min_max` - min()/max() в каналах
107
+ - `test_rgb_new_syntax_with_var_alpha` - var() в альфе (новый синтаксис)
108
+ - `test_rgb_new_syntax_with_calc_alpha` - calc() в альфе (новый синтаксис)
109
+ - `test_rgb_new_syntax_mixed_special_numbers` - смешанные CSS функции
110
+ - `test_rgb_new_syntax_without_special_numbers` - новый синтаксис без CSS функций
111
+ - `test_rgb_new_syntax_with_alpha_without_special_numbers` - новый синтаксис с альфой
112
+ - `test_rgb_with_percentage_channels` - проценты в каналах
113
+ - `test_rgb_with_percentage_channels_and_alpha` - проценты в каналах и альфе
114
+ - `test_rgb_with_mixed_percentage_and_number` - числа в каналах, проценты в альфе
115
+
116
+ ### RGBA тесты (6 тестов)
117
+ - `test_rgba_with_var_all_channels` - var() во всех каналах
118
+ - `test_rgba_with_calc_alpha` - calc() в альфе
119
+ - `test_rgba_with_color_and_var_alpha` - Sass переменная + var() альфа
120
+ - `test_rgba_new_syntax_with_special_alpha` - новый синтаксис с CSS функцией в альфе
121
+ - `test_rgba_with_percentage_alpha` - процент в альфе (legacy синтаксис)
122
+ - `test_rgba_legacy_syntax_percentage_alpha` - legacy синтаксис с процентной альфой
123
+
124
+ ### HSL тесты (4 теста)
125
+ - `test_hsl_with_var` - var() в hue
126
+ - `test_hsl_with_calc` - calc() в hue
127
+ - `test_hsl_new_syntax_with_var` - новый синтаксис с var()
128
+ - `test_hsl_new_syntax_with_calc_alpha` - новый синтаксис с calc() в альфе
129
+
130
+ ### HSLA тесты (3 теста)
131
+ - `test_hsla_with_var_alpha` - var() в альфе
132
+ - `test_hsla_with_env` - env() в hue
133
+ - `test_hsla_new_syntax_with_special_alpha` - новый синтаксис с CSS функцией в альфе
134
+
135
+ ### Процентные тесты (11 тестов)
136
+ - `test_rgb_with_percentage_channels` - 100% каналы
137
+ - `test_rgb_with_percentage_channels_and_alpha` - проценты + процентная альфа
138
+ - `test_rgb_with_mixed_percentage_and_number` - смешанные числа и проценты
139
+ - `test_rgb_with_percentage_channels_various_values` - различные значения процентов
140
+ - `test_rgba_with_percentage_alpha` - процентная альфа в rgba()
141
+ - `test_rgb_new_syntax_percentage_with_zero_alpha` - 0% альфа
142
+ - `test_rgb_new_syntax_percentage_with_full_alpha` - 100% альфа
143
+ - `test_hsl_with_percentage_alpha` - процентная альфа в hsl()
144
+ - `test_rgb_percentage_with_var_in_alpha` - проценты + var() в альфе
145
+ - `test_rgb_percentage_with_calc_in_alpha` - проценты + calc() в альфе
146
+ - `test_rgba_legacy_syntax_percentage_alpha` - legacy синтаксис с процентной альфой
147
+
148
+ ### Тесты обратной совместимости (4 теста)
149
+ - `test_normal_rgb_still_works` - обычный rgb()
150
+ - `test_normal_rgba_still_works` - обычный rgba()
151
+ - `test_normal_hsl_still_works` - обычный hsl()
152
+ - `test_normal_hsla_still_works` - обычный hsla()
153
+
154
+ ### Смешанные тесты (2 теста)
155
+ - `test_multiple_special_functions_in_one_rule` - несколько CSS функций в одном правиле
156
+ - `test_sass_variables_with_special_numbers` - Sass переменные + CSS функции
157
+
158
+ ## Запуск тестов
159
+
160
+ ```bash
161
+ # Запуск всех тестов CSS Color Level 4
162
+ ruby test/sass/css_color_level4_test.rb
163
+
164
+ # Ожидаемый результат:
165
+ # Запуск тестов CSS Color Level 4...
166
+ # ======================================================================
167
+ # [40 тестов с ✅]
168
+ # ======================================================================
169
+ # Результаты: 40 прошли, 0 провалились из 40 тестов
170
+ # ======================================================================
171
+ ```
172
+
173
+ ## Особенности реализации
174
+
175
+ ### Округление процентов
176
+ Ruby Sass использует стандартное округление для процентов:
177
+ - `50%` → `127.5` → `127` (округление вниз)
178
+ - `25%` → `63.75` → `63` (округление вниз)
179
+ - `75%` → `191.25` → `191` (округление вниз)
180
+
181
+ ### Обработка CSS функций
182
+ CSS функции (`var()`, `calc()`, etc.) не вычисляются Sass и передаются в CSS как есть:
183
+ ```scss
184
+ rgb(var(--r), var(--g), var(--b))
185
+ // Не вычисляется, передается как:
186
+ rgb(var(--r), var(--g), var(--b))
187
+ ```
188
+
189
+ ### Оптимизация вывода
190
+ Ruby Sass оптимизирует цвета где возможно:
191
+ ```scss
192
+ rgb(255, 0, 0) → red
193
+ rgb(100% 0% 0%) → red
194
+ rgb(255 0 0) → #ff0000
195
+ rgb(255 0 0 / 100%) → #ff0000 // 100% alpha = полностью непрозрачный
196
+ ```
197
+
198
+ ## Ссылки
199
+
200
+ - **Спецификация CSS Color Level 4:** https://www.w3.org/TR/css-color-4/
201
+ - **Файл тестов:** `test/sass/css_color_level4_test.rb`
202
+ - **Основная документация:** `AGENTS.md`
203
+
204
+ ## История изменений
205
+
206
+ ### Версия 4.0.1+ (текущая)
207
+ - ✅ Добавлена поддержка процентов в RGB каналах
208
+ - ✅ Добавлена поддержка процентов в альфа-канале
209
+ - ✅ 11 новых тестов для процентов
210
+ - ✅ Полное соответствие спецификации CSS Color Level 4 раздел 4.2
211
+
212
+ ### Версия 4.0.0
213
+ - ✅ Добавлена поддержка CSS special numbers (var, calc, env, etc.)
214
+ - ✅ Добавлен новый space-separated синтаксис
215
+ - ✅ Добавлен slash-separated синтаксис для альфы
216
+ - ✅ 29 тестов для новых возможностей
217
+
data/REVISION ADDED
@@ -0,0 +1 @@
1
+ 1ec7a3cb1fa5f0eb945c75747244bc3fd25417a2
data/VERSION CHANGED
@@ -1 +1 @@
1
- 4.0.1
1
+ 4.0.2
data/VERSION_DATE ADDED
@@ -0,0 +1 @@
1
+ 01 April 2026 12:46:06 UTC
@@ -67,7 +67,7 @@ module Sass
67
67
  sseq_or_op.resolve_parent_refs(super_cseq).members
68
68
  end).map do |path|
69
69
  path_members = path.map do |seq_or_op|
70
- next seq_or_op unless seq_or_op.is_a?(Sequence)
70
+ next Array(seq_or_op) unless seq_or_op.is_a?(Sequence)
71
71
  seq_or_op.members
72
72
  end
73
73
  if path_members.length == 2 && path_members[1][0] == "\n"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sass4
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.1
4
+ version: 4.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Natalie Weizenbaum
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2025-10-18 00:00:00.000000000 Z
14
+ date: 2026-04-01 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: sass-listen
@@ -103,9 +103,12 @@ files:
103
103
  - AGENTS.md
104
104
  - CODE_OF_CONDUCT.md
105
105
  - CONTRIBUTING.md
106
+ - CSS_COLOR_LEVEL4_TESTS.md
106
107
  - MIT-LICENSE
107
108
  - README.md
109
+ - REVISION
108
110
  - VERSION
111
+ - VERSION_DATE
109
112
  - VERSION_NAME
110
113
  - bin/sass
111
114
  - bin/sass-convert