@omnisass/library 0.2.0 → 2026.1.0-alpha.1
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/.editorconfig +13 -0
- package/.omnisass/scripts/bump-version.sh +288 -0
- package/.sassdoc.yaml +21 -0
- package/.vscode/settings.json +17 -0
- package/_configs.scss +10 -45
- package/index.scss +5 -91
- package/modules/utilities/converters/_convert-em2px.scss +3 -49
- package/modules/utilities/converters/_convert-hex2rgb.scss +2 -44
- package/modules/utilities/converters/_convert-hex2rgba.scss +2 -57
- package/modules/utilities/converters/_convert-px2em.scss +3 -62
- package/modules/utilities/converters/_convert-px2rem.scss +3 -62
- package/modules/utilities/converters/_convert-rem2px.scss +3 -62
- package/modules/utilities/converters/_index.scss +10 -0
- package/modules/utilities/getters/_index.scss +23 -0
- package/modules/utilities/getters/color/_get-color-brightness.scss +2 -48
- package/modules/utilities/getters/color/_get-color-darkest.scss +13 -68
- package/modules/utilities/getters/list/_get-list-item-end.scss +2 -29
- package/modules/utilities/getters/list/_get-list-item-start.scss +2 -29
- package/modules/utilities/getters/list/_get-list-item.scss +6 -82
- package/modules/utilities/getters/number/_get-number-from-percent.scss +2 -40
- package/modules/utilities/getters/number/_get-number-height-by-ratio.scss +3 -35
- package/modules/utilities/getters/number/_get-number-max-safe.scss +112 -0
- package/modules/utilities/getters/number/_get-number-max.scss +10 -88
- package/modules/utilities/getters/number/_get-number-min-safe.scss +114 -0
- package/modules/utilities/getters/number/_get-number-min.scss +9 -84
- package/modules/utilities/getters/number/_get-number-percentage-of.scss +2 -58
- package/modules/utilities/getters/number/_get-number-unit.scss +5 -46
- package/modules/utilities/getters/number/_get-number-width-by-ratio.scss +3 -56
- package/modules/utilities/helpers/_index.scss +44 -0
- package/modules/utilities/helpers/color/_color-blend-steps.scss +5 -89
- package/modules/utilities/helpers/color/_color-blend.scss +11 -85
- package/modules/utilities/helpers/color/_color-hue-shift.scss +7 -61
- package/modules/utilities/helpers/color/_color-scale.scss +7 -74
- package/modules/utilities/helpers/color/_color-shade.scss +2 -60
- package/modules/utilities/helpers/color/_color-tint.scss +2 -60
- package/modules/utilities/helpers/color/_color-triad.scss +9 -53
- package/modules/utilities/helpers/list/_list-dedupe.scss +9 -50
- package/modules/utilities/helpers/list/_list-insert-at.scss +16 -86
- package/modules/utilities/helpers/list/_list-merge.scss +1 -1
- package/modules/utilities/helpers/list/_list-remove-at.scss +9 -71
- package/modules/utilities/helpers/list/_list-sum-numbers-safe.scss +17 -81
- package/modules/utilities/helpers/list/_list-sum-numbers.scss +9 -57
- package/modules/utilities/helpers/number/_number-ceil-to.scss +1 -1
- package/modules/utilities/helpers/number/_number-clamp-max.scss +1 -1
- package/modules/utilities/helpers/number/_number-clamp-min.scss +1 -1
- package/modules/utilities/helpers/number/_number-clamp.scss +1 -1
- package/modules/utilities/helpers/number/_number-denormalize.scss +1 -1
- package/modules/utilities/helpers/number/_number-fibonacci.scss +2 -2
- package/modules/utilities/helpers/number/_number-floor-to.scss +1 -1
- package/modules/utilities/helpers/number/_number-format-with-separator.scss +4 -4
- package/modules/utilities/helpers/number/_number-normalize.scss +1 -1
- package/modules/utilities/helpers/number/_number-random-between-int.scss +1 -1
- package/modules/utilities/helpers/number/_number-random-between.scss +1 -1
- package/modules/utilities/helpers/number/_number-range.scss +7 -7
- package/modules/utilities/helpers/number/_number-round-to-nearest.scss +1 -1
- package/modules/utilities/helpers/number/_number-round-to.scss +1 -1
- package/modules/utilities/helpers/number/_number-strip-unit.scss +2 -14
- package/modules/utilities/helpers/string/_string-capitalize.scss +1 -1
- package/modules/utilities/helpers/string/_string-replace.scss +1 -1
- package/modules/utilities/helpers/string/_string-trim-end.scss +2 -2
- package/modules/utilities/helpers/string/_string-trim-start.scss +2 -2
- package/modules/utilities/helpers/string/_string-trim.scss +1 -1
- package/modules/utilities/loggers/_index.scss +6 -0
- package/modules/utilities/validators/_index.scss +38 -0
- package/modules/utilities/validators/{misc/_is-time.scss → _is-time.scss} +2 -2
- package/modules/utilities/validators/color/_is-color-light.scss +1 -1
- package/modules/utilities/validators/color/_is-color-list.scss +1 -1
- package/modules/utilities/validators/list/_is-list-contained.scss +1 -1
- package/modules/utilities/validators/number/_is-int-even.scss +1 -1
- package/modules/utilities/validators/number/_is-int-odd.scss +1 -1
- package/modules/utilities/validators/number/_is-int.scss +1 -1
- package/modules/utilities/validators/number/_is-number-has-unit.scss +1 -1
- package/modules/utilities/validators/number/_is-number-negative.scss +1 -1
- package/modules/utilities/validators/number/_is-number-positive.scss +1 -1
- package/modules/utilities/validators/number/_is-number-unitless.scss +1 -1
- package/modules/utilities/validators/number/_is-number-zero.scss +1 -1
- package/modules/utilities/validators/string/_is-string-contained.scss +25 -25
- package/modules/utilities/validators/string/_is-string-empty.scss +1 -1
- package/modules/utilities/validators/string/_is-string-ending-with.scss +1 -1
- package/modules/utilities/validators/string/_is-string-starting-with.scss +1 -1
- package/modules/utilities/validators/type-of/_is-boolean.scss +1 -1
- package/modules/utilities/validators/type-of/_is-color.scss +1 -1
- package/modules/utilities/validators/type-of/_is-list.scss +1 -1
- package/modules/utilities/validators/type-of/_is-map.scss +1 -1
- package/modules/utilities/validators/type-of/_is-number.scss +1 -1
- package/modules/utilities/validators/type-of/_is-string.scss +1 -1
- package/modules/utilities/validators/type-of/_is-type.scss +1 -1
- package/package.json +5 -6
- package/package.scss +3 -3
- package/playground/index.scss +8 -0
- package/modules/utilities/converters/_convert-camel2kebab.scss +0 -186
- package/modules/utilities/converters/_convert-kebab2camel.scss +0 -232
- package/modules/utilities/converters/_convert-kebab2snake.scss +0 -118
- package/modules/utilities/converters/_convert-snake2kebab.scss +0 -173
- package/modules/utilities/helpers/misc/_url-encode.configs.scss +0 -64
- package/modules/utilities/helpers/misc/_url-encode.scss +0 -148
- package/modules/utilities/loggers/_log-invalid-type.scss +0 -151
- package/modules/utilities/loggers/_log-invalid-value.scss +0 -151
- package/test.md +0 -168
- package/test.scss +0 -405
- package/test.sh +0 -149
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
@forward 'url-encode.configs';
|
|
2
|
-
|
|
3
|
-
@use 'url-encode.configs' as configs;
|
|
4
|
-
@use '../string/string-replace' as *;
|
|
5
|
-
@use '../../loggers/log-invalid-type' as *;
|
|
6
|
-
@use '../../validators/type-of/is-map' as *;
|
|
7
|
-
@use '../../validators/type-of/is-string' as *;
|
|
8
|
-
|
|
9
|
-
/// Кодирует строку для безопасного использования в URL.
|
|
10
|
-
///
|
|
11
|
-
/// Функция заменяет зарезервированные и небезопасные символы в
|
|
12
|
-
/// строке на их процентное представление в соответствии с
|
|
13
|
-
/// RFC 3986. Это позволяет безопасно включать пользовательские
|
|
14
|
-
/// данные, параметры и динамические значения в URL-адреса без
|
|
15
|
-
/// риска нарушения структуры URL или возникновения ошибок.
|
|
16
|
-
///
|
|
17
|
-
/// Важные особенности функции:
|
|
18
|
-
/// - Заменяет зарезервированные символы URL на процентное кодирование
|
|
19
|
-
/// - Использует настраиваемую карту замены символов
|
|
20
|
-
/// - Поддерживает кастомные наборы символов для кодирования
|
|
21
|
-
/// - Обрабатывает строки любой длины и сложности
|
|
22
|
-
/// - Сохраняет безопасные символы без изменений
|
|
23
|
-
/// - Полезно для динамической генерации URL с параметрами
|
|
24
|
-
/// - Используется для создания безопасных ссылок и маршрутов
|
|
25
|
-
/// - Обеспечивает корректную работу с международными символами
|
|
26
|
-
/// - Предотвращает инъекции и нарушения структуры URL
|
|
27
|
-
/// - Совместима со стандартами кодирования URL
|
|
28
|
-
/// ---
|
|
29
|
-
/// @name url-encode
|
|
30
|
-
/// @group utilities-helpers
|
|
31
|
-
/// @since 2026.01.13
|
|
32
|
-
/// @access public
|
|
33
|
-
/// @author Sindre Sorhus
|
|
34
|
-
/// @author Murad Rustamov (therteenten) [адаптация]
|
|
35
|
-
/// @link https://github.com/sindresorhus GitHub - Sindre Sorhus
|
|
36
|
-
/// @link https://sourcecraft.dev/users/therteenten/overview SourceCraft - therteenten
|
|
37
|
-
/// @link https://sourcecraft.dev/omnisass/library SourceCraft - OmniSass
|
|
38
|
-
/// @link https://sass-lang.com/documentation/modules/string См. также: Официальная документация Sass - Модуль String
|
|
39
|
-
/// @link https://sass-lang.com/documentation/values/strings См. также: Официальная документация Sass - Тип данных "Строки"
|
|
40
|
-
/// @link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent См. также: MDN Web Docs - Функция encodeURIComponent()
|
|
41
|
-
/// @link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURI См. также: MDN Web Docs - Функция encodeURI()
|
|
42
|
-
/// @link https://developer.mozilla.org/en-US/docs/Glossary/percent-encoding См. также: MDN Web Docs - Глоссарий: Percent-encoding
|
|
43
|
-
/// @link https://developer.mozilla.org/en-US/docs/Web/API/URL_API См. также: MDN Web Docs - URL API
|
|
44
|
-
/// @link https://datatracker.ietf.org/doc/html/rfc3986 См. также: RFC 3986 - Uniform Resource Identifier (URI): Generic Syntax
|
|
45
|
-
/// @link https://en.wikipedia.org/wiki/Percent-encoding См. также: Wikipedia - Percent-encoding
|
|
46
|
-
/// @link https://css-tricks.com/snippets/sass/string-replace-function/ См. также: CSS-Tricks - Функция замены строк в Sass
|
|
47
|
-
/// @link https://css-tricks.com/snippets/jquery/get-query-params-object-from-url/ См. также: CSS-Tricks - Получение параметров запроса из URL
|
|
48
|
-
/// @link https://sass-guidelin.es/ru/#section-42 См. также: Sass Guidelines - Раздел про строки
|
|
49
|
-
/// @link https://www.urlencoder.io/learn/ См. также: URL Encoder - Обучение кодированию URL
|
|
50
|
-
/// @example scss - Базовое кодирование строк
|
|
51
|
-
/// @debug url-encode('Hello World!'); // 'Hello%20World%21'
|
|
52
|
-
/// @debug url-encode('query=test&sort=asc'); // 'query%3Dtest%26sort%3Dasc'
|
|
53
|
-
/// @debug url-encode('price=$100'); // 'price%3D%24100'
|
|
54
|
-
/// @debug url-encode('user@example.com'); // 'user%40example.com'
|
|
55
|
-
/// @debug url-encode('path/to/file.js'); // 'path%2Fto%2Ffile.js'
|
|
56
|
-
/// @debug url-encode('name=John Doe'); // 'name%3DJohn%20Doe'
|
|
57
|
-
/// @param {String} $value - Строка для кодирования в URL.
|
|
58
|
-
/// Может содержать любые символы, включая зарезервированные
|
|
59
|
-
/// символы URL. Функция заменит все символы из карты замены
|
|
60
|
-
/// на их процентное представление.
|
|
61
|
-
/// @param {Map} $chars-map [configs.$set-url-reserved-chars] -
|
|
62
|
-
/// Карта замены символов для кодирования. По умолчанию
|
|
63
|
-
/// используется глобальная конфигурация из
|
|
64
|
-
/// `configs.$set-url-reserved-chars`. Карта должна содержать
|
|
65
|
-
/// пары ключ-значение, где ключ - символ для замены,
|
|
66
|
-
/// значение - процентное представление символа.
|
|
67
|
-
/// @return {String} - Закодированная строка, где все символы
|
|
68
|
-
/// из карты замены преобразованы в их процентное
|
|
69
|
-
/// представление. Строка безопасна для использования в
|
|
70
|
-
/// любой части URL (path, query, fragment).
|
|
71
|
-
/// @throws {Error} - Может выбросить ошибку при передаче
|
|
72
|
-
/// нестрокового значения или если функция `string-replace`
|
|
73
|
-
/// не определена. Требуется наличие функции `string-replace`
|
|
74
|
-
/// в доступном scope.
|
|
75
|
-
/// @require {function} string-replace - Вспомогательная
|
|
76
|
-
/// функция замены подстрок в строке. Должна быть определена
|
|
77
|
-
/// и доступна для корректной работы данной функции.
|
|
78
|
-
/// @require {variable} configs.$set-url-reserved-chars -
|
|
79
|
-
/// Глобальная переменная с картой зарезервированных символов
|
|
80
|
-
/// URL. Содержит маппинг символов на их процентное
|
|
81
|
-
/// кодирование по умолчанию.
|
|
82
|
-
@function url-encode(
|
|
83
|
-
$value,
|
|
84
|
-
$chars-map: configs.$set-url-reserved-chars) {
|
|
85
|
-
|
|
86
|
-
// Проверка типа первого параметра: ожидается строковое значение.
|
|
87
|
-
// Функция is-string() проверяет, является ли $value строкой
|
|
88
|
-
// (тип данных string).
|
|
89
|
-
@if not is-string($value) {
|
|
90
|
-
|
|
91
|
-
// Если $value не является строкой, возвращаем ошибку через
|
|
92
|
-
// стандартную функцию логирования. Это предотвращает
|
|
93
|
-
// некорректные операции кодирования с нестроковыми данными.
|
|
94
|
-
@return log-invalid-type(
|
|
95
|
-
'url-encode',
|
|
96
|
-
$value,
|
|
97
|
-
'$value',
|
|
98
|
-
'string'
|
|
99
|
-
);
|
|
100
|
-
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
// Проверка типа второго параметра: ожидается карта (map) символов.
|
|
104
|
-
// $chars-map содержит сопоставление символов, которые нужно заменить,
|
|
105
|
-
// с их URL-закодированными представлениями. По умолчанию используется
|
|
106
|
-
// значение из конфигурации configs.$set-url-reserved-chars.
|
|
107
|
-
@else if not is-map($chars-map) {
|
|
108
|
-
|
|
109
|
-
// Если $chars-map не является картой, возвращаем ошибку.
|
|
110
|
-
// Проверка выполняется только если $value прошел валидацию.
|
|
111
|
-
@return log-invalid-type(
|
|
112
|
-
'url-encode',
|
|
113
|
-
$chars-map,
|
|
114
|
-
'$chars-map',
|
|
115
|
-
'map'
|
|
116
|
-
);
|
|
117
|
-
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
// Все параметры прошли валидацию - выполняем кодирование строки.
|
|
121
|
-
@else {
|
|
122
|
-
|
|
123
|
-
// Инициализация переменной для хранения результата.
|
|
124
|
-
// Начинаем с исходного значения, которое будет постепенно
|
|
125
|
-
// преобразовываться путем замены символов.
|
|
126
|
-
$-result: $value;
|
|
127
|
-
|
|
128
|
-
// Итерация по всем парам ключ-значение в карте символов.
|
|
129
|
-
// - $string: символ или последовательность символов для замены.
|
|
130
|
-
// - $replacement: закодированное представление символа для URL.
|
|
131
|
-
@each $string, $replacement in $chars-map {
|
|
132
|
-
|
|
133
|
-
// Замена каждого вхождения $string на $replacement в строке.
|
|
134
|
-
// Функция string-replace() выполняет глобальную замену
|
|
135
|
-
// всех вхождений искомой подстроки.
|
|
136
|
-
$-result: string-replace($-result, $string, $replacement);
|
|
137
|
-
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
// Возвращаем закодированную строку, безопасную для использования в URL.
|
|
141
|
-
// Все символы, указанные в $chars-map, будут заменены на их
|
|
142
|
-
// URL-закодированные эквиваленты (обычно в формате %XX,
|
|
143
|
-
// где XX - шестнадцатеричный код символа).
|
|
144
|
-
@return $-result;
|
|
145
|
-
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
}
|
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
@use '../../../configs' as libconfigs;
|
|
2
|
-
@use '../validators/type-of/is-type' as *;
|
|
3
|
-
|
|
4
|
-
/// Логирует ошибку или предупреждение о несоответствии типа
|
|
5
|
-
/// параметра ожидаемым типам.
|
|
6
|
-
///
|
|
7
|
-
/// Функция генерирует детализированное сообщение об ошибке или
|
|
8
|
-
/// предупреждение, когда переданный параметр имеет тип, не
|
|
9
|
-
/// соответствующий ожидаемым типам. Поддерживает два режима
|
|
10
|
-
/// работы: строгий (выбрасывает ошибку) и нестрогий (выводит
|
|
11
|
-
/// предупреждение). Сообщения локализованы на русский и
|
|
12
|
-
/// английский языки и включают название функции для лучшей
|
|
13
|
-
/// идентификации источника проблемы.
|
|
14
|
-
///
|
|
15
|
-
/// Важные особенности функции:
|
|
16
|
-
/// - Поддерживает строгий и нестрогий режимы работы
|
|
17
|
-
/// - Предоставляет локализованные сообщения (русский/английский)
|
|
18
|
-
/// - Включает название функции в сообщение об ошибке
|
|
19
|
-
/// - Выводит детальную информацию об ожидаемых и полученных типах
|
|
20
|
-
/// - Генерирует структурированные отладочные сообщения
|
|
21
|
-
/// - Позволяет гибко настраивать поведение через конфигурацию
|
|
22
|
-
/// - Сохраняет целостность типов в библиотеках и фреймворках
|
|
23
|
-
/// - Упрощает отладку неправильного использования функций
|
|
24
|
-
/// - Обеспечивает единообразную обработку ошибок типов
|
|
25
|
-
/// - Интегрируется с системой конфигурации проекта
|
|
26
|
-
/// - Возвращает `null` для совместимости с другими функциями
|
|
27
|
-
/// ---
|
|
28
|
-
/// @name log-invalid-type
|
|
29
|
-
/// @group utilities-loggers
|
|
30
|
-
/// @since 2026.01.13
|
|
31
|
-
/// @access public
|
|
32
|
-
/// @author Murad Rustamov (therteenten)
|
|
33
|
-
/// @link https://sourcecraft.dev/users/therteenten/overview SourceCraft - therteenten
|
|
34
|
-
/// @link https://sourcecraft.dev/omnisass/library SourceCraft - OmniSass
|
|
35
|
-
/// @link https://sass-lang.com/documentation/values См. также: Официальная документация Sass - Типы данных
|
|
36
|
-
/// @link https://sass-lang.com/documentation/style-rules/error См. также: Официальная документация Sass - Директива @error
|
|
37
|
-
/// @link https://sass-lang.com/documentation/at-rules/warn См. также: Официальная документация Sass - Директива @warn
|
|
38
|
-
/// @link https://sass-lang.com/documentation/at-rules/debug См. также: Официальная документация Sass - Директива @debug
|
|
39
|
-
/// @link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof См. также: MDN Web Docs - Оператор typeof
|
|
40
|
-
/// @link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypeError См. также: MDN Web Docs - Ошибка TypeError
|
|
41
|
-
/// @link https://developer.mozilla.org/en-US/docs/Learn/JavaScript/First_steps/Useful_string_methods См. также: MDN Web Docs - Методы работы со строками
|
|
42
|
-
/// @link https://css-tricks.com/sass-techniques-from-the-trenches/ См. также: CSS-Tricks - Sass техники из практики
|
|
43
|
-
/// @link https://css-tricks.com/debugging-sass/ См. также: CSS-Tricks - Отладка Sass
|
|
44
|
-
/// @link https://sass-guidelin.es/ru/#section-7 См. также: Sass Guidelines - Раздел про обработку ошибок
|
|
45
|
-
/// @link https://www.w3schools.com/js/js_typeof.asp См. также: W3Schools - JavaScript Typeof
|
|
46
|
-
/// @example scss - Интеграция с системой конфигурации
|
|
47
|
-
/// // Настройка поведения через глобальные конфигурации
|
|
48
|
-
/// // $set-strict-mode: true; // Строгий режим
|
|
49
|
-
/// // $set-strict-mode: false; // Нестрогий режим
|
|
50
|
-
/// // $set-loglang: 'en'; // Английский язык
|
|
51
|
-
/// // $set-loglang: 'ru'; // Русский язык
|
|
52
|
-
///
|
|
53
|
-
/// @function calculate-margin($base, $multiplier) {
|
|
54
|
-
/// @if is-type($base) != 'number' {
|
|
55
|
-
/// @return log-invalid-type(
|
|
56
|
-
/// 'calculate-margin',
|
|
57
|
-
/// $base,
|
|
58
|
-
/// '$base',
|
|
59
|
-
/// ('number')
|
|
60
|
-
/// );
|
|
61
|
-
/// }
|
|
62
|
-
/// @return $base * $multiplier;
|
|
63
|
-
/// }
|
|
64
|
-
///
|
|
65
|
-
/// // Поведение зависит от глобальных настроек
|
|
66
|
-
/// @debug calculate-margin(10px, 2); // 20px
|
|
67
|
-
/// @debug calculate-margin('10px', 2); // ⛔ Error или ⚠️ Warning (с указанием функции «calculate-margin»)
|
|
68
|
-
/// @param {String} $function-name - Название функции, в которой
|
|
69
|
-
/// произошла ошибка типа. Используется для идентификации
|
|
70
|
-
/// источника ошибки в стеке вызовов. Должно быть строковым
|
|
71
|
-
/// значением. Включается в сообщение об ошибке для лучшей
|
|
72
|
-
/// идентификации.
|
|
73
|
-
/// @param {*} $parameter - Фактическое значение параметра,
|
|
74
|
-
/// тип которого проверяется. Может быть любого типа,
|
|
75
|
-
/// функция определит его тип с помощью `is-type()`.
|
|
76
|
-
/// @param {String} $parameter-name - Имя параметра в виде
|
|
77
|
-
/// строки (например, '$value', '$options'). Используется
|
|
78
|
-
/// в сообщении об ошибке для идентификации проблемного
|
|
79
|
-
/// параметра.
|
|
80
|
-
/// @param {List | String} $expected-types - Список ожидаемых типов
|
|
81
|
-
/// параметра. Может содержать один или несколько типов
|
|
82
|
-
/// в виде строк (например, `'map', `('number')` или
|
|
83
|
-
/// `('string', 'list', 'map')`). Отображается в
|
|
84
|
-
/// сообщении об ошибке.
|
|
85
|
-
/// @return {Null} - Всегда возвращает `null`. Это позволяет
|
|
86
|
-
/// использовать функцию в выражениях возврата, не нарушая
|
|
87
|
-
/// сигнатуры других функций.
|
|
88
|
-
/// @throws {Error} - Выбрасывает ошибку в строгом режиме
|
|
89
|
-
/// (`$set-strict-mode: true`). Ошибка содержит
|
|
90
|
-
/// локализованное сообщение о несоответствии типа с
|
|
91
|
-
/// указанием названия функции.
|
|
92
|
-
/// @throws {Warning} - Выводит предупреждение в нестрогом
|
|
93
|
-
/// режиме (`$set-strict-mode: false`).
|
|
94
|
-
/// Дополнительно выводит отладочные сообщения с помощью
|
|
95
|
-
/// `@debug` для детальной диагностики.
|
|
96
|
-
/// @require {function} is-type - Вспомогательная функция
|
|
97
|
-
/// определения типа значения. Должна быть определена
|
|
98
|
-
/// и доступна для корректной работы данной функции.
|
|
99
|
-
/// @require {variable} $set-strict-mode - Глобальная переменная,
|
|
100
|
-
/// определяющая режим работы. Если `true` - выбрасывает
|
|
101
|
-
/// ошибку, если `false` - выводит предупреждение.
|
|
102
|
-
/// @require {variable} $set-loglang - Глобальная переменная,
|
|
103
|
-
/// определяющая язык сообщений. Поддерживает значения `'ru'`
|
|
104
|
-
/// (русский) и другие (английский).
|
|
105
|
-
@function log-invalid-type(
|
|
106
|
-
$function-name,
|
|
107
|
-
$parameter,
|
|
108
|
-
$parameter-name,
|
|
109
|
-
$expected-types) {
|
|
110
|
-
|
|
111
|
-
// Получаем глобальные настройки из конфигурации
|
|
112
|
-
$-strict-mode: libconfigs.$set-strict-mode; // Режим работы: true = ошибки (строгий), false = предупреждения
|
|
113
|
-
$-loglang: libconfigs.$set-loglang; // Язык вывода сообщений
|
|
114
|
-
$-log-message: ''; // Текст сообщения об ошибке
|
|
115
|
-
|
|
116
|
-
// Определяем язык на основе глобальной настройки
|
|
117
|
-
@if $-loglang != 'ru' {
|
|
118
|
-
// Английская версия сообщения
|
|
119
|
-
// is-type($parameter) - вспомогательная функция,
|
|
120
|
-
// возвращающая тип значения
|
|
121
|
-
$-log-message: 'The parameter «#{$parameter-name}» of the function «#{$function-name}» received an unexpected type «#{is-type($parameter)}», although «#{$expected-types}» is expected';
|
|
122
|
-
} @else {
|
|
123
|
-
// Русская версия сообщения
|
|
124
|
-
$-log-message: 'Параметр «#{$parameter-name}» функции «#{$function-name}» получил неожиданный тип «#{is-type($parameter)}», хотя ожидается «#{$expected-types}»';
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
// Если строгий режим отключен
|
|
128
|
-
@if $-strict-mode == false {
|
|
129
|
-
// Выводим предупреждение (не останавливает компиляцию)
|
|
130
|
-
@warn '⚠️ ' + $-log-message;
|
|
131
|
-
|
|
132
|
-
// Детальная отладочная информация:
|
|
133
|
-
@debug '🟦 ┌ #{$parameter-name}'; // Имя параметра
|
|
134
|
-
@debug '🟥 └⤬ #{is-type($parameter)}'; // Фактический тип параметра (с ошибкой)
|
|
135
|
-
|
|
136
|
-
// Выводим список ожидаемых типов
|
|
137
|
-
@each $type in $expected-types {
|
|
138
|
-
@debug '✅ └─ #{$type}'; // Каждый ожидаемый тип
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
} @else {
|
|
142
|
-
// Строгий режим - выводим ошибку
|
|
143
|
-
// (останавливает компиляцию)
|
|
144
|
-
@error '⛔ ' + $-log-message;
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
// Всегда возвращаем null для использования
|
|
148
|
-
// в качестве заглушки
|
|
149
|
-
@return null;
|
|
150
|
-
|
|
151
|
-
}
|
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
@use '../../../configs' as libconfigs;
|
|
2
|
-
|
|
3
|
-
/// Логирует ошибку или предупреждение о недопустимом значении
|
|
4
|
-
/// параметра, когда передано значение, не входящее в список
|
|
5
|
-
/// разрешенных.
|
|
6
|
-
///
|
|
7
|
-
/// Функция генерирует детализированное сообщение об ошибке или
|
|
8
|
-
/// предупреждение, когда переданный параметр имеет значение,
|
|
9
|
-
/// не соответствующее ожидаемому набору допустимых значений.
|
|
10
|
-
/// Поддерживает два режима работы: строгий (выбрасывает ошибку)
|
|
11
|
-
/// и нестрогий (выводит предупреждение). Сообщения локализованы
|
|
12
|
-
/// на русский и английский языки и включают название функции
|
|
13
|
-
/// для лучшей идентификации источника проблемы.
|
|
14
|
-
///
|
|
15
|
-
/// Важные особенности функции:
|
|
16
|
-
/// - Поддерживает строгий и нестрогий режимы работы
|
|
17
|
-
/// - Предоставляет локализованные сообщения (русский/английский)
|
|
18
|
-
/// - Включает название функции в сообщение об ошибке
|
|
19
|
-
/// - Выводит детальную информацию о допустимых и полученных значениях
|
|
20
|
-
/// - Генерирует структурированные отладочные сообщения
|
|
21
|
-
/// - Позволяет гибко настраивать поведение через конфигурацию
|
|
22
|
-
/// - Сохраняет целостность данных в библиотеках и фреймворках
|
|
23
|
-
/// - Упрощает отладку неправильного использования функций
|
|
24
|
-
/// - Обеспечивает единообразную обработку ошибок значений
|
|
25
|
-
/// - Интегрируется с системой конфигурации проекта
|
|
26
|
-
/// - Возвращает `null` для совместимости с другими функциями
|
|
27
|
-
/// ---
|
|
28
|
-
/// @name log-invalid-value
|
|
29
|
-
/// @group utilities-loggers
|
|
30
|
-
/// @since 2026.01.14
|
|
31
|
-
/// @access public
|
|
32
|
-
/// @author Murad Rustamov (therteenten)
|
|
33
|
-
/// @link https://sourcecraft.dev/users/therteenten/overview SourceCraft - therteenten
|
|
34
|
-
/// @link https://sourcecraft.dev/omnisass/library SourceCraft - OmniSass
|
|
35
|
-
/// @link https://sass-lang.com/documentation/values См. также: Официальная документация Sass - Типы данных
|
|
36
|
-
/// @link https://sass-lang.com/documentation/style-rules/error См. также: Официальная документация Sass - Директива @error
|
|
37
|
-
/// @link https://sass-lang.com/documentation/at-rules/warn См. также: Официальная документация Sass - Директива @warn
|
|
38
|
-
/// @link https://sass-lang.com/documentation/at-rules/debug См. также: Официальная документация Sass - Директива @debug
|
|
39
|
-
/// @link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RangeError См. также: MDN Web Docs - Ошибка RangeError
|
|
40
|
-
/// @link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypeError См. также: MDN Web Docs - Ошибка TypeError
|
|
41
|
-
/// @link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/switch См. также: MDN Web Docs - Оператор switch
|
|
42
|
-
/// @link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/throw См. также: MDN Web Docs - Оператор throw
|
|
43
|
-
/// @link https://css-tricks.com/sass-techniques-from-the-trenches/ См. также: CSS-Tricks - Sass техники из практики
|
|
44
|
-
/// @link https://css-tricks.com/debugging-sass/ См. также: CSS-Tricks - Отладка Sass
|
|
45
|
-
/// @link https://sass-guidelin.es/ru/#section-7 См. также: Sass Guidelines - Раздел про обработку ошибок
|
|
46
|
-
/// @link https://www.w3schools.com/js/js_errors.asp См. также: W3Schools - JavaScript Ошибки
|
|
47
|
-
/// @example scss - Строгий режим (выбрасывает ошибку)
|
|
48
|
-
/// // В строгом режиме функция выбрасывает ошибку
|
|
49
|
-
/// // libconfigs.$set-strict-mode: true;
|
|
50
|
-
/// // libconfigs.$set-loglang: 'en';
|
|
51
|
-
///
|
|
52
|
-
/// @function get-color($theme) {
|
|
53
|
-
/// @if not index(('light', 'dark', 'auto'), $theme) {
|
|
54
|
-
/// @return log-invalid-value(
|
|
55
|
-
/// 'get-color',
|
|
56
|
-
/// $theme,
|
|
57
|
-
/// '$theme',
|
|
58
|
-
/// ('light', 'dark', 'auto')
|
|
59
|
-
/// );
|
|
60
|
-
/// }
|
|
61
|
-
/// @if $theme == 'light' { @return #ffffff; }
|
|
62
|
-
/// @if $theme == 'dark' { @return #000000; }
|
|
63
|
-
/// @if $theme == 'auto' { @return #888888; }
|
|
64
|
-
/// }
|
|
65
|
-
///
|
|
66
|
-
/// @debug get-color('light'); // #ffffff
|
|
67
|
-
/// @debug get-color('dark'); // #000000
|
|
68
|
-
/// @debug get-color('blue'); // ⛔ Error: An incorrect value was passed to the parameter «$theme» of the function «get-color». The parameter takes specific values: «light, dark, auto».
|
|
69
|
-
/// @param {String} $function-name - Название функции, в которой
|
|
70
|
-
/// произошла ошибка значения. Используется для идентификации
|
|
71
|
-
/// источника ошибки в стеке вызовов. Должно быть строковым
|
|
72
|
-
/// значением. Включается в сообщение об ошибке для лучшей
|
|
73
|
-
/// идентификации.
|
|
74
|
-
/// @param {*} $parameter - Фактическое значение параметра,
|
|
75
|
-
/// которое проверяется на соответствие допустимым значениям.
|
|
76
|
-
/// Может быть любого типа (строка, число, список и т.д.).
|
|
77
|
-
/// @param {String} $parameter-name - Имя параметра в виде
|
|
78
|
-
/// строки (например, '$variant', '$size'). Используется
|
|
79
|
-
/// в сообщении об ошибке для идентификации проблемного
|
|
80
|
-
/// параметра.
|
|
81
|
-
/// @param {List} $expected-values - Список допустимых значений
|
|
82
|
-
/// параметра. Может содержать одно или несколько значений
|
|
83
|
-
/// в виде списка (например, `('light', 'dark')` или
|
|
84
|
-
/// `(1, 2, 3, 4)`). Отображается в сообщении об ошибке.
|
|
85
|
-
/// @return {Null} - Всегда возвращает `null`. Это позволяет
|
|
86
|
-
/// использовать функцию в выражениях возврата, не нарушая
|
|
87
|
-
/// сигнатуры других функций.
|
|
88
|
-
/// @throws {Error} - Выбрасывает ошибку в строгом режиме
|
|
89
|
-
/// (`$set-strict-mode: true`). Ошибка содержит
|
|
90
|
-
/// локализованное сообщение о недопустимом значении с
|
|
91
|
-
/// указанием названия функции и списка допустимых значений.
|
|
92
|
-
/// @throws {Warning} - Выводит предупреждение в нестрогом
|
|
93
|
-
/// режиме (`$set-strict-mode: false`).
|
|
94
|
-
/// Дополнительно выводит отладочные сообщения с помощью
|
|
95
|
-
/// `@debug` для детальной диагностики.
|
|
96
|
-
/// @require {variable} $set-strict-mode - Глобальная переменная,
|
|
97
|
-
/// определяющая режим работы. Если `true` - выбрасывает
|
|
98
|
-
/// ошибку, если `false` - выводит предупреждение.
|
|
99
|
-
/// @require {variable} $set-loglang - Глобальная переменная,
|
|
100
|
-
/// определяющая язык сообщений. Поддерживает значения `'ru'`
|
|
101
|
-
/// (русский) и другие (английский).
|
|
102
|
-
@function log-invalid-value(
|
|
103
|
-
$function-name,
|
|
104
|
-
$parameter,
|
|
105
|
-
$parameter-name,
|
|
106
|
-
$expected-values) {
|
|
107
|
-
|
|
108
|
-
// Получаем глобальные настройки из конфигурационного
|
|
109
|
-
// файла:
|
|
110
|
-
$-strict-mode: libconfigs.$set-strict-mode; // true = строгий режим (ошибки), false = режим предупреждений
|
|
111
|
-
$-loglang: libconfigs.$set-loglang; // язык сообщений ('ru' = русский, любое другое = английский)
|
|
112
|
-
$-log-message: ''; // переменная для хранения текста сообщения
|
|
113
|
-
|
|
114
|
-
// Если язык НЕ русский, используем английский текст
|
|
115
|
-
@if $-loglang != 'ru' {
|
|
116
|
-
// Английская версия: сообщает о неверном значении и
|
|
117
|
-
// показывает ожидаемые варианты:
|
|
118
|
-
$-log-message: 'An incorrect value was passed to the parameter «#{$parameter-name}» of the function «#{$function-name}». The parameter takes specific values: «#{$expected-values}».';
|
|
119
|
-
} @else {
|
|
120
|
-
// Русская версия: то же сообщение на русском языке:
|
|
121
|
-
$-log-message: 'В параметр «#{$parameter-name}» функции «#{$function-name}» передано неверное значение. Параметр принимает конкретные значения: «#{$expected-values}».';
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
// Если строгий режим ВЫКЛЮЧЕН (false)
|
|
125
|
-
@if $-strict-mode == false {
|
|
126
|
-
|
|
127
|
-
// Выводим предупреждение в консоль (не останавливает
|
|
128
|
-
// компиляцию):
|
|
129
|
-
@warn '⚠️ ' + $-log-message;
|
|
130
|
-
|
|
131
|
-
// Дополнительная отладочная информация для разработчика:
|
|
132
|
-
@debug '🟦 ┌ #{$parameter-name}'; // Синяя строка: показывает имя проблемного параметра
|
|
133
|
-
@debug '🟥 └⤬ #{$parameter}'; // Красная строка с крестиком: показывает переданное неверное значение
|
|
134
|
-
|
|
135
|
-
// Перебираем все ожидаемые значения и выводим их:
|
|
136
|
-
@each $value in $expected-values {
|
|
137
|
-
@debug '✅ └─ #{$value}'; // Зеленая строка с галочкой: каждое допустимое значение
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
} @else {
|
|
141
|
-
// СТРОГИЙ РЕЖИМ ВКЛЮЧЕН (true)
|
|
142
|
-
// Выводим ошибку, которая ПРЕРЫВАЕТ компиляцию:
|
|
143
|
-
@error '⛔ ' + $-log-message;
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
// Функция всегда возвращает `null`. Это удобно, чтобы
|
|
147
|
-
// использовать вызов этой функции как "заглушку".
|
|
148
|
-
// Например: `@return log-invalid-value(...);`
|
|
149
|
-
@return null;
|
|
150
|
-
|
|
151
|
-
}
|
package/test.md
DELETED
|
@@ -1,168 +0,0 @@
|
|
|
1
|
-
Напиши мне комментарии SassDoc для этой функции:
|
|
2
|
-
|
|
3
|
-
```scss
|
|
4
|
-
@function convert-camel2kebab($value) {
|
|
5
|
-
|
|
6
|
-
$-result: '';
|
|
7
|
-
$-length: string.length($value);
|
|
8
|
-
|
|
9
|
-
@for $i from 1 through $-length {
|
|
10
|
-
|
|
11
|
-
$-char: string.slice($value, $i, $i);
|
|
12
|
-
|
|
13
|
-
@if $-char == string.to-upper-case($-char) and $i > 1 {
|
|
14
|
-
$-result: $-result + '-' + string.to-lower-case($-char);
|
|
15
|
-
} @else {
|
|
16
|
-
$-result: $-result + string.to-lower-case($-char);
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
@return $-result;
|
|
22
|
-
|
|
23
|
-
}
|
|
24
|
-
```
|
|
25
|
-
но, так, как это сделано на примере этой функции:
|
|
26
|
-
|
|
27
|
-
```scss
|
|
28
|
-
/// Конвертирует значения из относительных единиц (`em`) в
|
|
29
|
-
/// пиксели (`px`).
|
|
30
|
-
///
|
|
31
|
-
/// Функция выполняет преобразование значений в единицах `em`
|
|
32
|
-
/// в пиксели относительно заданного базового размера. Это
|
|
33
|
-
/// особенно полезно для обратных расчетов, когда необходимо
|
|
34
|
-
/// получить точное пиксельное значение из относительного,
|
|
35
|
-
/// учитывая контекст родительского элемента.
|
|
36
|
-
///
|
|
37
|
-
/// Важные особенности функции:
|
|
38
|
-
/// - Преобразует `em` в `px` с указанием единиц `px`
|
|
39
|
-
/// - Поддерживает кастомный базовый размер (по умолчанию 16px)
|
|
40
|
-
/// - Удаляет единицы измерения для корректного математического
|
|
41
|
-
/// расчета
|
|
42
|
-
/// - Возвращает результат с единицами `px` для семантической
|
|
43
|
-
/// ясности
|
|
44
|
-
/// - Обрабатывает целые и дробные значения
|
|
45
|
-
/// - Полезен для расчета точных размеров из относительных
|
|
46
|
-
/// величин
|
|
47
|
-
/// - Обеспечивает обратное преобразование к `convert-px2em`
|
|
48
|
-
/// - Учитывает относительную природу `em` единиц
|
|
49
|
-
/// ---
|
|
50
|
-
/// @name convert-em2px
|
|
51
|
-
/// @group utilities-converters
|
|
52
|
-
/// @since 2025.12.27
|
|
53
|
-
/// @access public
|
|
54
|
-
/// @author Murad Rustamov (therteenten)
|
|
55
|
-
/// @link https://sourcecraft.dev/users/therteenten/overview SourceCraft - therteenten
|
|
56
|
-
/// @link https://sourcecraft.dev/omnisass/library SourceCraft - OmniSass
|
|
57
|
-
/// @link https://sass-lang.com/documentation/values/numbers См. также: Официальная документация Sass - Тип данных "Числа"
|
|
58
|
-
/// @link https://sass-lang.com/documentation/values/numbers#units См. также: Официальная документация Sass - Единицы измерения в числах
|
|
59
|
-
/// @link https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/Values_and_units См. также: MDN Web Docs - Значения и единицы измерения CSS
|
|
60
|
-
/// @link https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/Sizing_items_in_CSS См. также: MDN Web Docs - Размеры элементов в CSS
|
|
61
|
-
/// @link https://developer.mozilla.org/en-US/docs/Web/CSS/length См. также: MDN Web Docs - CSS-тип <length>
|
|
62
|
-
/// @link https://css-tricks.com/snippets/sass/ См. также: CSS-Tricks - Коллекция сниппетов Sass
|
|
63
|
-
/// @link https://css-tricks.com/snippets/css/guide-to-em-and-rem-units-in-css/ См. также: CSS-Tricks - Руководство по em и rem единицам в CSS
|
|
64
|
-
/// @link https://sass-guidelin.es/ru/#section-41 См. также: Sass Guidelines - Раздел про математические операции
|
|
65
|
-
/// @link https://www.w3schools.com/css/css_units.asp См. также: W3Schools - CSS единицы измерения
|
|
66
|
-
/// @example scss - Стандартное преобразование (базовый размер 16px)
|
|
67
|
-
/// @debug convert-em2px(1em); // 16px
|
|
68
|
-
/// @debug convert-em2px(0.5em); // 8px
|
|
69
|
-
/// @debug convert-em2px(1.5em); // 24px
|
|
70
|
-
/// @debug convert-em2px(2em); // 32px
|
|
71
|
-
/// @debug convert-em2px(3em); // 48px
|
|
72
|
-
/// @debug convert-em2px(0.25em); // 4px
|
|
73
|
-
/// @debug convert-em2px(0.0625em); // 1px
|
|
74
|
-
/// @example scss - Дробные значения em
|
|
75
|
-
/// @debug convert-em2px(0.78125em); // 12.5px
|
|
76
|
-
/// @debug convert-em2px(1.171875em); // 18.75px
|
|
77
|
-
/// @debug convert-em2px(0.03125em); // 0.5px
|
|
78
|
-
/// @debug convert-em2px(0.9em); // 14.4px
|
|
79
|
-
/// @debug convert-em2px(1.125em); // 18px
|
|
80
|
-
/// @debug convert-em2px(1.333em); // 21.328px
|
|
81
|
-
/// @example scss - Кастомный базовый размер
|
|
82
|
-
/// @debug convert-em2px(1em, 10px); // 10px (база 10px)
|
|
83
|
-
/// @debug convert-em2px(2em, 10px); // 20px (база 10px)
|
|
84
|
-
/// @debug convert-em2px(0.8em, 10px); // 8px (база 10px)
|
|
85
|
-
/// @debug convert-em2px(0.8em, 20px); // 16px (база 20px)
|
|
86
|
-
/// @debug convert-em2px(1.2em, 20px); // 24px (база 20px)
|
|
87
|
-
/// @debug convert-em2px(0.5em, 20px); // 10px (база 20px)
|
|
88
|
-
/// @example scss - Граничные случаи
|
|
89
|
-
/// @debug convert-em2px(0em); // 0px
|
|
90
|
-
/// @debug convert-em2px(0em, 16px); // 0px
|
|
91
|
-
/// @debug convert-em2px(10em); // 160px
|
|
92
|
-
/// @debug convert-em2px(62.5em); // 1000px
|
|
93
|
-
/// @debug convert-em2px(0.01em, 100px); // 1px
|
|
94
|
-
/// @debug convert-em2px(100em); // 1600px
|
|
95
|
-
/// @example scss - Отрицательные значения
|
|
96
|
-
/// @debug convert-em2px(-1em); // -16px
|
|
97
|
-
/// @debug convert-em2px(-0.5em); // -8px
|
|
98
|
-
/// @debug convert-em2px(-1.5em); // -24px
|
|
99
|
-
/// @debug convert-em2px(-2em, 8px); // -16px
|
|
100
|
-
/// @example scss - Безразмерные числа как аргументы
|
|
101
|
-
/// @debug convert-em2px(1, 16); // 16px (без единиц, но работает)
|
|
102
|
-
/// @debug convert-em2px(0.5, 16); // 8px
|
|
103
|
-
/// @debug convert-em2px(1.5, 16); // 24px
|
|
104
|
-
/// @example scss - Контекст вложенности em
|
|
105
|
-
/// // em зависят оass-lang.com/documentation/values/numbers#unitsт контекста родительского элемента
|
|
106
|
-
/// .parent { font-size: 20px; }
|
|
107
|
-
/// .child {
|
|
108
|
-
/// // 1em внутри .parent равно 20px
|
|
109
|
-
/// $px-value: convert-em2px(1em, 20px); // 20px
|
|
110
|
-
/// // 0.5em внутри .parent равно 10px
|
|
111
|
-
/// $px-value: convert-em2px(0.5em, 20px); // 10px
|
|
112
|
-
/// }
|
|
113
|
-
///
|
|
114
|
-
/// // Вложенные em множатся
|
|
115
|
-
/// .grandparent { font-size: 16px; }
|
|
116
|
-
/// .parent { font-size: 1.5em; } // 24px
|
|
117
|
-
/// .child {
|
|
118
|
-
/// // 1em внутри .parent равно 24px, а не 16px!
|
|
119
|
-
/// $px-value: convert-em2px(1em, 24px); // 24px
|
|
120
|
-
/// }
|
|
121
|
-
/// @example css - Результат
|
|
122
|
-
/// .parent {
|
|
123
|
-
/// font-size: 20px;
|
|
124
|
-
/// }
|
|
125
|
-
///
|
|
126
|
-
/// .grandparent {
|
|
127
|
-
/// font-size: 16px;
|
|
128
|
-
/// }
|
|
129
|
-
///
|
|
130
|
-
/// .parent {
|
|
131
|
-
/// font-size: 1.5em;
|
|
132
|
-
/// }
|
|
133
|
-
/// @param {Number} $em - Значение в единицах `em` для
|
|
134
|
-
/// конвертации. Может быть целым или дробным числом,
|
|
135
|
-
/// положительным или отрицательным. Единицы измерения (`em`)
|
|
136
|
-
/// удаляются для расчета, но ожидается, что значение
|
|
137
|
-
/// изначально выражено в `em`.
|
|
138
|
-
/// @param {Number} $base [16px] - Базовый размер в пикселях
|
|
139
|
-
/// для расчета. По умолчанию используется `16px`, что
|
|
140
|
-
/// соответствует стандартному размеру шрифта в большинстве
|
|
141
|
-
/// браузеров. Может быть любым положительным числом (обычно
|
|
142
|
-
/// в пикселях). Важно, что параметр представляет размер
|
|
143
|
-
/// шрифта родительского элемента, относительно которого
|
|
144
|
-
/// рассчитываются `em`.
|
|
145
|
-
/// @return {Number} - Значение в единицах `px`, рассчитанное
|
|
146
|
-
/// по формуле: `($em * $base) * 1px`. Возвращает дробное
|
|
147
|
-
/// или целое число с единицами измерения `px`.
|
|
148
|
-
/// @throws {Error} - Может выбросить ошибку при передаче
|
|
149
|
-
/// нечисловых значений. Для корректной работы оба
|
|
150
|
-
/// аргумента должны быть числами.
|
|
151
|
-
@function convert-em2px($em, $base: 16px) {
|
|
152
|
-
@return helpers.number-strip-unit($em) * helpers.number-strip-unit($base) * 1px;
|
|
153
|
-
}
|
|
154
|
-
```
|
|
155
|
-
|
|
156
|
-
но, учти несколько моментов:
|
|
157
|
-
|
|
158
|
-
1. Старайся описания укладывать такую же ширину строки
|
|
159
|
-
2. В строке `/// @since` нужно указать текущую дату в формате `YYYY.MM.DD`
|
|
160
|
-
3. Строку `/// @author Murad Rustamov (therteenten)` менять не нужно, как и строку `/// @group`
|
|
161
|
-
4. Первые две ссылки также необходимо не трогать:
|
|
162
|
-
```scss
|
|
163
|
-
/// @link https://sourcecraft.dev/users/therteenten/overview SourceCraft - therteenten
|
|
164
|
-
/// @link https://sourcecraft.dev/omnisass/library SourceCraft - OmniSass
|
|
165
|
-
```
|
|
166
|
-
5. Ссылки должны быть по теме, к которой относится смысл функции и ссылки должны быть в виде `/// @link https://some.com См. также: Название сайта - Название старницы` (данное правило не относится к первым двум ссылкам из пункта 4)
|
|
167
|
-
6. Количество ссылок не меньше 8
|
|
168
|
-
7. Примеры `/// @example` должны быть достоверны и без ошибок
|