@omnisass/library 0.4.0 → 0.5.0
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.
- package/README.en.md +99 -0
- package/README.md +2 -0
- package/_configs.scss +1 -1
- package/index.scss +11 -5
- package/modules/utilities/getters/map/_get-map-item.scss +159 -0
- package/modules/utilities/helpers/list/_list-sum-numbers-safe.scss +4 -3
- package/modules/utilities/helpers/list/_list-sum-numbers.scss +4 -3
- package/modules/utilities/helpers/map/_map-remove-keys.scss +153 -0
- package/modules/utilities/helpers/misc/_url-encode.scss +5 -4
- package/modules/utilities/helpers/number/_number-ceil-to.scss +5 -3
- package/modules/utilities/helpers/number/_number-clamp-max.scss +5 -3
- package/modules/utilities/helpers/number/_number-clamp-min.scss +5 -3
- package/modules/utilities/helpers/number/_number-clamp.scss +6 -3
- package/modules/utilities/helpers/number/_number-denormalize.scss +6 -3
- package/modules/utilities/helpers/number/_number-fibonacci.scss +4 -3
- package/modules/utilities/helpers/number/_number-floor-to.scss +5 -3
- package/modules/utilities/helpers/number/_number-format-with-separator.scss +5 -4
- package/modules/utilities/helpers/number/_number-normalize.scss +6 -3
- package/modules/utilities/helpers/number/_number-random-between-int.scss +5 -3
- package/modules/utilities/helpers/number/_number-random-between.scss +5 -3
- package/modules/utilities/helpers/number/_number-range.scss +6 -3
- package/modules/utilities/helpers/number/_number-round-to-nearest.scss +5 -3
- package/modules/utilities/helpers/number/_number-round-to.scss +5 -3
- package/modules/utilities/helpers/number/_number-strip-unit.scss +4 -3
- package/modules/utilities/helpers/string/_string-capitalize.scss +4 -3
- package/modules/utilities/helpers/string/_string-lorips.config.scss +0 -2
- package/modules/utilities/helpers/string/_string-replace.scss +6 -3
- package/modules/utilities/helpers/string/_string-trim-end.scss +4 -3
- package/modules/utilities/helpers/string/_string-trim-start.scss +4 -3
- package/modules/utilities/helpers/string/_string-trim.scss +4 -3
- package/modules/utilities/loggers/_log.scss +219 -0
- package/modules/utilities/setters/map/_set-map-item.scss +243 -0
- package/modules/utilities/validators/color/_is-color-light.scss +5 -4
- package/modules/utilities/validators/color/_is-color-list.scss +4 -3
- package/modules/utilities/validators/list/_is-list-contained.scss +5 -4
- package/modules/utilities/validators/number/_is-int-even.scss +4 -3
- package/modules/utilities/validators/number/_is-int-odd.scss +4 -3
- package/modules/utilities/validators/number/_is-int.scss +5 -3
- package/modules/utilities/validators/number/_is-number-has-unit.scss +4 -3
- package/modules/utilities/validators/number/_is-number-negative.scss +4 -3
- package/modules/utilities/validators/number/_is-number-positive.scss +4 -3
- package/modules/utilities/validators/number/_is-number-unitless.scss +4 -3
- package/modules/utilities/validators/number/_is-number-zero.scss +4 -3
- package/modules/utilities/validators/string/_is-string-contained.scss +5 -3
- package/modules/utilities/validators/string/_is-string-empty.scss +4 -3
- package/modules/utilities/validators/string/_is-string-ending-with.scss +5 -3
- package/modules/utilities/validators/string/_is-string-starting-with.scss +5 -3
- package/modules/utilities/validators/type-of/_is-color.scss +0 -4
- package/package.json +25 -16
- package/package.scss +12 -2
- package/CHANGELOG.md +0 -122
- package/test2.sh +0 -158
|
@@ -218,9 +218,10 @@
|
|
|
218
218
|
/// - Второй элемент: всегда 1 (если `$n > 1`)
|
|
219
219
|
/// - Каждый последующий элемент: сумма двух предыдущих
|
|
220
220
|
/// - Все элементы: целые положительные числа
|
|
221
|
-
/// @throws {Error} - Выбрасывает ошибку, если в
|
|
222
|
-
/// значение, не соответствующее
|
|
223
|
-
///
|
|
221
|
+
/// @throws {Error} - Выбрасывает ошибку, если в параметр передано
|
|
222
|
+
/// значение, не соответствующее необходимому типу:
|
|
223
|
+
///
|
|
224
|
+
/// - `$n` → `number`
|
|
224
225
|
@function number-fibonacci($n) {
|
|
225
226
|
|
|
226
227
|
// Проверка типа входного параметра: ожидается числовое значение.
|
|
@@ -110,9 +110,11 @@
|
|
|
110
110
|
/// измерения исходного числа `$value`.
|
|
111
111
|
/// @throws {Error} - Может выбросить ошибку если происходит
|
|
112
112
|
/// деление на ноль.
|
|
113
|
-
/// @throws {Error} - Выбрасывает ошибку, если в
|
|
114
|
-
/// значение, не соответствующее
|
|
115
|
-
///
|
|
113
|
+
/// @throws {Error} - Выбрасывает ошибку, если в параметр передано
|
|
114
|
+
/// значение, не соответствующее необходимому типу:
|
|
115
|
+
///
|
|
116
|
+
/// - `$value` → `number`
|
|
117
|
+
/// - `$nearest` → `number`
|
|
116
118
|
@function number-floor-to($value, $nearest) {
|
|
117
119
|
|
|
118
120
|
// Проверка типа первого параметра: ожидается числовое значение.
|
|
@@ -96,10 +96,11 @@
|
|
|
96
96
|
/// часть исходного числа игнорируется.
|
|
97
97
|
/// @throws {Error} - Может выбросить ошибку если `$value`
|
|
98
98
|
/// не является числом или если `$separator` не является строкой.
|
|
99
|
-
/// @throws {Error} - Выбрасывает ошибку, если в
|
|
100
|
-
/// значение, не соответствующее
|
|
101
|
-
///
|
|
102
|
-
///
|
|
99
|
+
/// @throws {Error} - Выбрасывает ошибку, если в параметр передано
|
|
100
|
+
/// значение, не соответствующее необходимому типу:
|
|
101
|
+
///
|
|
102
|
+
/// - `$value` → `number`
|
|
103
|
+
/// - `$separator` → `string`
|
|
103
104
|
@function number-format-with-separator($value, $separator: ",") {
|
|
104
105
|
|
|
105
106
|
// Проверка типа первого параметра: ожидается числовое значение.
|
|
@@ -157,9 +157,12 @@
|
|
|
157
157
|
/// @throws {Error} - Может выбросить ошибку деления на ноль, если
|
|
158
158
|
/// `$value-min == $value-max`. В этом случае знаменатель формулы становится
|
|
159
159
|
/// нулем, что приводит к математической неопределенности.
|
|
160
|
-
/// @throws {Error} - Выбрасывает ошибку, если в
|
|
161
|
-
/// значение, не соответствующее
|
|
162
|
-
///
|
|
160
|
+
/// @throws {Error} - Выбрасывает ошибку, если в параметр передано
|
|
161
|
+
/// значение, не соответствующее необходимому типу:
|
|
162
|
+
///
|
|
163
|
+
/// - `$value` → `number`
|
|
164
|
+
/// - `$value-min` → `number`
|
|
165
|
+
/// - `$value-max` → `number`
|
|
163
166
|
@function number-normalize($value, $value-min, $value-max) {
|
|
164
167
|
|
|
165
168
|
// Проверка типа первого параметра: ожидается числовое значение.
|
|
@@ -78,9 +78,11 @@
|
|
|
78
78
|
/// Должно быть больше или равно `$value-min` для корректных результатов.
|
|
79
79
|
/// @return {Number} - Случайное целое число в диапазоне [`$value-min`, `$value-max`].
|
|
80
80
|
/// Всегда возвращает целое число без единиц измерения.
|
|
81
|
-
/// @throws {Error} - Выбрасывает ошибку, если в
|
|
82
|
-
/// значение, не соответствующее
|
|
83
|
-
///
|
|
81
|
+
/// @throws {Error} - Выбрасывает ошибку, если в параметр передано
|
|
82
|
+
/// значение, не соответствующее необходимому типу:
|
|
83
|
+
///
|
|
84
|
+
/// - `$value-min` → `number`
|
|
85
|
+
/// - `$value-max` → `number`
|
|
84
86
|
/// @throws {Warning} - При `$value-max < $value-min` результат
|
|
85
87
|
/// может быть неожиданным.
|
|
86
88
|
@function number-random-between-int($value-min, $value-max) {
|
|
@@ -117,9 +117,11 @@
|
|
|
117
117
|
/// быть неожиданным (возможны отрицательные значения длины
|
|
118
118
|
/// диапазона). Рекомендуется всегда передавать
|
|
119
119
|
/// `$value-min ≤ $value-max`.
|
|
120
|
-
/// @throws {Error} - Выбрасывает ошибку, если в
|
|
121
|
-
/// значение, не соответствующее
|
|
122
|
-
///
|
|
120
|
+
/// @throws {Error} - Выбрасывает ошибку, если в параметр передано
|
|
121
|
+
/// значение, не соответствующее необходимому типу:
|
|
122
|
+
///
|
|
123
|
+
/// - `$value-min` → `number`
|
|
124
|
+
/// - `$value-max` → `number`
|
|
123
125
|
@function number-random-between($value-min, $value-max) {
|
|
124
126
|
|
|
125
127
|
// Проверка типа первого параметра: ожидается числовое значение
|
|
@@ -244,9 +244,12 @@
|
|
|
244
244
|
/// - Последний элемент: ближайшее к `$end` значение, кратное шагу
|
|
245
245
|
/// - Все элементы: равномерно распределены с шагом `$step`
|
|
246
246
|
/// - Направление: соответствует соотношению `$start` и `$end`
|
|
247
|
-
/// @throws {Error} - Выбрасывает ошибку, если в
|
|
248
|
-
/// значение, не соответствующее
|
|
249
|
-
///
|
|
247
|
+
/// @throws {Error} - Выбрасывает ошибку, если в параметр передано
|
|
248
|
+
/// значение, не соответствующее необходимому типу:
|
|
249
|
+
///
|
|
250
|
+
/// - `$from` → `number`
|
|
251
|
+
/// - `$to` → `number`
|
|
252
|
+
/// - `$step` → `number`
|
|
250
253
|
@function number-range($from, $to, $step: 1) {
|
|
251
254
|
|
|
252
255
|
// Проверка типа первого параметра: ожидается числовое значение
|
|
@@ -128,9 +128,11 @@
|
|
|
128
128
|
/// @throws {Error} - Может выбросить ошибку если `$value` или
|
|
129
129
|
/// `$nearest` не являются числами, или если происходит
|
|
130
130
|
/// деление на ноль.
|
|
131
|
-
/// @throws {Error} - Выбрасывает ошибку, если в
|
|
132
|
-
/// значение, не соответствующее
|
|
133
|
-
///
|
|
131
|
+
/// @throws {Error} - Выбрасывает ошибку, если в параметр передано
|
|
132
|
+
/// значение, не соответствующее необходимому типу:
|
|
133
|
+
///
|
|
134
|
+
/// - `$value` → `number`
|
|
135
|
+
/// - `$nearest` → `number`
|
|
134
136
|
@function number-round-to-nearest($value, $nearest) {
|
|
135
137
|
|
|
136
138
|
// Проверка типа первого параметра: ожидается числовое значение.
|
|
@@ -111,9 +111,11 @@
|
|
|
111
111
|
/// @throws {Error} - Может выбросить ошибку если `$precision`
|
|
112
112
|
/// не является целым неотрицательным числом или если
|
|
113
113
|
/// `$value` не является числом.
|
|
114
|
-
/// @throws {Error} - Выбрасывает ошибку, если в
|
|
115
|
-
/// значение, не соответствующее
|
|
116
|
-
///
|
|
114
|
+
/// @throws {Error} - Выбрасывает ошибку, если в параметр передано
|
|
115
|
+
/// значение, не соответствующее необходимому типу:
|
|
116
|
+
///
|
|
117
|
+
/// - `$value` → `number`
|
|
118
|
+
/// - `$precision` → `number`
|
|
117
119
|
@function number-round-to($value, $precision: 2) {
|
|
118
120
|
|
|
119
121
|
// Проверка типа первого параметра: ожидается числовое значение.
|
|
@@ -79,9 +79,10 @@
|
|
|
79
79
|
/// @return {Number} - Безразмерное числовое значение, равное
|
|
80
80
|
/// числовой части входного значения. Если входное значение
|
|
81
81
|
/// уже было безразмерным, возвращается то же самое значение.
|
|
82
|
-
/// @throws {Error} - Выбрасывает ошибку, если в
|
|
83
|
-
/// значение, не соответствующее
|
|
84
|
-
///
|
|
82
|
+
/// @throws {Error} - Выбрасывает ошибку, если в параметр передано
|
|
83
|
+
/// значение, не соответствующее необходимому типу:
|
|
84
|
+
///
|
|
85
|
+
/// - `$value` → `number`
|
|
85
86
|
@function number-strip-unit($value) {
|
|
86
87
|
|
|
87
88
|
// Проверка типа входного параметра: ожидается числовое значение.
|
|
@@ -74,9 +74,10 @@
|
|
|
74
74
|
/// первый символ преобразован в верхний регистр, а все
|
|
75
75
|
/// остальные символы остаются без изменений. Для пустой
|
|
76
76
|
/// строки возвращает пустую строку.
|
|
77
|
-
/// @throws {Error} - Выбрасывает ошибку, если в
|
|
78
|
-
/// значение, не соответствующее
|
|
79
|
-
///
|
|
77
|
+
/// @throws {Error} - Выбрасывает ошибку, если в параметр передано
|
|
78
|
+
/// значение, не соответствующее необходимому типу:
|
|
79
|
+
///
|
|
80
|
+
/// - `$string` → `string`
|
|
80
81
|
@function string-capitalize($string) {
|
|
81
82
|
|
|
82
83
|
// Проверка типа входного параметра: ожидается строковое значение.
|
|
@@ -39,8 +39,6 @@
|
|
|
39
39
|
/// @link https://loremipsum.io/generator/ См. также: Lorem Ipsum - Генератор с настройками
|
|
40
40
|
/// @link https://www.lipsum.com/feed/html См. также: Lipsum.com - Генератор HTML Lorem Ipsum
|
|
41
41
|
/// @link https://github.com/sass/sass/issues/2871 См. также: GitHub - Обсуждение текстовых утилит в Sass
|
|
42
|
-
/// @see string-lorips - Функция для генерации текста-
|
|
43
|
-
/// заполнителя на основе этого набора слов.
|
|
44
42
|
/// @type List
|
|
45
43
|
$set-lorem-ipsum-words: "lorem"
|
|
46
44
|
"ipsum"
|
|
@@ -58,9 +58,12 @@
|
|
|
58
58
|
/// `$replaceable` не найдена, возвращается оригинальная строка.
|
|
59
59
|
/// @throws {Error} - Может вызвать ошибку глубины рекурсии при очень
|
|
60
60
|
/// длинных строках с множественными заменами.
|
|
61
|
-
/// @throws {Error} - Выбрасывает ошибку, если в
|
|
62
|
-
/// значение, не соответствующее
|
|
63
|
-
///
|
|
61
|
+
/// @throws {Error} - Выбрасывает ошибку, если в параметр передано
|
|
62
|
+
/// значение, не соответствующее необходимому типу:
|
|
63
|
+
///
|
|
64
|
+
/// - `$string` → `string`
|
|
65
|
+
/// - `$replaceable` → `string`
|
|
66
|
+
/// - `$replacement` → `string`
|
|
64
67
|
@function string-replace($string, $replaceable, $replacement: '') {
|
|
65
68
|
|
|
66
69
|
// Проверка типа первого параметра: ожидается исходная строка.
|
|
@@ -50,9 +50,10 @@
|
|
|
50
50
|
/// @return {String} - Возвращает новую строку, в которой удалены
|
|
51
51
|
/// все пробелы с конца оригинальной строки.
|
|
52
52
|
/// Если строка состоит только из пробелов, возвращается пустая строка.
|
|
53
|
-
/// @throws {Error} - Выбрасывает ошибку, если в
|
|
54
|
-
/// значение, не соответствующее
|
|
55
|
-
///
|
|
53
|
+
/// @throws {Error} - Выбрасывает ошибку, если в параметр передано
|
|
54
|
+
/// значение, не соответствующее необходимому типу:
|
|
55
|
+
///
|
|
56
|
+
/// - `$string` → `string`
|
|
56
57
|
@function string-trim-end($string) {
|
|
57
58
|
|
|
58
59
|
// Проверка типа входного параметра: ожидается строковое значение.
|
|
@@ -50,9 +50,10 @@
|
|
|
50
50
|
/// @return {String} - Возвращает новую строку, в которой удалены
|
|
51
51
|
/// все пробелы с начала оригинальной строки.
|
|
52
52
|
/// Если строка состоит только из пробелов, возвращается пустая строка.
|
|
53
|
-
/// @throws {Error} - Выбрасывает ошибку, если в
|
|
54
|
-
/// значение, не соответствующее
|
|
55
|
-
///
|
|
53
|
+
/// @throws {Error} - Выбрасывает ошибку, если в параметр передано
|
|
54
|
+
/// значение, не соответствующее необходимому типу:
|
|
55
|
+
///
|
|
56
|
+
/// - `$string` → `string`
|
|
56
57
|
@function string-trim-start($string) {
|
|
57
58
|
|
|
58
59
|
// Проверка типа входного параметра: ожидается строковое значение.
|
|
@@ -51,9 +51,10 @@
|
|
|
51
51
|
/// @return {String} - Возвращает новую строку, в которой удалены
|
|
52
52
|
/// все пробелы с начала и конца оригинальной строки.
|
|
53
53
|
/// Если строка состоит только из пробелов, возвращается пустая строка.
|
|
54
|
-
/// @throws {Error} - Выбрасывает ошибку, если в
|
|
55
|
-
/// значение, не соответствующее
|
|
56
|
-
///
|
|
54
|
+
/// @throws {Error} - Выбрасывает ошибку, если в параметр передано
|
|
55
|
+
/// значение, не соответствующее необходимому типу:
|
|
56
|
+
///
|
|
57
|
+
/// - `$string` → `string`
|
|
57
58
|
@function string-trim($string) {
|
|
58
59
|
|
|
59
60
|
// Проверка типа входного параметра: ожидается строковое значение.
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
@use 'sass:map';
|
|
2
|
+
@use '../../../package' as package;
|
|
3
|
+
@use '../../../configs' as libconfigs;
|
|
4
|
+
@use './log-invalid-value' as *;
|
|
5
|
+
|
|
6
|
+
/// Универсальная функция логирования с поддержкой
|
|
7
|
+
/// локализации и трёх уровней важности.
|
|
8
|
+
///
|
|
9
|
+
/// Функция предоставляет единый интерфейс для вывода
|
|
10
|
+
/// отладочной информации, предупреждений и ошибок в
|
|
11
|
+
/// процессе компиляции Sass-кода.
|
|
12
|
+
///
|
|
13
|
+
/// Поддерживает два языка (русский и английский), что
|
|
14
|
+
/// делает её неплохим решением для многоязычных
|
|
15
|
+
/// проектов и библиотек, распространяемых среди
|
|
16
|
+
/// разработчиков из разных стран (если они у проекта
|
|
17
|
+
/// будут вообще).
|
|
18
|
+
///
|
|
19
|
+
/// Сообщения для логирования передаются в виде карты
|
|
20
|
+
/// с ключами 'ru' и 'en', что позволяет гибко
|
|
21
|
+
/// управлять контентом без изменения кода функции.
|
|
22
|
+
///
|
|
23
|
+
/// Функция автоматически определяет язык сообщения на 4
|
|
24
|
+
/// основе глобальной конфигурации проекта
|
|
25
|
+
/// (`$set-loglang`). Если язык установлен как
|
|
26
|
+
/// 'en' — используется англоязычное сообщение, во
|
|
27
|
+
/// всех остальных случаях — русскоязычное. Это
|
|
28
|
+
/// обеспечивает обратную совместимость и
|
|
29
|
+
/// предсказуемое поведение.
|
|
30
|
+
///
|
|
31
|
+
/// В зависимости от переданного типа логирования (`$type`)
|
|
32
|
+
/// функция использует разные директивы Sass:
|
|
33
|
+
/// - `debug` — выводит сообщение синим цветом через `@debug`
|
|
34
|
+
/// - `warn` — выводит предупреждение жёлтым цветом через `@warn`
|
|
35
|
+
/// - `error` — выбрасывает критическую ошибку красным цветом
|
|
36
|
+
/// через `@error`, которая останавливает компиляцию
|
|
37
|
+
///
|
|
38
|
+
/// Если передан неподдерживаемый тип логирования, функция
|
|
39
|
+
/// делегирует обработку ошибки вспомогательной функции
|
|
40
|
+
/// `log-invalid-value`, которая сгенерирует соответствующее
|
|
41
|
+
/// сообщение о недопустимом значении параметра.
|
|
42
|
+
///
|
|
43
|
+
/// Функция всегда возвращает `null`, что позволяет использовать
|
|
44
|
+
/// её в выражениях, не влияя на возвращаемые значения других
|
|
45
|
+
/// функций, но при этом гарантируя выполнение побочного эффекта
|
|
46
|
+
/// (вывод сообщения в консоль).
|
|
47
|
+
/// ---
|
|
48
|
+
/// @name log
|
|
49
|
+
/// @group utilities-loggers
|
|
50
|
+
/// @since 2026.03.18
|
|
51
|
+
/// @access public
|
|
52
|
+
/// @author Murad Rustamov (therteenten)
|
|
53
|
+
/// @link https://sourcecraft.dev/users/therteenten/overview SourceCraft - therteenten
|
|
54
|
+
/// @link https://sourcecraft.dev/omnisass/library SourceCraft - OmniSass
|
|
55
|
+
/// @link https://sass-lang.com/documentation/at-rules/debug См. также: Официальная документация Sass - Директива @debug
|
|
56
|
+
/// @link https://sass-lang.com/documentation/at-rules/warn См. также: Официальная документация Sass - Директива @warn
|
|
57
|
+
/// @link https://sass-lang.com/documentation/at-rules/error См. также: Официальная документация Sass - Директива @error
|
|
58
|
+
/// @link https://sass-lang.com/documentation/values/maps См. также: Официальная документация Sass - Тип данных "Карты" (`maps`)
|
|
59
|
+
/// @link https://sass-lang.com/documentation/modules/map#get См. также: Официальная документация Sass - Функция `map.get()`
|
|
60
|
+
/// @link https://developer.mozilla.org/en-US/docs/Web/API/console См. также: MDN Web Docs - Консоль браузера (console)
|
|
61
|
+
/// @link https://developer.mozilla.org/en-US/docs/Web/API/console/debug См. также: MDN Web Docs - console.debug()
|
|
62
|
+
/// @link https://developer.mozilla.org/en-US/docs/Web/API/console/warn См. также: MDN Web Docs - console.warn()
|
|
63
|
+
/// @link https://developer.mozilla.org/en-US/docs/Web/API/console/error См. также: MDN Web Docs - console.error()
|
|
64
|
+
/// @link https://sass-guidelin.es/ru/#debugging См. также: Sass Guidelines - Отладка и логирование
|
|
65
|
+
/// @link https://css-tricks.com/debugging-sass/ См. также: CSS-Tricks - Отладка Sass
|
|
66
|
+
/// @link https://www.sitepoint.com/sass-basics-debug-warn-error/ См. также: SitePoint - Основы Sass: @debug, @warn и @error
|
|
67
|
+
/// @link https://dev.to/kennethlum/using-sass-s-map-for-logging-2c1d См. также: Dev.to - Использование карт Sass для логирования
|
|
68
|
+
/// @link https://stackoverflow.com/questions/20333659/sass-debug-warnings-and-errors См. также: Stack Overflow - Отладка, предупреждения и ошибки в Sass
|
|
69
|
+
/// @link https://habr.com/ru/post/449342/ См. также: Habr - Sass: @debug, @warn, @error для отладки
|
|
70
|
+
/// @link https://www.youtube.com/watch?v=9G2TlF1j6sM См. также: YouTube - Отладка Sass с помощью @debug и @warn
|
|
71
|
+
/// @link https://www.npmjs.com/package/sass См. также: npm - Документация пакета Dart Sass
|
|
72
|
+
/// @link https://github.com/sass/sass/tree/main/spec См. также: GitHub - Спецификация языка Sass
|
|
73
|
+
/// @link https://en.wikipedia.org/wiki/Log_level См. также: Wikipedia - Уровни логирования
|
|
74
|
+
/// @link https://www.atatus.com/blog/log-levels-explained/ См. также: Atatus Blog - Объяснение уровней логирования
|
|
75
|
+
/// @link https://www.marshall.edu/at/wp-content/uploads/AT-Logging-Levels-Explained.pdf См. также: Marshall University - Уровни логирования (PDF)
|
|
76
|
+
/// @link https://www.w3.org/TR/css3-color/ См. также: W3C - Спецификация CSS Color Module
|
|
77
|
+
/// @link https://developer.mozilla.org/en-US/docs/Web/CSS/color См. также: MDN Web Docs - CSS свойство color
|
|
78
|
+
/// @example scss - Базовая отладка на разных языках
|
|
79
|
+
/// // Конфигурация: libconfigs.$set-loglang: 'ru'
|
|
80
|
+
/// $message-ru: (
|
|
81
|
+
/// ru: 'Начало компиляции темы',
|
|
82
|
+
/// en: 'Theme compilation started'
|
|
83
|
+
/// );
|
|
84
|
+
/// @debug log($message-ru); // 🟦 Начало компиляции темы
|
|
85
|
+
///
|
|
86
|
+
/// // Конфигурация: libconfigs.$set-loglang: 'en'
|
|
87
|
+
/// @debug log($message-ru); // 🟦 Theme compilation started
|
|
88
|
+
///
|
|
89
|
+
/// @example scss - Использование в миксине с предупреждением
|
|
90
|
+
/// @mixin deprecated($old-name, $new-name) {
|
|
91
|
+
/// $warning: (
|
|
92
|
+
/// ru: 'Миксин #{$old-name} устарел. Используйте #{$new-name}',
|
|
93
|
+
/// en: 'Mixin #{$old-name} is deprecated. Use #{$new-name} instead'
|
|
94
|
+
/// );
|
|
95
|
+
/// @debug log($warning, 'warn');
|
|
96
|
+
/// @content;
|
|
97
|
+
/// }
|
|
98
|
+
///
|
|
99
|
+
/// @include deprecated('border-radius-old', 'border-radius') {
|
|
100
|
+
/// border-radius: 4px;
|
|
101
|
+
/// }
|
|
102
|
+
///
|
|
103
|
+
/// @example scss - Сложное сообщение с динамическими данными
|
|
104
|
+
/// @function validate-color($color, $context) {
|
|
105
|
+
/// @if type-of($color) != 'color' {
|
|
106
|
+
/// $message: (
|
|
107
|
+
/// ru: 'В контексте "#{$context}" передано невалидное значение цвета: #{$color}',
|
|
108
|
+
/// en: 'Invalid color value "#{$color}" passed in context: #{$context}'
|
|
109
|
+
/// );
|
|
110
|
+
/// @return log($message, 'error');
|
|
111
|
+
/// }
|
|
112
|
+
/// @return $color;
|
|
113
|
+
/// }
|
|
114
|
+
///
|
|
115
|
+
/// $primary: validate-color(#ff0000, 'theme'); // нормально
|
|
116
|
+
/// $primary: validate-color('red', 'theme'); // 🟥 Invalid color value...
|
|
117
|
+
///
|
|
118
|
+
/// @example scss - Неподдерживаемый тип логирования
|
|
119
|
+
/// $message: (
|
|
120
|
+
/// ru: 'Тестовое сообщение',
|
|
121
|
+
/// en: 'Test message'
|
|
122
|
+
/// );
|
|
123
|
+
/// @debug log($message, 'invalid-type'); // вызовет log-invalid-value
|
|
124
|
+
///
|
|
125
|
+
/// @param {Map} $message-map - Карта с сообщениями для разных языков.
|
|
126
|
+
/// Должна содержать ключи 'ru' и 'en' со строковыми значениями.
|
|
127
|
+
/// Пример: `(ru: 'Привет', en: 'Hello')`.
|
|
128
|
+
/// @param {String} $type ['debug'] - Тип логирования.
|
|
129
|
+
/// Поддерживаемые значения: 'debug', 'warn', 'error'.
|
|
130
|
+
/// По умолчанию используется 'debug'.
|
|
131
|
+
/// @return {Null} - Всегда возвращает `null`. Это позволяет
|
|
132
|
+
/// использовать функцию в выражениях, где ожидается возврат
|
|
133
|
+
/// значения, но при этом необходим побочный эффект в виде
|
|
134
|
+
/// вывода сообщения в консоль.
|
|
135
|
+
/// @throws {Error} - Выбрасывает ошибку через директиву `@error`,
|
|
136
|
+
/// если передан тип `'error'`. Ошибка содержит локализованное
|
|
137
|
+
/// сообщение из карты с префиксом в виде красного квадрата.
|
|
138
|
+
/// @throws {Warning} - Выводит предупреждение через директиву
|
|
139
|
+
/// `@warn`, если передан тип `'warn'`. Предупреждение содержит
|
|
140
|
+
/// локализованное сообщение с префиксом в виде жёлтого квадрата.
|
|
141
|
+
/// @require {variable} $set-loglang - Глобальная переменная,
|
|
142
|
+
/// определяющая язык сообщений. Поддерживает значения `'ru'`
|
|
143
|
+
/// (русский) и другие (английский).
|
|
144
|
+
@function log(
|
|
145
|
+
$message-map,
|
|
146
|
+
$type: 'debug') {
|
|
147
|
+
|
|
148
|
+
// Получаем язык сообщений из глобальной конфигурации.
|
|
149
|
+
// Поддерживаются два режима: 'ru' (русский) и
|
|
150
|
+
// 'en' — английский.
|
|
151
|
+
$-loglang: libconfigs.$set-loglang;
|
|
152
|
+
|
|
153
|
+
// Переменная для хранения финального сообщения
|
|
154
|
+
// после выбора языка.
|
|
155
|
+
$-log-message: null;
|
|
156
|
+
|
|
157
|
+
// Выбираем сообщение в зависимости от языка.
|
|
158
|
+
// Если язык 'en' — используем английский текст из карты,
|
|
159
|
+
// для всех остальных случаев — русский.
|
|
160
|
+
@if $-loglang == 'en' {
|
|
161
|
+
|
|
162
|
+
// Извлекаем английскую версию сообщения из карты.
|
|
163
|
+
// Ключ 'en' должен присутствовать в карте обязательно.
|
|
164
|
+
$-log-message: map.get($message-map, en);
|
|
165
|
+
|
|
166
|
+
} @else {
|
|
167
|
+
|
|
168
|
+
// Извлекаем русскую версию сообщения из карты.
|
|
169
|
+
// Ключ 'ru' должен присутствовать в карте обязательно.
|
|
170
|
+
$-log-message: map.get($message-map, ru);
|
|
171
|
+
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
// Отображаем в консоли название и версию библиотеки.
|
|
175
|
+
@debug '⬛ #{package.$title} v#{package.$version} (#{package.$package})';
|
|
176
|
+
|
|
177
|
+
// Обрабатываем тип логирования и выводим сообщение
|
|
178
|
+
// соответствующим способом.
|
|
179
|
+
@if $type == 'debug' {
|
|
180
|
+
|
|
181
|
+
// Отладочное сообщение — не останавливает компиляцию,
|
|
182
|
+
// выводится только при включённом режиме отладки.
|
|
183
|
+
// Синий квадрат используется для визуального отличия.
|
|
184
|
+
@debug '🟦 #{$-log-message}';
|
|
185
|
+
|
|
186
|
+
} @else if $type == 'warn' {
|
|
187
|
+
|
|
188
|
+
// Предупреждение — не останавливает компиляцию,
|
|
189
|
+
// но выводится всегда, показывая потенциальные проблемы.
|
|
190
|
+
// Жёлтый квадрат привлекает внимание к предупреждению.
|
|
191
|
+
@warn '🟨 #{$-log-message}';
|
|
192
|
+
|
|
193
|
+
} @else if $type == 'error' {
|
|
194
|
+
|
|
195
|
+
// Критическая ошибка — ПОЛНОСТЬЮ ОСТАНАВЛИВАЕТ компиляцию.
|
|
196
|
+
// Красный квадрат сигнализирует о серьёзной проблеме.
|
|
197
|
+
@error '🟥 #{$-log-message}';
|
|
198
|
+
|
|
199
|
+
} @else {
|
|
200
|
+
|
|
201
|
+
// Если передан неподдерживаемый тип логирования,
|
|
202
|
+
// делегируем обработку ошибки вспомогательной функции.
|
|
203
|
+
// log-invalid-value сгенерирует сообщение о том,
|
|
204
|
+
// какие типы логирования допустимы.
|
|
205
|
+
@return log-invalid-value(
|
|
206
|
+
'log',
|
|
207
|
+
$type,
|
|
208
|
+
'$type',
|
|
209
|
+
('debug', 'warn', 'error')
|
|
210
|
+
);
|
|
211
|
+
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
// Функция всегда возвращает null, чтобы не влиять
|
|
215
|
+
// на возвращаемые значения вызывающих функций,
|
|
216
|
+
// но при этом гарантировать выполнение побочного эффекта.
|
|
217
|
+
@return null;
|
|
218
|
+
|
|
219
|
+
}
|