@omnisass/library 0.2.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/CHANGELOG.md +5 -0
- package/LICENSE +21 -0
- package/README.md +2 -0
- package/_configs.scss +68 -0
- package/index.scss +95 -0
- package/modules/utilities/converters/_convert-camel2kebab.scss +186 -0
- package/modules/utilities/converters/_convert-em2px.scss +239 -0
- package/modules/utilities/converters/_convert-hex2rgb.scss +97 -0
- package/modules/utilities/converters/_convert-hex2rgba.scss +124 -0
- package/modules/utilities/converters/_convert-kebab2camel.scss +232 -0
- package/modules/utilities/converters/_convert-kebab2snake.scss +118 -0
- package/modules/utilities/converters/_convert-px2em.scss +236 -0
- package/modules/utilities/converters/_convert-px2rem.scss +180 -0
- package/modules/utilities/converters/_convert-rem2px.scss +207 -0
- package/modules/utilities/converters/_convert-snake2kebab.scss +173 -0
- package/modules/utilities/getters/color/_get-color-brightness.scss +138 -0
- package/modules/utilities/getters/color/_get-color-darkest.scss +178 -0
- package/modules/utilities/getters/list/_get-list-item-end.scss +114 -0
- package/modules/utilities/getters/list/_get-list-item-start.scss +109 -0
- package/modules/utilities/getters/list/_get-list-item.scss +179 -0
- package/modules/utilities/getters/number/_get-number-from-percent.scss +139 -0
- package/modules/utilities/getters/number/_get-number-height-by-ratio.scss +199 -0
- package/modules/utilities/getters/number/_get-number-max.scss +168 -0
- package/modules/utilities/getters/number/_get-number-min.scss +162 -0
- package/modules/utilities/getters/number/_get-number-percentage-of.scss +149 -0
- package/modules/utilities/getters/number/_get-number-unit.scss +111 -0
- package/modules/utilities/getters/number/_get-number-width-by-ratio.scss +223 -0
- package/modules/utilities/helpers/color/_color-blend-steps.scss +210 -0
- package/modules/utilities/helpers/color/_color-blend.scss +183 -0
- package/modules/utilities/helpers/color/_color-hue-shift.scss +148 -0
- package/modules/utilities/helpers/color/_color-scale.scss +208 -0
- package/modules/utilities/helpers/color/_color-shade.scss +113 -0
- package/modules/utilities/helpers/color/_color-tint.scss +118 -0
- package/modules/utilities/helpers/color/_color-triad.scss +141 -0
- package/modules/utilities/helpers/list/_list-dedupe.scss +146 -0
- package/modules/utilities/helpers/list/_list-insert-at.scss +166 -0
- package/modules/utilities/helpers/list/_list-merge.scss +86 -0
- package/modules/utilities/helpers/list/_list-remove-at.scss +160 -0
- package/modules/utilities/helpers/list/_list-sum-numbers-safe.scss +175 -0
- package/modules/utilities/helpers/list/_list-sum-numbers.scss +128 -0
- package/modules/utilities/helpers/misc/_url-encode.configs.scss +64 -0
- package/modules/utilities/helpers/misc/_url-encode.scss +148 -0
- package/modules/utilities/helpers/number/_number-ceil-to.scss +111 -0
- package/modules/utilities/helpers/number/_number-clamp-max.scss +92 -0
- package/modules/utilities/helpers/number/_number-clamp-min.scss +100 -0
- package/modules/utilities/helpers/number/_number-clamp.scss +109 -0
- package/modules/utilities/helpers/number/_number-denormalize.scss +172 -0
- package/modules/utilities/helpers/number/_number-fibonacci.scss +235 -0
- package/modules/utilities/helpers/number/_number-floor-to.scss +114 -0
- package/modules/utilities/helpers/number/_number-format-with-separator.scss +122 -0
- package/modules/utilities/helpers/number/_number-normalize.scss +160 -0
- package/modules/utilities/helpers/number/_number-random-between-int.scss +84 -0
- package/modules/utilities/helpers/number/_number-random-between.scss +120 -0
- package/modules/utilities/helpers/number/_number-range.scss +268 -0
- package/modules/utilities/helpers/number/_number-round-to-nearest.scss +131 -0
- package/modules/utilities/helpers/number/_number-round-to.scss +118 -0
- package/modules/utilities/helpers/number/_number-strip-unit.scss +97 -0
- package/modules/utilities/helpers/string/_string-capitalize.scss +84 -0
- package/modules/utilities/helpers/string/_string-replace.scss +69 -0
- package/modules/utilities/helpers/string/_string-trim-end.scss +62 -0
- package/modules/utilities/helpers/string/_string-trim-start.scss +62 -0
- package/modules/utilities/helpers/string/_string-trim.scss +69 -0
- package/modules/utilities/loggers/_log-invalid-type.scss +151 -0
- package/modules/utilities/loggers/_log-invalid-value.scss +151 -0
- package/modules/utilities/setters/_index.scss +3 -0
- package/modules/utilities/validators/color/_is-color-light.scss +132 -0
- package/modules/utilities/validators/color/_is-color-list.scss +124 -0
- package/modules/utilities/validators/list/_is-list-contained.scss +65 -0
- package/modules/utilities/validators/misc/_is-time.scss +115 -0
- package/modules/utilities/validators/number/_is-int-even.scss +69 -0
- package/modules/utilities/validators/number/_is-int-odd.scss +70 -0
- package/modules/utilities/validators/number/_is-int.scss +124 -0
- package/modules/utilities/validators/number/_is-number-has-unit.scss +85 -0
- package/modules/utilities/validators/number/_is-number-negative.scss +76 -0
- package/modules/utilities/validators/number/_is-number-positive.scss +74 -0
- package/modules/utilities/validators/number/_is-number-unitless.scss +88 -0
- package/modules/utilities/validators/number/_is-number-zero.scss +75 -0
- package/modules/utilities/validators/string/_is-string-contained.scss +108 -0
- package/modules/utilities/validators/string/_is-string-empty.scss +56 -0
- package/modules/utilities/validators/string/_is-string-ending-with.scss +66 -0
- package/modules/utilities/validators/string/_is-string-starting-with.scss +66 -0
- package/modules/utilities/validators/type-of/_is-boolean.scss +92 -0
- package/modules/utilities/validators/type-of/_is-color.scss +96 -0
- package/modules/utilities/validators/type-of/_is-list.scss +105 -0
- package/modules/utilities/validators/type-of/_is-map.scss +105 -0
- package/modules/utilities/validators/type-of/_is-number.scss +103 -0
- package/modules/utilities/validators/type-of/_is-string.scss +110 -0
- package/modules/utilities/validators/type-of/_is-type.scss +77 -0
- package/package.json +54 -0
- package/package.scss +156 -0
- package/test.md +168 -0
- package/test.scss +405 -0
- package/test.sh +149 -0
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
@use '../type-of/is-color' as type-of;
|
|
2
|
+
|
|
3
|
+
/// Проверяет, что все элементы в списке являются цветами.
|
|
4
|
+
///
|
|
5
|
+
/// Функция проходит по всем элементам списка и проверяет тип
|
|
6
|
+
/// каждого элемента. Если все элементы имеют тип `color`,
|
|
7
|
+
/// функция возвращает `true`. Если хотя бы один элемент не
|
|
8
|
+
/// является цветом, функция немедленно возвращает `false`.
|
|
9
|
+
///
|
|
10
|
+
/// Важные особенности функции:
|
|
11
|
+
/// - Проверяет тип каждого элемента с помощью `meta.type-of()`,
|
|
12
|
+
/// обёрткой которого является `is-color()`
|
|
13
|
+
/// - Возвращает `false` при первой же найденной нецветовой
|
|
14
|
+
/// записи
|
|
15
|
+
/// - Возвращает `true` для пустого списка (vacuous truth)
|
|
16
|
+
/// - Не выполняет дополнительных проверок формата цвета
|
|
17
|
+
/// - Игнорирует вложенные списки и другие структуры
|
|
18
|
+
/// - Использует локальные переменные с префиксом `$-` для
|
|
19
|
+
/// избежания конфликтов
|
|
20
|
+
/// ---
|
|
21
|
+
/// @name is-color-list
|
|
22
|
+
/// @group utilities-validators
|
|
23
|
+
/// @since 2026.01.03
|
|
24
|
+
/// @access public
|
|
25
|
+
/// @author Murad Rustamov (therteenten)
|
|
26
|
+
/// @link https://sourcecraft.dev/users/therteenten/overview SourceCraft - therteenten
|
|
27
|
+
/// @link https://sourcecraft.dev/omnisass/library SourceCraft - OmniSass
|
|
28
|
+
/// @link https://sass-lang.com/documentation/modules/meta#type-of См. также: Официальная документация Sass - Функция meta.type-of()
|
|
29
|
+
/// @link https://sass-lang.com/documentation/values/colors См. также: Официальная документация Sass - Тип данных "Цвета"
|
|
30
|
+
/// @link https://developer.mozilla.org/en-US/docs/Web/CSS/color_value MDN Web Docs - CSS значения цвета
|
|
31
|
+
/// @link https://css-tricks.com/snippets/sass/ См. также: CSS-Tricks - Коллекция сниппетов Sass
|
|
32
|
+
/// @link https://sass-guidelin.es/ru/#section-39 См. также: Sass Guidelines - Раздел про проверку типов
|
|
33
|
+
/// @link https://frontender.info/sass-type-checking/ См. также: Frontender Magazine - Проверка типов в Sass
|
|
34
|
+
/// @link https://www.w3schools.com/sass/sass_functions_color.php См. также: W3Schools - Функции для работы с цветами в Sass
|
|
35
|
+
/// @link https://habr.com/ru/post/247879/ См. также: Habr - Статья "Sass для верстальщика: проверки и валидация"
|
|
36
|
+
/// @example scss - Все элементы являются цветами
|
|
37
|
+
/// @debug is-color-list((#ff0000, #00ff00, #0000ff)); // true
|
|
38
|
+
/// @debug is-color-list((red, blue, green)); // true
|
|
39
|
+
/// @debug is-color-list((rgb(255, 0, 0), hsl(120, 100%, 50%))); // true
|
|
40
|
+
/// @debug is-color-list(()); // true (пустой список)
|
|
41
|
+
/// @example scss - Смешанные типы данных
|
|
42
|
+
/// @debug is-color-list((#ff0000, 10px, #0000ff)); // false
|
|
43
|
+
/// @debug is-color-list(("red", "blue", "green")); // false
|
|
44
|
+
/// @debug is-color-list((#fff, null, #000)); // false
|
|
45
|
+
/// @debug is-color-list((true, false, #ff0000)); // false
|
|
46
|
+
/// @example scss - Разные форматы цветов
|
|
47
|
+
/// @debug is-color-list((#f00, #ff0000, rgb(255, 0, 0))); // true
|
|
48
|
+
/// @debug is-color-list((hsl(0, 100%, 50%), rgba(255, 0, 0, 0.5))); // true
|
|
49
|
+
/// @debug is-color-list((currentColor, transparent)); // false (?)
|
|
50
|
+
/// @example scss - Практическое использование в миксинах
|
|
51
|
+
/// @use 'sass:list';
|
|
52
|
+
///
|
|
53
|
+
/// @mixin set-colors($colors) {
|
|
54
|
+
/// @if not is-color-list($colors) {
|
|
55
|
+
/// @error "Параметр $colors должен содержать только цвета";
|
|
56
|
+
/// }
|
|
57
|
+
/// color: list.nth($colors, 1);
|
|
58
|
+
/// background-color: list.nth($colors, 2);
|
|
59
|
+
/// border-color: list.nth($colors, 3);
|
|
60
|
+
/// }
|
|
61
|
+
/// // Корректно:
|
|
62
|
+
/// .test {
|
|
63
|
+
/// @include set-colors((#ff0000, #00ff00, #0000ff));
|
|
64
|
+
/// }
|
|
65
|
+
/// // Ошибка:
|
|
66
|
+
/// // @include set-colors((#ff0000, 10px, #0000ff));
|
|
67
|
+
/// @example css - Результат
|
|
68
|
+
/// .test {
|
|
69
|
+
/// color: #ff0000;
|
|
70
|
+
/// background-color: #00ff00;
|
|
71
|
+
/// border-color: #0000ff;
|
|
72
|
+
/// }
|
|
73
|
+
/// @example scss - Практическое использование в функциях
|
|
74
|
+
/// @use 'sass:math';
|
|
75
|
+
/// @use 'sass:color';
|
|
76
|
+
///
|
|
77
|
+
/// @function calculate-color-brightness($colors) {
|
|
78
|
+
/// @if not is-color-list($colors) {
|
|
79
|
+
/// @return null;
|
|
80
|
+
/// }
|
|
81
|
+
/// $total: 0;
|
|
82
|
+
/// @each $color in $colors {
|
|
83
|
+
/// $total: $total + color.channel($color, "lightness", $space: hsl);
|
|
84
|
+
/// }
|
|
85
|
+
/// @return math.div($total, list.length($colors));
|
|
86
|
+
/// }
|
|
87
|
+
/// @debug calculate-color-brightness((#000, #fff)); // 50
|
|
88
|
+
/// @debug calculate-color-brightness((#000, 10px)); // null
|
|
89
|
+
/// @example scss - Валидация палитры цветов
|
|
90
|
+
/// @use 'sass:map';
|
|
91
|
+
///
|
|
92
|
+
/// $palette: (primary: #3498db, secondary: #2ecc71, accent: #e74c3c);
|
|
93
|
+
/// @debug is-color-list(map.values($palette)); // true
|
|
94
|
+
///
|
|
95
|
+
/// $invalid-palette: (primary: #3498db, size: 16px, accent: #e74c3c);
|
|
96
|
+
/// @debug is-color-list(map.values($invalid-palette)); // false
|
|
97
|
+
/// @param {List} $list - Список значений, который может
|
|
98
|
+
/// содержать элементы разных типов. Функция проверит
|
|
99
|
+
/// каждый элемент на соответствие типу `color`.
|
|
100
|
+
/// @return {Boolean} - Возвращает `true`, если все элементы
|
|
101
|
+
/// в списке являются цветами. Возвращает `false`, если
|
|
102
|
+
/// хотя бы один элемент не является цветом. Для пустого
|
|
103
|
+
/// списка возвращает `true`.
|
|
104
|
+
/// @throws {Error} - Не выбрасывает ошибок, безопасно
|
|
105
|
+
/// обрабатывает любые типы данных.
|
|
106
|
+
@function is-color-list($list) {
|
|
107
|
+
|
|
108
|
+
@each $-item in $list {
|
|
109
|
+
|
|
110
|
+
@if not type-of.is-color($-item) {
|
|
111
|
+
@return false;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
@return true;
|
|
117
|
+
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
@use 'sass:list';
|
|
2
|
+
|
|
3
|
+
/// Проверяет, содержится ли значение в указанном списке.
|
|
4
|
+
///
|
|
5
|
+
/// Функция проверяет наличие заданного значения в переданном
|
|
6
|
+
/// списке. Использует функцию `list.index()` для поиска
|
|
7
|
+
/// значения и преобразует результат в булево значение
|
|
8
|
+
/// (`true` если найдено, `false` если нет).
|
|
9
|
+
///
|
|
10
|
+
/// Функция преобразует результат `list.index()` в
|
|
11
|
+
/// булево значение:
|
|
12
|
+
/// - `list.index()` возвращает `null`, если значение не
|
|
13
|
+
/// найдено
|
|
14
|
+
/// - `null != list.index(...)` возвращает `false` для `null`
|
|
15
|
+
/// и `true` для любого индекса
|
|
16
|
+
///
|
|
17
|
+
/// Это стандартный паттерн для проверки наличия элемента в списке Sass.
|
|
18
|
+
/// ---
|
|
19
|
+
/// @name is-list-contained
|
|
20
|
+
/// @group utilities-validators
|
|
21
|
+
/// @since 2026.01.03
|
|
22
|
+
/// @access public
|
|
23
|
+
/// @author Murad Rustamov (therteenten) [адаптация]
|
|
24
|
+
/// @author Неизвестный автор [идея не моя, но автора исходной функции не помню уже]
|
|
25
|
+
/// @link https://sourcecraft.dev/users/therteenten/overview SourceCraft - therteenten
|
|
26
|
+
/// @link https://sourcecraft.dev/omnisass/library SourceCraft - OmniSass
|
|
27
|
+
/// @link https://sass-lang.com/documentation/modules/list#index См. также: Официальная документация Sass - Функция list.index()
|
|
28
|
+
/// @link https://sass-lang.com/documentation/values/lists См. также: Официальная документация Sass - Тип данных "Списки"
|
|
29
|
+
/// @link https://developer.mozilla.org/en-US/docs/Web/CSS/:nth-child См. также: MDN Web Docs - Псевдокласс :nth-child
|
|
30
|
+
/// @link https://stackoverflow.com/questions/29620552/check-if-value-exists-in-list-in-sass См. также: Stack Overflow - Проверка наличия значения в списке Sass
|
|
31
|
+
/// @link https://css-tricks.com/snippets/sass/ См. также: CSS-Tricks - Коллекция сниппетов Sass
|
|
32
|
+
/// @link https://sass-guidelin.es/ru/#validation-functions См. также: Sass Guidelines - Функции валидации
|
|
33
|
+
/// @link https://frontender.info/sass-lists/ См. также: Frontender Magazine - Работа со списками в Sass
|
|
34
|
+
/// @link https://www.w3schools.com/sass/sass_functions_list.php См. также: W3Schools - Функции для работы со списками в Sass
|
|
35
|
+
/// @example scss - Проверка наличия цвета в палитре
|
|
36
|
+
/// $colors: red, blue, green, yellow;
|
|
37
|
+
/// @debug is-list-contained($colors, blue); // true
|
|
38
|
+
/// @debug is-list-contained($colors, purple); // false
|
|
39
|
+
/// @example scss - Проверка наличия размера в допустимых значениях
|
|
40
|
+
/// $sizes: small, medium, large, x-large;
|
|
41
|
+
/// @debug is-list-contained($sizes, medium); // true
|
|
42
|
+
/// @debug is-list-contained($sizes. huge); // false
|
|
43
|
+
/// @example scss - Проверка числовых значений
|
|
44
|
+
/// $numbers: 1, 2, 3, 4, 5;
|
|
45
|
+
/// @debug is-list-contained($numbers, 3); // true
|
|
46
|
+
/// @debug is-list-contained($numbers, 10); // false
|
|
47
|
+
/// @example scss - Использование для валидации параметров
|
|
48
|
+
/// @mixin set-position($position) {
|
|
49
|
+
/// $allowed-positions: top, right, bottom, left, center;
|
|
50
|
+
///
|
|
51
|
+
/// @if not is-list-contained($position, $allowed-positions) {
|
|
52
|
+
/// @error "Недопустимая позиция: #{$position}. Используйте: #{$allowed-positions}";
|
|
53
|
+
/// }
|
|
54
|
+
///
|
|
55
|
+
/// position: $position;
|
|
56
|
+
/// }
|
|
57
|
+
/// @param {*} $value - Значение для поиска в списке
|
|
58
|
+
/// @param {List} $list - Список, в котором выполняется поиск
|
|
59
|
+
/// @return {Boolean} - Возвращает `true`, если значение
|
|
60
|
+
/// найдено в списке, иначе возвращает `false`.
|
|
61
|
+
/// @throws Не выбрасывает ошибок, безопасно работает с
|
|
62
|
+
/// любыми списками
|
|
63
|
+
@function is-list-contained($list, $value) {
|
|
64
|
+
@return (null != list.index($list, $value));
|
|
65
|
+
}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
@use 'sass:meta';
|
|
2
|
+
@use 'sass:list';
|
|
3
|
+
@use 'sass:math';
|
|
4
|
+
|
|
5
|
+
/// Проверяет, является ли значение корректным
|
|
6
|
+
/// временным значением.
|
|
7
|
+
///
|
|
8
|
+
/// Функция проверяет тип и единицы измерения переданного
|
|
9
|
+
/// значения для определения, можно ли его использовать в
|
|
10
|
+
/// качестве значения времени. Поддерживаются значения с
|
|
11
|
+
/// единицами измерения секунды (s), миллисекунды (ms) и
|
|
12
|
+
/// часы (h), а также нулевое значение без единиц измерения (0).
|
|
13
|
+
/// ---
|
|
14
|
+
/// @name is-time
|
|
15
|
+
/// @group utilities-validators
|
|
16
|
+
/// @since 2025.12.27
|
|
17
|
+
/// @access public
|
|
18
|
+
/// @author Halil İbrahim Çakıroğlu
|
|
19
|
+
/// @author Murad Rustamov (therteenten) [адаптация]
|
|
20
|
+
/// @link https://github.com/selfishprimate GitHub - Halil İbrahim Çakıroğlu
|
|
21
|
+
/// @link https://github.com/selfishprimate/gerillass/blob/master/scss/utilities/_is-time.scss GitHub - Исходник
|
|
22
|
+
/// @link https://sourcecraft.dev/users/therteenten/overview SourceCraft - therteenten
|
|
23
|
+
/// @link https://sourcecraft.dev/omnisass/library SourceCraft - OmniSass
|
|
24
|
+
/// @link https://sass-lang.com/documentation/modules/meta#type-of См. также: Официальная документация Sass - Функция meta.type-of()
|
|
25
|
+
/// @link https://sass-lang.com/documentation/modules/meta См. также: Официальная документация Sass - Модуль meta
|
|
26
|
+
/// @link https://sass-lang.com/documentation/modules/math#unit См. также: Официальная документация Sass - Функция math.unit()
|
|
27
|
+
/// @link https://sass-lang.com/documentation/modules/math См. также: Официальная документация Sass - Модуль math
|
|
28
|
+
/// @link https://sass-lang.com/documentation/modules/list#index См. также: Официальная документация Sass - Функция list.index()
|
|
29
|
+
/// @link https://sass-lang.com/documentation/modules/list См. также: Официальная документация Sass - Модуль list
|
|
30
|
+
/// @link https://sass-lang.com/documentation/values/numbers См. также: Официальная документация Sass - Тип данных "Числа" (Numbers)
|
|
31
|
+
/// @link https://sass-lang.com/documentation/values/numbers#units См. также: Официальная документация Sass - Единицы измерения
|
|
32
|
+
/// @link https://sass-lang.com/documentation/at-rules/function См. также: Официальная документация Sass - Правило @function
|
|
33
|
+
/// @link https://sass-lang.com/documentation/style-rules/declarations#custom-properties См. также: Документация Sass - Пользовательские функции
|
|
34
|
+
/// @link https://developer.mozilla.org/en-US/docs/Web/CSS/time См. также: MDN Web Docs - CSS тип данных <time>
|
|
35
|
+
/// @link https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Values_and_Units См. также: MDN Web Docs - CSS значения и единицы измерения
|
|
36
|
+
/// @link https://www.w3schools.com/sass/sass_functions_numeric.php См. также: W3Schools - Числовые функции в Sass
|
|
37
|
+
/// @link https://www.sass.hk/docs/ См. также: Китайская документация Sass - Полное руководство
|
|
38
|
+
/// @link https://sass-guidelin.es/ru/#section-39 См. также: Sass Guidelines - Раздел про проверку типов данных
|
|
39
|
+
/// @link https://github.com/sass/sass/blob/main/accepted/module-system.md См. также: GitHub - Документация по модульной системе Sass
|
|
40
|
+
/// @link https://stackoverflow.com/questions/30867526/how-to-check-the-type-of-a-variable-is-a-string-or-a-number-in-scss См. также: Stack Overflow - Как проверить тип переменной в Sass
|
|
41
|
+
/// @link https://stackoverflow.com/questions/12528457/determine-type-of-a-variable-in-sass См. также: Stack Overflow - Определение типа переменной в Sass
|
|
42
|
+
/// @link https://css-tricks.com/snippets/sass/ См. также: CSS-Tricks - Коллекция сниппетов Sass
|
|
43
|
+
/// @link https://web.dev/learn/css/units/ См. также: web.dev - Изучение единиц измерения в CSS
|
|
44
|
+
/// @link https://frontender.info/sass-numbers/ См. также: Frontender Magazine - Работа с числами в Sass
|
|
45
|
+
/// @link https://habr.com/ru/post/247887/ См. также: Habr - Статья "Sass для верстальщика: числа и единицы измерения"
|
|
46
|
+
/// @link https://www.sitepoint.com/sass-basics-operators/ См. также: SitePoint - Основы Sass: операторы
|
|
47
|
+
/// @link https://www.freecodecamp.org/news/sass-data-types/ См. также: freeCodeCamp - Типы данных в Sass
|
|
48
|
+
/// @link https://code.tutsplus.com/tutorials/understanding-sass-data-types--cms-22110 См. также: Envato Tuts+ - Понимание типов данных в Sass
|
|
49
|
+
/// @link https://dev.to/kathryngrayson/sass-type-checking-1p6c См. также: Dev.to - Проверка типов в Sass
|
|
50
|
+
/// @link https://css-live.ru/articles/uskorenie-razrabotki-s-pomoshhyu-sass.html См. также: CSS-Live - Ускорение разработки с помощью Sass
|
|
51
|
+
/// @link https://itchief.ru/sass/data-types См. также: itchief - Типы данных в Sass
|
|
52
|
+
/// @link https://htmlacademy.ru/blog/boost/tools/sass-2 См. также: HTML Academy - Sass: переменные и типы данных
|
|
53
|
+
/// @link https://metanit.com/web/html5/13.3.php См. также: Metanit - Типы данных в Sass
|
|
54
|
+
/// @link https://ru.hexlet.io/courses/sass-basics/lessons/data-types/theory_unit См. также: Hexlet - Типы данных в Sass
|
|
55
|
+
/// @link https://www.youtube.com/watch?v=Zz6eOVaaelI См. также: YouTube - Sass Tutorial #4 - Data Types (The Net Ninja)
|
|
56
|
+
/// @link https://www.youtube.com/watch?v=URtUXqOQq0k См. также: YouTube - Типы данных в Sass (на русском)
|
|
57
|
+
/// @link https://codelabs.developers.google.com/codelabs/cloud-sass-cli#5 См. также: Google Codelabs - Создание пользовательских функций в Sass
|
|
58
|
+
/// @link https://www.npmjs.com/package/sass См. также: npm - Документация пакета Dart Sass
|
|
59
|
+
/// @link https://marketplace.visualstudio.com/items?itemName=Syler.sass-indented См. также: VS Code Marketplace - Поддержка синтаксиса Sass
|
|
60
|
+
/// @link https://stylelint.io/user-guide/rules/time-min-milliseconds/ См. также: Stylelint - Правила для временных значений
|
|
61
|
+
/// @link https://sass-lang.com/documentation/js-api См. также: JavaScript API - Работа с Sass через JavaScript
|
|
62
|
+
/// @link https://sass-lang.com/documentation/cli/dart-sass См. также: CLI - Командная строка Dart Sass
|
|
63
|
+
/// @link https://sass-lang.com/documentation/breaking-changes/module-system См. также: Breaking Changes - Изменения в модульной системе
|
|
64
|
+
/// @link https://sass-lang.com/documentation/values/booleans См. также: Документация Sass - Логические значения
|
|
65
|
+
/// @link https://sass-lang.com/documentation/values/strings См. также: Документация Sass - Строки
|
|
66
|
+
/// @link https://sass-lang.com/documentation/values/colors См. также: Документация Sass - Цвета
|
|
67
|
+
/// @link https://sass-lang.com/documentation/values/lists См. также: Документация Sass - Списки
|
|
68
|
+
/// @link https://sass-lang.com/documentation/values/null См. также: Документация Sass - Значение null
|
|
69
|
+
/// @link https://sass-lang.com/documentation/values/maps См. также: Документация Sass - Карты
|
|
70
|
+
/// @link https://sass-lang.com/documentation/interpolation См. также: Документация Sass - Интерполяция
|
|
71
|
+
/// @link https://sass-lang.com/documentation/modules/math#abs См. также: Документация Sass - Функция math.abs()
|
|
72
|
+
/// @link https://sass-lang.com/documentation/modules/math#compatible См. также: Документация Sass - Функция math.compatible()
|
|
73
|
+
/// @link https://sass-lang.com/documentation/modules/math#unitless См. также: Документация Sass - Функция math.unitless()
|
|
74
|
+
/// @link https://developer.mozilla.org/en-US/docs/Web/CSS/transition-duration См. также: MDN Web Docs - CSS свойство transition-duration
|
|
75
|
+
/// @link https://developer.mozilla.org/en-US/docs/Web/CSS/animation-duration См. также: MDN Web Docs - CSS свойство animation-duration
|
|
76
|
+
/// @link https://developer.mozilla.org/en-US/docs/Web/CSS/transition-timing-function См. также: MDN Web Docs - CSS свойство transition-timing-function
|
|
77
|
+
/// @link https://www.w3.org/TR/css-values-4/#time W3C CSS Values - Спецификация типа <time>
|
|
78
|
+
/// @link https://www.w3.org/TR/css-values-4/#lengths W3C CSS Values - Единицы измерения длины и времени
|
|
79
|
+
/// @example scss - Корректные значения времени
|
|
80
|
+
/// @debug is-time(1s); // true
|
|
81
|
+
/// @debug is-time(0.5s); // true
|
|
82
|
+
/// @debug is-time(250ms); // true
|
|
83
|
+
/// @debug is-time(1.5h); // true
|
|
84
|
+
/// @debug is-time(0); // true
|
|
85
|
+
/// @example scss - Некорректные значения времени
|
|
86
|
+
/// @debug is-time(1px) ; // false
|
|
87
|
+
/// @debug is-time(1em) ; // false
|
|
88
|
+
/// @debug is-time(10); // false (не 0 и без единиц)
|
|
89
|
+
/// @debug is-time("1s"); // false (строка вместо числа)
|
|
90
|
+
/// @debug is-time(null); // false
|
|
91
|
+
/// @debug is-time(true); // false
|
|
92
|
+
/// @example scss - Использование в условных конструкциях
|
|
93
|
+
/// $duration: 1s;
|
|
94
|
+
///
|
|
95
|
+
/// .test {
|
|
96
|
+
/// @if is-time($duration) {
|
|
97
|
+
/// transition-duration: $duration;
|
|
98
|
+
/// } @else {
|
|
99
|
+
/// @error "Некорректное значение времени: #{$duration}";
|
|
100
|
+
/// }
|
|
101
|
+
/// }
|
|
102
|
+
/// @param {*} $value - Значение для проверки. Может быть
|
|
103
|
+
/// любого типа, но функция ожидает число с соответствующими
|
|
104
|
+
/// единицами измерения или ноль.
|
|
105
|
+
/// @return {Boolean} - Возвращает `true`, если значение является
|
|
106
|
+
/// корректным временным значением, иначе возвращает `false`.
|
|
107
|
+
@function is-time($value) {
|
|
108
|
+
@for $i from 1 through list.length($value) {
|
|
109
|
+
@if (meta.type-of($value) == 'number' and list.index('ms' 's' 'h', math.unit($value)) != null) or $value == 0 {
|
|
110
|
+
@return true;
|
|
111
|
+
} @else {
|
|
112
|
+
@return false;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
@use './is-int' as *;
|
|
2
|
+
|
|
3
|
+
/// Проверяет, является ли целое число четным.
|
|
4
|
+
///
|
|
5
|
+
/// Функция выполняет двойную проверку: сначала убеждается,
|
|
6
|
+
/// что значение является целым числом (integer), затем
|
|
7
|
+
/// проверяет, делится ли оно на 2 без остатка. Если значение
|
|
8
|
+
/// не является целым числом, функция возвращает `false`.
|
|
9
|
+
///
|
|
10
|
+
/// Важные особенности функции:
|
|
11
|
+
/// - Проверяет, что значение является целым числом (is-int())
|
|
12
|
+
/// - Проверяет делимость на 2 без остатка (оператор %)
|
|
13
|
+
/// - Возвращает false для нецелых чисел, даже если они близки
|
|
14
|
+
/// к четным
|
|
15
|
+
/// - Не выполняет автоматического округления или
|
|
16
|
+
/// преобразования типов
|
|
17
|
+
/// - Использует математический оператор модуля для проверки
|
|
18
|
+
/// четности
|
|
19
|
+
/// ---
|
|
20
|
+
/// @name is-int-even
|
|
21
|
+
/// @group utilities-validators
|
|
22
|
+
/// @since 2026.01.03
|
|
23
|
+
/// @access public
|
|
24
|
+
/// @author Murad Rustamov (therteenten)
|
|
25
|
+
/// @link https://sourcecraft.dev/users/therteenten/overview SourceCraft - therteenten
|
|
26
|
+
/// @link https://sourcecraft.dev/omnisass/library SourceCraft - OmniSass
|
|
27
|
+
/// @link https://sass-lang.com/documentation/operators/numeric#modulo См. также: Официальная документация Sass - Оператор модуля (%)
|
|
28
|
+
/// @link https://sass-lang.com/documentation/values/numbers См. также: Официальная документация Sass - Тип данных "Числа"
|
|
29
|
+
/// @link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Remainder См. также: MDN Web Docs - Оператор остатка от деления
|
|
30
|
+
/// @link https://css-tricks.com/snippets/sass/ См. также: CSS-Tricks - Коллекция сниппетов Sass
|
|
31
|
+
/// @link https://sass-guidelin.es/ru/#section-39 См. также: Sass Guidelines - Раздел про проверку типов
|
|
32
|
+
/// @link https://frontender.info/sass-type-checking/ См. также: Frontender Magazine - Проверка типов в Sass
|
|
33
|
+
/// @link https://www.w3schools.com/sass/sass_functions_numeric.php См. также: W3Schools - Числовые функции в Sass
|
|
34
|
+
/// @link https://habr.com/ru/post/247887/ См. также: Habr - Статья "Sass для верстальщика: числа и математика"
|
|
35
|
+
/// @example scss - Четные целые числа
|
|
36
|
+
/// @debug is-int-even(0); // true
|
|
37
|
+
/// @debug is-int-even(2); // true
|
|
38
|
+
/// @debug is-int-even(10); // true
|
|
39
|
+
/// @debug is-int-even(-4); // true
|
|
40
|
+
/// @debug is-int-even(100); // true
|
|
41
|
+
/// @example scss - Нечетные целые числа
|
|
42
|
+
/// @debug is-int-even(1); // false
|
|
43
|
+
/// @debug is-int-even(3); // false
|
|
44
|
+
/// @debug is-int-even(7); // false
|
|
45
|
+
/// @debug is-int-even(-5); // false
|
|
46
|
+
/// @debug is-int-even(99); // false
|
|
47
|
+
/// @example scss - Нецелые числа (всегда false)
|
|
48
|
+
/// @debug is-int-even(2.5); // false
|
|
49
|
+
/// @debug is-int-even(3.14); // false
|
|
50
|
+
/// @debug is-int-even(10.0); // true (10.0 считается целым в Sass)
|
|
51
|
+
/// @debug is-int-even(2.000001); // false
|
|
52
|
+
/// @example scss - Нечисловые значения
|
|
53
|
+
/// @debug is-int-even("2"); // false
|
|
54
|
+
/// @debug is-int-even(#ff0000); // false
|
|
55
|
+
/// @debug is-int-even(true); // false
|
|
56
|
+
/// @debug is-int-even(null); // false
|
|
57
|
+
/// @debug is-int-even((1, 2, 3)); // false
|
|
58
|
+
/// @param {*} $value - Значение для проверки. Может быть
|
|
59
|
+
/// любого типа, но функция вернет `true` только для
|
|
60
|
+
/// целых чисел, которые делятся на 2 без остатка.
|
|
61
|
+
/// @return {Boolean} - Возвращает `true`, если значение
|
|
62
|
+
/// является целым числом и делится на 2 без остатка.
|
|
63
|
+
/// Во всех остальных случаях возвращает `false`,
|
|
64
|
+
/// включая нецелые числа и значения других типов.
|
|
65
|
+
/// @throws {Error} - Не выбрасывает ошибок, безопасно
|
|
66
|
+
/// обрабатывает значения любого типа.
|
|
67
|
+
@function is-int-even($value) {
|
|
68
|
+
@return is-int($value) and $value % 2 == 0;
|
|
69
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
@use './is-int' as *;
|
|
2
|
+
|
|
3
|
+
/// Проверяет, является ли целое число нечетным.
|
|
4
|
+
///
|
|
5
|
+
/// Функция выполняет двойную проверку: сначала убеждается, что
|
|
6
|
+
/// значение является целым числом (integer), затем проверяет,
|
|
7
|
+
/// что оно не делится на 2 без остатка. Если значение не
|
|
8
|
+
/// является целым числом, функция возвращает `false`.
|
|
9
|
+
///
|
|
10
|
+
/// Важные особенности функции:
|
|
11
|
+
/// - Проверяет, что значение является целым числом (is-int())
|
|
12
|
+
/// - Проверяет, что остаток от деления на 2 не равен нулю
|
|
13
|
+
/// (оператор %)
|
|
14
|
+
/// - Возвращает false для нецелых чисел, даже если они близки
|
|
15
|
+
/// к нечетным
|
|
16
|
+
/// - Не выполняет автоматического округления или
|
|
17
|
+
/// преобразования типов
|
|
18
|
+
/// - Использует математический оператор модуля для проверки
|
|
19
|
+
/// нечетности
|
|
20
|
+
/// ---
|
|
21
|
+
/// @name is-int-odd
|
|
22
|
+
/// @group utilities-validators
|
|
23
|
+
/// @since 2026.01.03
|
|
24
|
+
/// @access public
|
|
25
|
+
/// @author Murad Rustamov (therteenten)
|
|
26
|
+
/// @link https://sourcecraft.dev/users/therteenten/overview SourceCraft - therteenten
|
|
27
|
+
/// @link https://sourcecraft.dev/omnisass/library SourceCraft - OmniSass
|
|
28
|
+
/// @link https://sass-lang.com/documentation/operators/numeric#modulo См. также: Официальная документация Sass - Оператор модуля (%)
|
|
29
|
+
/// @link https://sass-lang.com/documentation/values/numbers См. также: Официальная документация Sass - Тип данных "Числа"
|
|
30
|
+
/// @link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Remainder См. также: MDN Web Docs - Оператор остатка от деления
|
|
31
|
+
/// @link https://css-tricks.com/snippets/sass/ См. также: CSS-Tricks - Коллекция сниппетов Sass
|
|
32
|
+
/// @link https://sass-guidelin.es/ru/#section-39 См. также: Sass Guidelines - Раздел про проверку типов
|
|
33
|
+
/// @link https://frontender.info/sass-type-checking/ См. также: Frontender Magazine - Проверка типов в Sass
|
|
34
|
+
/// @link https://www.w3schools.com/sass/sass_functions_numeric.php См. также: W3Schools - Числовые функции в Sass
|
|
35
|
+
/// @link https://habr.com/ru/post/247887/ См. также: Habr - Статья "Sass для верстальщика: числа и математика"
|
|
36
|
+
/// @example scss - Нечетные целые числа
|
|
37
|
+
/// @debug is-int-odd(1); // true
|
|
38
|
+
/// @debug is-int-odd(3); // true
|
|
39
|
+
/// @debug is-int-odd(7); // true
|
|
40
|
+
/// @debug is-int-odd(-5); // true
|
|
41
|
+
/// @debug is-int-odd(99); // true
|
|
42
|
+
/// @example scss - Четные целые числа
|
|
43
|
+
/// @debug is-int-odd(0); // false
|
|
44
|
+
/// @debug is-int-odd(2); // false
|
|
45
|
+
/// @debug is-int-odd(10); // false
|
|
46
|
+
/// @debug is-int-odd(-4); // false
|
|
47
|
+
/// @debug is-int-odd(100); // false
|
|
48
|
+
/// @example scss - Нецелые числа (всегда false)
|
|
49
|
+
/// @debug is-int-odd(1.5); // false
|
|
50
|
+
/// @debug is-int-odd(3.14); // false
|
|
51
|
+
/// @debug is-int-odd(5.0); // false (5.0 считается целым в Sass, поэтому true)
|
|
52
|
+
/// @debug is-int-odd(1.000001); // false
|
|
53
|
+
/// @example scss - Нечисловые значения
|
|
54
|
+
/// @debug is-int-odd("1"); // false
|
|
55
|
+
/// @debug is-int-odd(#ff0000); // false
|
|
56
|
+
/// @debug is-int-odd(false); // false
|
|
57
|
+
/// @debug is-int-odd(null); // false
|
|
58
|
+
/// @debug is-int-odd((1, 2, 3)); // false
|
|
59
|
+
/// @param {*} $value - Значение для проверки. Может быть
|
|
60
|
+
/// любого типа, но функция вернет `true` только для
|
|
61
|
+
/// целых чисел, которые не делятся на 2 без остатка.
|
|
62
|
+
/// @return {Boolean} - Возвращает `true`, если значение
|
|
63
|
+
/// является целым числом и не делится на 2 без остатка.
|
|
64
|
+
/// Во всех остальных случаях возвращает `false`,
|
|
65
|
+
/// включая нецелые числа и значения других типов.
|
|
66
|
+
/// @throws {Error} - Не выбрасывает ошибок, безопасно
|
|
67
|
+
/// обрабатывает значения любого типа.
|
|
68
|
+
@function is-int-odd($value) {
|
|
69
|
+
@return is-int($value) and $value % 2 != 0;
|
|
70
|
+
}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
@use 'sass:math';
|
|
2
|
+
@use 'sass:meta';
|
|
3
|
+
|
|
4
|
+
/// Проверяет, является ли число целым (integer).
|
|
5
|
+
///
|
|
6
|
+
/// Функция проверяет, что переданное значение
|
|
7
|
+
/// является числом и не имеет дробной части.
|
|
8
|
+
/// Если передано не числовое значение, функция
|
|
9
|
+
/// возвращает `false`.
|
|
10
|
+
///
|
|
11
|
+
/// Полезно для валидации параметров, которые
|
|
12
|
+
/// должны быть целыми числами (например,
|
|
13
|
+
/// индексы, счётчики).
|
|
14
|
+
///
|
|
15
|
+
/// > В исходной функции от Zsolt Pentz есть
|
|
16
|
+
/// > предупреждение, если проверяемое значение не
|
|
17
|
+
/// > число. Я переписал функцию так, чтобы она
|
|
18
|
+
/// > возвращала только `true` или `false`. Проверку и
|
|
19
|
+
/// > вывод ошибки можно написать отдельно, возможно, я
|
|
20
|
+
/// > это сделаю, так как это несложно.
|
|
21
|
+
/// > В примере 2 "Использование в условиях" показано как
|
|
22
|
+
/// > это реализовать.
|
|
23
|
+
/// ---
|
|
24
|
+
/// @name is-int
|
|
25
|
+
/// @group utilities-validators
|
|
26
|
+
/// @since 2026.01.03
|
|
27
|
+
/// @access public
|
|
28
|
+
/// @author Zsolt Pentz
|
|
29
|
+
/// @author Murad Rustamov (therteenten) [адаптация]
|
|
30
|
+
/// @link https://github.com/pentzzsolt GitHub - Zsolt Pentz
|
|
31
|
+
/// @link https://github.com/pentzzsolt/sass-recursive-map-merge GitHub - Источник функции
|
|
32
|
+
/// @link https://sourcecraft.dev/users/therteenten/overview SourceCraft - therteenten
|
|
33
|
+
/// @link https://sourcecraft.dev/omnisass/library SourceCraft - OmniSass
|
|
34
|
+
/// @link https://sass-lang.com/documentation/modules/meta#type-of См. также: Официальная документация Sass - Функция meta.type-of()
|
|
35
|
+
/// @link https://sass-lang.com/documentation/modules/meta См. также: Официальная документация Sass - Модуль meta
|
|
36
|
+
/// @link https://sass-lang.com/documentation/modules/math#round См. также: Официальная документация Sass - Функция math.round()
|
|
37
|
+
/// @link https://sass-lang.com/documentation/modules/math См. также: Официальная документация Sass - Модуль math
|
|
38
|
+
/// @link https://sass-lang.com/documentation/values/numbers См. также: Официальная документация Sass - Тип данных "Числа" (Numbers)
|
|
39
|
+
/// @link https://sass-lang.com/documentation/at-rules/function См. также: Официальная документация Sass - Правило @function
|
|
40
|
+
/// @link https://sass-lang.com/documentation/style-rules/declarations#custom-properties См. также: Документация Sass - Пользовательские функции
|
|
41
|
+
/// @link https://developer.mozilla.org/en-US/docs/Web/CSS/integer См. также: MDN Web Docs - CSS тип данных <integer>
|
|
42
|
+
/// @link https://developer.mozilla.org/en-US/docs/Web/CSS/number См. также: MDN Web Docs - CSS тип данных <number>
|
|
43
|
+
/// @link https://www.w3schools.com/sass/sass_functions_numeric.php См. также: W3Schools - Числовые функции в Sass
|
|
44
|
+
/// @link https://www.sass.hk/docs/ См. также: Китайская документация Sass - Полное руководство
|
|
45
|
+
/// @link https://sass-guidelin.es/ru/#section-39 См. также: Sass Guidelines - Раздел про проверку типов данных
|
|
46
|
+
/// @link https://github.com/sass/sass/blob/main/accepted/module-system.md См. также: GitHub - Документация по модульной системе Sass
|
|
47
|
+
/// @link https://stackoverflow.com/questions/30867526/how-to-check-the-type-of-a-variable-is-a-string-or-a-number-in-scss См. также: Stack Overflow - Как проверить тип переменной в Sass
|
|
48
|
+
/// @link https://stackoverflow.com/questions/53976920/how-to-check-if-a-number-is-an-integer-in-sass См. также: Stack Overflow - Как проверить, является ли число целым в Sass
|
|
49
|
+
/// @link https://css-tricks.com/snippets/sass/ См. также: CSS-Tricks - Коллекция сниппетов Sass
|
|
50
|
+
/// @link https://web.dev/learn/css/numbers/ См. также: web.dev - Изучение чисел в CSS
|
|
51
|
+
/// @link https://frontender.info/sass-numbers/ См. также: Frontender Magazine - Работа с числами в Sass
|
|
52
|
+
/// @link https://habr.com/ru/post/247887/ См. также: Habr - Статья "Sass для верстальщика: числа и математика"
|
|
53
|
+
/// @link https://www.sitepoint.com/sass-basics-operators/ См. также: SitePoint - Основы Sass: операторы
|
|
54
|
+
/// @link https://www.freecodecamp.org/news/sass-data-types/ См. также: freeCodeCamp - Типы данных в Sass
|
|
55
|
+
/// @link https://code.tutsplus.com/tutorials/understanding-sass-data-types--cms-22110 См. также: Envato Tuts+ - Понимание типов данных в Sass
|
|
56
|
+
/// @link https://dev.to/kathryngrayson/sass-type-checking-1p6c См. также: Dev.to - Проверка типов в Sass
|
|
57
|
+
/// @link https://css-live.ru/articles/uskorenie-razrabotki-s-pomoshhyu-sass.html См. также: CSS-Live - Ускорение разработки с помощью Sass
|
|
58
|
+
/// @link https://itchief.ru/sass/data-types См. также: itchief - Типы данных в Sass
|
|
59
|
+
/// @link https://htmlacademy.ru/blog/boost/tools/sass-2 См. также: HTML Academy - Sass: переменные и типы данных
|
|
60
|
+
/// @link https://metanit.com/web/html5/13.3.php См. также: Metanit - Типы данных в Sass
|
|
61
|
+
/// @link https://ru.hexlet.io/courses/sass-basics/lessons/data-types/theory_unit См. также: Hexlet - Типы данных в Sass
|
|
62
|
+
/// @link https://www.youtube.com/watch?v=Zz6eOVaaelI См. также: YouTube - Sass Tutorial #4 - Data Types (The Net Ninja)
|
|
63
|
+
/// @link https://www.youtube.com/watch?v=URtUXqOQq0k См. также: YouTube - Типы данных в Sass (на русском)
|
|
64
|
+
/// @link https://codelabs.developers.google.com/codelabs/cloud-sass-cli#5 См. также: Google Codelabs - Создание пользовательских функций в Sass
|
|
65
|
+
/// @link https://www.npmjs.com/package/sass См. также: npm - Документация пакета Dart Sass
|
|
66
|
+
/// @link https://marketplace.visualstudio.com/items?itemName=Syler.sass-indented См. также: VS Code Marketplace - Поддержка синтаксиса Sass
|
|
67
|
+
/// @link https://stylelint.io/user-guide/rules/number-max-precision/ См. также: Stylelint - Правила для точности чисел
|
|
68
|
+
/// @link https://sass-lang.com/documentation/js-api См. также: JavaScript API - Работа с Sass через JavaScript
|
|
69
|
+
/// @link https://sass-lang.com/documentation/cli/dart-sass См. также: CLI - Командная строка Dart Sass
|
|
70
|
+
/// @link https://sass-lang.com/documentation/breaking-changes/module-system См. также: Breaking Changes - Изменения в модульной системе
|
|
71
|
+
/// @link https://sass-lang.com/documentation/values/booleans См. также: Документация Sass - Логические значения
|
|
72
|
+
/// @link https://sass-lang.com/documentation/values/strings См. также: Документация Sass - Строки
|
|
73
|
+
/// @link https://sass-lang.com/documentation/values/colors См. также: Документация Sass - Цвета
|
|
74
|
+
/// @link https://sass-lang.com/documentation/values/lists См. также: Документация Sass - Списки
|
|
75
|
+
/// @link https://sass-lang.com/documentation/values/null См. также: Документация Sass - Значение null
|
|
76
|
+
/// @link https://sass-lang.com/documentation/values/maps См. также: Документация Sass - Карты
|
|
77
|
+
/// @link https://sass-lang.com/documentation/interpolation См. также: Документация Sass - Интерполяция
|
|
78
|
+
/// @link https://sass-lang.com/documentation/modules/math#abs См. также: Документация Sass - Функция math.abs()
|
|
79
|
+
/// @link https://sass-lang.com/documentation/modules/math#ceil См. также: Документация Sass - Функция math.ceil()
|
|
80
|
+
/// @link https://sass-lang.com/documentation/modules/math#floor См. также: Документация Sass - Функция math.floor()
|
|
81
|
+
/// @link https://sass-lang.com/documentation/modules/math#max См. также: Документация Sass - Функция math.max()
|
|
82
|
+
/// @link https://sass-lang.com/documentation/modules/math#min См. также: Документация Sass - Функция math.min()
|
|
83
|
+
/// @link https://sass-lang.com/documentation/modules/math#percentage См. также: Документация Sass - Функция math.percentage()
|
|
84
|
+
/// @link https://sass-lang.com/documentation/modules/math#random См. также: Документация Sass - Функция math.random()
|
|
85
|
+
/// @link https://sass-lang.com/documentation/modules/math#unit См. также: Документация Sass - Функция math.unit()
|
|
86
|
+
/// @link https://sass-lang.com/documentation/modules/math#unitless См. также: Документация Sass - Функция math.unitless()
|
|
87
|
+
/// @link https://sass-lang.com/documentation/modules/math#compatible См. также: Документация Sass - Функция math.compatible()
|
|
88
|
+
/// @link https://sass-lang.com/documentation/values/numbers#units См. также: Документация Sass - Числа и единицы измерения
|
|
89
|
+
/// @link https://sass-lang.com/documentation/values/numbers#precision См. также: Документация Sass - Точность чисел в Sass
|
|
90
|
+
/// @example scss - Проверка целых чисел
|
|
91
|
+
/// @debug is-int(42); // true
|
|
92
|
+
/// @debug is-int(3.14); // false
|
|
93
|
+
/// @debug is-int(-7); // true
|
|
94
|
+
/// @debug is-int(0); // true
|
|
95
|
+
/// @debug is-int(2.0); // true
|
|
96
|
+
///
|
|
97
|
+
/// @example scss - Проверка нечисловых значений
|
|
98
|
+
/// @debug is-int("text"); // false
|
|
99
|
+
/// @debug is-int(true); // false
|
|
100
|
+
/// @debug is-int(null); // false
|
|
101
|
+
///
|
|
102
|
+
/// @example scss - Использование в условиях
|
|
103
|
+
/// @if is-int($index) {
|
|
104
|
+
/// @debug "Индекс корректен: #{$index}";
|
|
105
|
+
/// } @else {
|
|
106
|
+
/// @warn "Ожидается целое число";
|
|
107
|
+
/// }
|
|
108
|
+
///
|
|
109
|
+
/// @example scss - Фильтрация значений
|
|
110
|
+
/// $values: 1, 2.5, "3", 4, 5.0;
|
|
111
|
+
/// $integers: ();
|
|
112
|
+
///
|
|
113
|
+
/// @each $value in $values {
|
|
114
|
+
/// @if is-int($value) {
|
|
115
|
+
/// $integers: append($integers, $value);
|
|
116
|
+
/// }
|
|
117
|
+
/// }
|
|
118
|
+
/// // $integers: (1, 4, 5)
|
|
119
|
+
/// @param {*} $value - Проверяемое значение
|
|
120
|
+
/// @return {Boolean} - `true` если значение является
|
|
121
|
+
/// целым числом, `false` во всех остальных случаях.
|
|
122
|
+
@function is-int($value) {
|
|
123
|
+
@return meta.type-of($value) == number and math.round($value) == $value;
|
|
124
|
+
}
|