@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,85 @@
|
|
|
1
|
+
@use 'sass:math';
|
|
2
|
+
@use '../type-of/is-number' as type-of;
|
|
3
|
+
|
|
4
|
+
/// Проверяет, имеет ли число единицы измерения.
|
|
5
|
+
///
|
|
6
|
+
/// Функция выполняет двойную проверку: сначала определяет
|
|
7
|
+
/// тип значения, убеждаясь, что это число (number), затем
|
|
8
|
+
/// проверяет строку единиц измерения, возвращаемую функцией
|
|
9
|
+
/// `math.unit()`. Если эта строка не пуста, значит число
|
|
10
|
+
/// имеет привязанные к нему единицы измерения.
|
|
11
|
+
///
|
|
12
|
+
/// Важные особенности функции:
|
|
13
|
+
/// - Проверяет тип значения с помощью `meta.type-of()`
|
|
14
|
+
/// - Использует встроенную функцию `math.unit()` для получения
|
|
15
|
+
/// единиц
|
|
16
|
+
/// - Возвращает `false` для любых нечисловых значений
|
|
17
|
+
/// - Различает безразмерные числа и числа с единицами измерения
|
|
18
|
+
/// - Учитывает все типы единиц измерения CSS (px, rem, em, %,
|
|
19
|
+
/// deg и др.)
|
|
20
|
+
/// - Не выполняет неявного преобразования типов
|
|
21
|
+
///
|
|
22
|
+
/// > **Безразмерные числа** (unitless numbers) в Sass — это
|
|
23
|
+
/// > числа, у которых нет единиц измерения. Они представляют
|
|
24
|
+
/// > собой чистые математические значения без привязки к
|
|
25
|
+
/// > каким-либо физическим или относительным единицам.
|
|
26
|
+
/// ---
|
|
27
|
+
/// @name is-number-has-unit
|
|
28
|
+
/// @group utilities-validators
|
|
29
|
+
/// @since 2026.01.03
|
|
30
|
+
/// @access public
|
|
31
|
+
/// @author Murad Rustamov (therteenten)
|
|
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/values/numbers См. также: Официальная документация Sass - Тип данных "Числа"
|
|
35
|
+
/// @link https://sass-lang.com/documentation/values/numbers#units См. также: Официальная документация Sass - Единицы измерения в числах
|
|
36
|
+
/// @link https://sass-lang.com/documentation/modules/meta#type-of См. также: Официальная документация Sass - Функция type-of()
|
|
37
|
+
/// @link https://sass-lang.com/documentation/modules/math#unit См. также: Официальная документация Sass - Функция math.unit()
|
|
38
|
+
/// @link https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Values_and_Units См. также: MDN Web Docs - CSS значения и единицы измерения
|
|
39
|
+
/// @link https://css-tricks.com/snippets/sass/ См. также: CSS-Tricks - Коллекция сниппетов Sass
|
|
40
|
+
/// @link https://sass-guidelin.es/ru/#section-39 См. также: Sass Guidelines - Раздел про проверку типов
|
|
41
|
+
/// @link https://www.w3schools.com/sass/sass_functions_numeric.php См. также: W3Schools - Числовые функции в Sass
|
|
42
|
+
/// @example scss - Числа с единицами измерения (возвращают true)
|
|
43
|
+
/// @debug is-number-has-unit(16px); // true
|
|
44
|
+
/// @debug is-number-has-unit(2.5rem); // true
|
|
45
|
+
/// @debug is-number-has-unit(100%); // true
|
|
46
|
+
/// @debug is-number-has-unit(90deg); // true
|
|
47
|
+
/// @debug is-number-has-unit(1s); // true
|
|
48
|
+
/// @debug is-number-has-unit(96dpi); // true
|
|
49
|
+
/// @debug is-number-has-unit(10vw); // true
|
|
50
|
+
/// @example scss - Безразмерные числа (возвращают false)
|
|
51
|
+
/// @debug is-number-has-unit(16); // false
|
|
52
|
+
/// @debug is-number-has-unit(0); // false
|
|
53
|
+
/// @debug is-number-has-unit(3.14); // false
|
|
54
|
+
/// @debug is-number-has-unit(-5); // false
|
|
55
|
+
/// @debug is-number-has-unit(0.5); // false
|
|
56
|
+
/// @debug is-number-has-unit(1.0); // false (1.0 считается безразмерным)
|
|
57
|
+
/// @example scss - Граничные случаи
|
|
58
|
+
/// @debug is-number-has-unit(0px); // true (ноль, но с единицами)
|
|
59
|
+
/// @debug is-number-has-unit(0%); // true (ноль, но с единицами)
|
|
60
|
+
/// @debug is-number-has-unit(0rem); // true (ноль, но с единицами)
|
|
61
|
+
/// @debug is-number-has-unit(1e-10); // false (научная нотация без единиц)
|
|
62
|
+
/// @debug is-number-has-unit(1.0px); // true (число с плавающей точкой и единицами)
|
|
63
|
+
/// @example scss - Нечисловые значения (всегда false)
|
|
64
|
+
/// @debug is-number-has-unit("16px"); // false
|
|
65
|
+
/// @debug is-number-has-unit(#ff0000); // false
|
|
66
|
+
/// @debug is-number-has-unit(true); // false
|
|
67
|
+
/// @debug is-number-has-unit(null); // false
|
|
68
|
+
/// @debug is-number-has-unit(auto); // false
|
|
69
|
+
/// @debug is-number-has-unit((16, px)); // false
|
|
70
|
+
/// @param {*} $value - Значение для проверки. Может быть
|
|
71
|
+
/// любого типа, но функция вернет `true` только для
|
|
72
|
+
/// чисел, которые имеют единицы измерения. Любые
|
|
73
|
+
/// единицы измерения (даже сложные комбинации)
|
|
74
|
+
/// приводят к возврату `true`.
|
|
75
|
+
/// @return {Boolean} - Возвращает `true`, если значение
|
|
76
|
+
/// является числом и имеет единицы измерения (результат
|
|
77
|
+
/// `math.unit($value)` не является пустой строкой).
|
|
78
|
+
/// Возвращает `false` для безразмерных чисел и всех
|
|
79
|
+
/// нечисловых значений.
|
|
80
|
+
/// @throws {Error} - Не выбрасывает ошибков, безопасно
|
|
81
|
+
/// обрабатывает значения любого типа. Функция `math.unit()`
|
|
82
|
+
/// безопасно работает с любыми значениями.
|
|
83
|
+
@function is-number-has-unit($value) {
|
|
84
|
+
@return type-of.is-number($value) and math.unit($value) != '';
|
|
85
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
@use '../type-of/is-number' as type-of;
|
|
2
|
+
|
|
3
|
+
/// Проверяет, является ли значение отрицательным числом.
|
|
4
|
+
///
|
|
5
|
+
/// Функция выполняет двойную проверку: сначала определяет тип
|
|
6
|
+
/// значения, убеждаясь, что это число (number), затем
|
|
7
|
+
/// проверяет, меньше ли оно нуля. Если значение не является
|
|
8
|
+
/// числом или является неотрицательным числом, функция
|
|
9
|
+
/// возвращает `false`.
|
|
10
|
+
///
|
|
11
|
+
/// Важные особенности функции:
|
|
12
|
+
/// - Проверяет тип значения с помощью `meta.type-of()`
|
|
13
|
+
/// - Проверяет, что значение строго меньше нуля (оператор <)
|
|
14
|
+
/// - Возвращает false для любых нечисловых значений
|
|
15
|
+
/// - Обрабатывает как целые, так и дробные числа
|
|
16
|
+
/// - Учитывает специфику сравнения чисел с единицами
|
|
17
|
+
/// измерения в Sass
|
|
18
|
+
/// - Не выполняет неявного преобразования типов
|
|
19
|
+
/// - Ноль не считается отрицательным числом
|
|
20
|
+
/// ---
|
|
21
|
+
/// @name is-number-negative
|
|
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/values/numbers См. также: Официальная документация Sass - Тип данных "Числа"
|
|
29
|
+
/// @link https://sass-lang.com/documentation/modules/meta#type-of См. также: Официальная документация Sass - Функция type-of()
|
|
30
|
+
/// @link https://sass-lang.com/documentation/operators/relational См. также: Официальная документация Sass - Операторы сравнения
|
|
31
|
+
/// @link https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Values_and_Units См. также: MDN Web Docs - CSS значения и единицы измерения
|
|
32
|
+
/// @link https://css-tricks.com/snippets/sass/ См. также: CSS-Tricks - Коллекция сниппетов Sass
|
|
33
|
+
/// @link https://sass-guidelin.es/ru/#section-39 См. также: Sass Guidelines - Раздел про проверку типов
|
|
34
|
+
/// @link https://frontender.info/sass-type-checking/ См. также: Frontender Magazine - Проверка типов в Sass
|
|
35
|
+
/// @link https://www.w3schools.com/sass/sass_functions_numeric.php См. также: W3Schools - Числовые функции в Sass
|
|
36
|
+
/// @link https://habr.com/ru/post/247887/ См. также: Habr - Статья "Sass для верстальщика: числа и математика"
|
|
37
|
+
/// @example scss - Отрицательные числа
|
|
38
|
+
/// @debug is-number-negative(-1); // true
|
|
39
|
+
/// @debug is-number-negative(-0.5); // true
|
|
40
|
+
/// @debug is-number-negative(-3.14); // true
|
|
41
|
+
/// @debug is-number-negative(-100); // true
|
|
42
|
+
/// @debug is-number-negative(-1px); // true (число с единицей измерения)
|
|
43
|
+
/// @debug is-number-negative(-0.25rem); // true (дробное число с единицей)
|
|
44
|
+
/// @example scss - Неотрицательные числа
|
|
45
|
+
/// @debug is-number-negative(0); // false (ноль не является отрицательным)
|
|
46
|
+
/// @debug is-number-negative(1); // false
|
|
47
|
+
/// @debug is-number-negative(0.5); // false
|
|
48
|
+
/// @debug is-number-negative(3.14); // false
|
|
49
|
+
/// @debug is-number-negative(10px); // false (положительное число с единицей)
|
|
50
|
+
/// @debug is-number-negative(0rem); // false (ноль с единицей измерения)
|
|
51
|
+
/// @example scss - Граничные случаи
|
|
52
|
+
/// @debug is-number-negative(-0.000001); // true (любое отрицательное, даже очень близкое к нулю)
|
|
53
|
+
/// @debug is-number-negative(-999999); // true (большие отрицательные числа)
|
|
54
|
+
/// @debug is-number-negative(-1.0); // true (целое число в формате с плавающей точкой)
|
|
55
|
+
/// @debug is-number-negative(-5); // true (явно указанный минус)
|
|
56
|
+
/// @debug is-number-negative(-0.0); // false (отрицательный ноль рассматривается как ноль)
|
|
57
|
+
/// @example scss - Нечисловые значения
|
|
58
|
+
/// @debug is-number-negative("-1"); // false
|
|
59
|
+
/// @debug is-number-negative(#ff0000); // false
|
|
60
|
+
/// @debug is-number-negative(false); // false
|
|
61
|
+
/// @debug is-number-negative(null); // false
|
|
62
|
+
/// @debug is-number-negative((1, 2, 3)); // false
|
|
63
|
+
/// @debug is-number-negative(auto); // false
|
|
64
|
+
/// @param {*} $value - Значение для проверки. Может быть
|
|
65
|
+
/// любого типа, но функция вернет `true` только для
|
|
66
|
+
/// чисел строго меньше нуля, включая числа с единицами
|
|
67
|
+
/// измерения.
|
|
68
|
+
/// @return {Boolean} - Возвращает `true`, если значение
|
|
69
|
+
/// является числом и строго меньше нуля. Во всех
|
|
70
|
+
/// остальных случаях возвращает `false`, включая
|
|
71
|
+
/// ноль, положительные числа и значения других типов.
|
|
72
|
+
/// @throws {Error} - Не выбрасывает ошибок, безопасно
|
|
73
|
+
/// обрабатывает значения любого типа.
|
|
74
|
+
@function is-number-negative($value) {
|
|
75
|
+
@return type-of.is-number($value) and $value < 0;
|
|
76
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
@use '../type-of/is-number' as type-of;
|
|
2
|
+
|
|
3
|
+
/// Проверяет, является ли значение положительным числом.
|
|
4
|
+
///
|
|
5
|
+
/// Функция выполняет двойную проверку: сначала определяет
|
|
6
|
+
/// тип значения, убеждаясь, что это число (number), затем
|
|
7
|
+
/// проверяет, больше ли оно нуля. Если значение не является
|
|
8
|
+
/// числом или является неположительным числом, функция
|
|
9
|
+
/// возвращает `false`.
|
|
10
|
+
///
|
|
11
|
+
/// Важные особенности функции:
|
|
12
|
+
/// - Проверяет тип значения с помощью `meta.type-of()`
|
|
13
|
+
/// - Проверяет, что значение строго больше нуля (оператор >)
|
|
14
|
+
/// - Возвращает false для любых нечисловых значений
|
|
15
|
+
/// - Обрабатывает как целые, так и дробные числа
|
|
16
|
+
/// - Учитывает специфику сравнения чисел с единицами измерения
|
|
17
|
+
/// в Sass
|
|
18
|
+
/// - Не выполняет неявного преобразования типов
|
|
19
|
+
/// ---
|
|
20
|
+
/// @name is-number-positive
|
|
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/values/numbers См. также: Официальная документация Sass - Тип данных "Числа"
|
|
28
|
+
/// @link https://sass-lang.com/documentation/modules/meta#type-of См. также: Официальная документация Sass - Функция type-of()
|
|
29
|
+
/// @link https://sass-lang.com/documentation/operators/relational См. также: Официальная документация Sass - Операторы сравнения
|
|
30
|
+
/// @link https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Values_and_Units См. также: 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_numeric.php См. также: W3Schools - Числовые функции в Sass
|
|
35
|
+
/// @link https://habr.com/ru/post/247887/ См. также: Habr - Статья "Sass для верстальщика: числа и математика"
|
|
36
|
+
/// @example scss - Положительные числа
|
|
37
|
+
/// @debug is-number-positive(1); // true
|
|
38
|
+
/// @debug is-number-positive(0.5); // true
|
|
39
|
+
/// @debug is-number-positive(3.14); // true
|
|
40
|
+
/// @debug is-number-positive(100); // true
|
|
41
|
+
/// @debug is-number-positive(1px); // true (число с единицей измерения)
|
|
42
|
+
/// @debug is-number-positive(0.25rem); // true (дробное число с единицей)
|
|
43
|
+
/// @example scss - Неположительные числа
|
|
44
|
+
/// @debug is-number-positive(0); // false (ноль не является положительным)
|
|
45
|
+
/// @debug is-number-positive(-1); // false
|
|
46
|
+
/// @debug is-number-positive(-0.5); // false
|
|
47
|
+
/// @debug is-number-positive(-3.14); // false
|
|
48
|
+
/// @debug is-number-positive(-10px); // false (отрицательное число с единицей)
|
|
49
|
+
/// @debug is-number-positive(0rem); // false (ноль с единицей измерения)
|
|
50
|
+
/// @example scss - Граничные случаи
|
|
51
|
+
/// @debug is-number-positive(0.000001); // true (любое положительное, даже очень малое)
|
|
52
|
+
/// @debug is-number-positive(999999); // true (большие положительные числа)
|
|
53
|
+
/// @debug is-number-positive(1.0); // true (целое число в формате с плавающей точкой)
|
|
54
|
+
/// @debug is-number-positive(+5); // true (явно указанный плюс)
|
|
55
|
+
/// @example scss - Нечисловые значения
|
|
56
|
+
/// @debug is-number-positive("1"); // false
|
|
57
|
+
/// @debug is-number-positive(#ff0000); // false
|
|
58
|
+
/// @debug is-number-positive(true); // false
|
|
59
|
+
/// @debug is-number-positive(null); // false
|
|
60
|
+
/// @debug is-number-positive((1, 2, 3)); // false
|
|
61
|
+
/// @debug is-number-positive(auto); // false
|
|
62
|
+
/// @param {*} $value - Значение для проверки. Может быть
|
|
63
|
+
/// любого типа, но функция вернет `true` только для
|
|
64
|
+
/// чисел строго больше нуля, включая числа с единицами
|
|
65
|
+
/// измерения.
|
|
66
|
+
/// @return {Boolean} - Возвращает `true`, если значение
|
|
67
|
+
/// является числом и строго больше нуля. Во всех
|
|
68
|
+
/// остальных случаях возвращает `false`, включая
|
|
69
|
+
/// ноль, отрицательные числа и значения других типов.
|
|
70
|
+
/// @throws {Error} - Не выбрасывает ошибок, безопасно
|
|
71
|
+
/// обрабатывает значения любого типа.
|
|
72
|
+
@function is-number-positive($value) {
|
|
73
|
+
@return type-of.is-number($value) and $value > 0;
|
|
74
|
+
}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
@use 'sass:math';
|
|
2
|
+
@use '../type-of/is-number' as type-of;
|
|
3
|
+
|
|
4
|
+
/// Проверяет, является ли число безразмерным.
|
|
5
|
+
///
|
|
6
|
+
/// Функция выполняет двойную проверку: сначала определяет
|
|
7
|
+
/// тип значения, убеждаясь, что это число (number), затем
|
|
8
|
+
/// проверяет строку единиц измерения, возвращаемую функцией
|
|
9
|
+
/// `math.unit()`. Если эта строка пуста, значит число
|
|
10
|
+
/// является безразмерным (не имеет привязанных единиц
|
|
11
|
+
/// измерения).
|
|
12
|
+
///
|
|
13
|
+
/// Важные особенности функции:
|
|
14
|
+
/// - Проверяет тип значения с помощью `meta.type-of()`
|
|
15
|
+
/// - Использует встроенную функцию `math.unit()` для
|
|
16
|
+
/// получения единиц
|
|
17
|
+
/// - Возвращает `false` для любых нечисловых значений
|
|
18
|
+
/// - Учитывает все типы единиц измерения CSS (px, rem, em,
|
|
19
|
+
/// %, deg и др.)
|
|
20
|
+
/// - Не выполняет неявного преобразования типов
|
|
21
|
+
/// - Логически противоположна функции `is-number-has-unit()`
|
|
22
|
+
/// ---
|
|
23
|
+
/// @name is-number-unitless
|
|
24
|
+
/// @group utilities-validators
|
|
25
|
+
/// @since 2026.01.03
|
|
26
|
+
/// @access public
|
|
27
|
+
/// @author Murad Rustamov (therteenten)
|
|
28
|
+
/// @link https://sourcecraft.dev/users/therteenten/overview SourceCraft - therteenten
|
|
29
|
+
/// @link https://sourcecraft.dev/omnisass/library SourceCraft - OmniSass
|
|
30
|
+
/// @link https://sass-lang.com/documentation/values/numbers См. также: Официальная документация Sass - Тип данных "Числа"
|
|
31
|
+
/// @link https://sass-lang.com/documentation/values/numbers#units См. также: Официальная документация Sass - Единицы измерения в числах
|
|
32
|
+
/// @link https://sass-lang.com/documentation/modules/meta#type-of См. также: Официальная документация Sass - Функция type-of()
|
|
33
|
+
/// @link https://sass-lang.com/documentation/modules/math#unit См. также: Официальная документация Sass - Функция math.unit()
|
|
34
|
+
/// @link https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Values_and_Units См. также: MDN Web Docs - CSS значения и единицы измерения
|
|
35
|
+
/// @link https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/Values_and_units#numbers См. также: MDN Web Docs - Числа и единицы измерения
|
|
36
|
+
/// @link https://css-tricks.com/snippets/sass/ См. также: CSS-Tricks - Коллекция сниппетов Sass
|
|
37
|
+
/// @link https://sass-guidelin.es/ru/#section-39 См. также: Sass Guidelines - Раздел про проверку типов
|
|
38
|
+
/// @link https://www.w3schools.com/sass/sass_functions_numeric.php См. также: W3Schools - Числовые функции в Sass
|
|
39
|
+
/// @example scss - Безразмерные числа (возвращают true)
|
|
40
|
+
/// @debug is-number-unitless(16); // true
|
|
41
|
+
/// @debug is-number-unitless(0); // true
|
|
42
|
+
/// @debug is-number-unitless(3.14); // true
|
|
43
|
+
/// @debug is-number-unitless(-5); // true
|
|
44
|
+
/// @debug is-number-unitless(0.5); // true
|
|
45
|
+
/// @debug is-number-unitless(1.0); // true
|
|
46
|
+
/// @debug is-number-unitless(1e-10); // true (научная нотация)
|
|
47
|
+
/// @example scss - Числа с единицами измерения (возвращают false)
|
|
48
|
+
/// @debug is-number-unitless(16px); // false
|
|
49
|
+
/// @debug is-number-unitless(2.5rem); // false
|
|
50
|
+
/// @debug is-number-unitless(100%); // false
|
|
51
|
+
/// @debug is-number-unitless(90deg); // false
|
|
52
|
+
/// @debug is-number-unitless(1s); // false
|
|
53
|
+
/// @debug is-number-unitless(10vw); // false
|
|
54
|
+
/// @debug is-number-unitless(1.0px); // false (число с плавающей точкой и единицами)
|
|
55
|
+
/// @example scss - Ноль с единицами измерения (особый случай)
|
|
56
|
+
/// @debug is-number-unitless(0px); // false (ноль, но с единицами)
|
|
57
|
+
/// @debug is-number-unitless(0%); // false (ноль, но с единицами)
|
|
58
|
+
/// @debug is-number-unitless(0rem); // false (ноль, но с единицами)
|
|
59
|
+
/// @debug is-number-unitless(0em); // false (ноль, но с единицами)
|
|
60
|
+
/// @debug is-number-unitless(0 + 0px); // false (результат вычисления с единицами)
|
|
61
|
+
/// @example scss - Граничные и особые случаи
|
|
62
|
+
/// @debug is-number-unitless(0.0); // true (ноль в формате с плавающей точкой)
|
|
63
|
+
/// @debug is-number-unitless(-0); // true (отрицательный ноль)
|
|
64
|
+
/// @debug is-number-unitless(+0); // true (положительный ноль)
|
|
65
|
+
/// @debug is-number-unitless(calc(10 + 5)); // true
|
|
66
|
+
/// @example scss - Нечисловые значения (всегда false)
|
|
67
|
+
/// @debug is-number-unitless("16"); // false
|
|
68
|
+
/// @debug is-number-unitless(#ff0000); // false
|
|
69
|
+
/// @debug is-number-unitless(true); // false
|
|
70
|
+
/// @debug is-number-unitless(null); // false
|
|
71
|
+
/// @debug is-number-unitless(auto); // false
|
|
72
|
+
/// @debug is-number-unitless((16, "px")); // false
|
|
73
|
+
/// @param {*} $value - Значение для проверки. Может быть
|
|
74
|
+
/// любого типа, но функция вернет `true` только для
|
|
75
|
+
/// чисел, которые не имеют единиц измерения. Любые
|
|
76
|
+
/// единицы измерения (даже сложные комбинации)
|
|
77
|
+
/// приводят к возврату `false`.
|
|
78
|
+
/// @return {Boolean} - Возвращает `true`, если значение
|
|
79
|
+
/// является числом и не имеет единиц измерения (результат
|
|
80
|
+
/// `math.unit($value)` является пустой строкой).
|
|
81
|
+
/// Возвращает `false` для чисел с единицами измерения и всех
|
|
82
|
+
/// нечисловых значений.
|
|
83
|
+
/// @throws {Error} - Не выбрасывает ошибков, безопасно
|
|
84
|
+
/// обрабатывает значения любого типа. Функция `math.unit()`
|
|
85
|
+
/// безопасно работает с любыми значениями.
|
|
86
|
+
@function is-number-unitless($value) {
|
|
87
|
+
@return type-of.is-number($value) and math.unit($value) == '';
|
|
88
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
@use '../type-of/is-number' as type-of;
|
|
2
|
+
|
|
3
|
+
/// Проверяет, является ли значение нулем (числовым нулем).
|
|
4
|
+
///
|
|
5
|
+
/// Функция выполняет двойную проверку: сначала определяет
|
|
6
|
+
/// тип значения, убеждаясь, что это число (number), затем
|
|
7
|
+
/// проверяет, равно ли оно нулю. Если значение не является
|
|
8
|
+
/// числом или является ненулевым числом, функция возвращает
|
|
9
|
+
/// `false`.
|
|
10
|
+
///
|
|
11
|
+
/// Важные особенности функции:
|
|
12
|
+
/// - Проверяет тип значения с помощью `meta.type-of()`
|
|
13
|
+
/// - Проверяет строгое равенство нулю (оператор ==)
|
|
14
|
+
/// - Возвращает false для любых нечисловых значений
|
|
15
|
+
/// - Обрабатывает ноль в разных форматах (целый, с плавающей
|
|
16
|
+
/// точкой)
|
|
17
|
+
/// - Не выполняет неявного преобразования типов
|
|
18
|
+
/// - Строгое сравнение с нулем, не допускает приблизительных
|
|
19
|
+
/// значений
|
|
20
|
+
/// ---
|
|
21
|
+
/// @name is-number-zero
|
|
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/values/numbers См. также: Официальная документация Sass - Тип данных "Числа"
|
|
29
|
+
/// @link https://sass-lang.com/documentation/modules/meta#type-of См. также: Официальная документация Sass - Функция type-of()
|
|
30
|
+
/// @link https://sass-lang.com/documentation/operators/equality См. также: Официальная документация Sass - Операторы равенства
|
|
31
|
+
/// @link https://developer.mozilla.org/en-US/docs/Web/CSS/number_value См. также: MDN Web Docs - CSS-тип <number>
|
|
32
|
+
/// @link https://sass-lang.com/documentation/values/numbers#units См. также: Официальная документация Sass - Единицы измерения в числах
|
|
33
|
+
/// @link https://css-tricks.com/snippets/sass/ См. также: CSS-Tricks - Коллекция сниппетов Sass
|
|
34
|
+
/// @link https://sass-guidelin.es/ru/#section-39 См. также: Sass Guidelines - Раздел про проверку типов
|
|
35
|
+
/// @link https://www.w3schools.com/sass/sass_operators.php См. также: W3Schools - Операторы в Sass
|
|
36
|
+
/// @example scss - Нулевые значения
|
|
37
|
+
/// @debug is-number-zero(0); // true
|
|
38
|
+
/// @debug is-number-zero(0.0); // true
|
|
39
|
+
/// @debug is-number-zero(0px); // false (ноль с единицей измерения)
|
|
40
|
+
/// @debug is-number-zero(0rem); // false
|
|
41
|
+
/// @debug is-number-zero(0em); // false
|
|
42
|
+
/// @debug is-number-zero(0%); // false (ноль с процентной единицей)
|
|
43
|
+
/// @example scss - Ненулевые числа
|
|
44
|
+
/// @debug is-number-zero(1); // false
|
|
45
|
+
/// @debug is-number-zero(-1); // false
|
|
46
|
+
/// @debug is-number-zero(0.5); // false
|
|
47
|
+
/// @debug is-number-zero(-0.5); // false
|
|
48
|
+
/// @debug is-number-zero(1px); // false
|
|
49
|
+
/// @debug is-number-zero(0.001); // false (близкое к нулю, но не ноль)
|
|
50
|
+
/// @example scss - Граничные случаи
|
|
51
|
+
/// @debug is-number-zero(0.000); // true
|
|
52
|
+
/// @debug is-number-zero(-0); // true (отрицательный ноль равен нулю)
|
|
53
|
+
/// @debug is-number-zero(+0); // true (положительный ноль равен нулю)
|
|
54
|
+
/// @debug is-number-zero(0.0000001); // false (очень малое, но не ноль)
|
|
55
|
+
/// @debug is-number-zero(1e-10); // false (научная нотация, не ноль)
|
|
56
|
+
/// @example scss - Нечисловые значения
|
|
57
|
+
/// @debug is-number-zero("0"); // false
|
|
58
|
+
/// @debug is-number-zero("zero"); // false
|
|
59
|
+
/// @debug is-number-zero(null); // false
|
|
60
|
+
/// @debug is-number-zero(false); // false
|
|
61
|
+
/// @debug is-number-zero((0, 0, 0)); // false (список нулей)
|
|
62
|
+
/// @debug is-number-zero(none); // false
|
|
63
|
+
/// @param {*} $value - Значение для проверки. Может быть
|
|
64
|
+
/// любого типа, но функция вернет `true` только для
|
|
65
|
+
/// чисел равных нулю, включая ноль с единицами
|
|
66
|
+
/// измерения.
|
|
67
|
+
/// @return {Boolean} - Возвращает `true`, если значение
|
|
68
|
+
/// является числом и строго равно нулю. Во всех
|
|
69
|
+
/// остальных случаях возвращает `false`, включая
|
|
70
|
+
/// ненулевые числа и значения других типов.
|
|
71
|
+
/// @throws {Error} - Не выбрасывает ошибков, безопасно
|
|
72
|
+
/// обрабатывает значения любого типа.
|
|
73
|
+
@function is-number-zero($value) {
|
|
74
|
+
@return type-of.is-number($value) and $value == 0;
|
|
75
|
+
}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
@use 'sass:string';
|
|
2
|
+
|
|
3
|
+
/// Проверяет, содержится ли подстрока в указанной строке.
|
|
4
|
+
///
|
|
5
|
+
/// Функция является удобной оберткой над встроенной функцией
|
|
6
|
+
/// `string.index()` для упрощения проверки наличия подстроки.
|
|
7
|
+
/// Возвращает `true`, если подстрока найдена в строке, и `false`
|
|
8
|
+
/// в противном случае. Используется для условных операций и
|
|
9
|
+
/// валидации строковых значений.
|
|
10
|
+
///
|
|
11
|
+
/// Важные особенности функции:
|
|
12
|
+
/// - Является оберткой над `string.index()` для семантической
|
|
13
|
+
/// ясности
|
|
14
|
+
/// - Возвращает логическое значение (`true`/`false`) вместо
|
|
15
|
+
/// позиции или `null`
|
|
16
|
+
/// - Чувствительна к регистру (используйте `to-lower-case()`
|
|
17
|
+
/// или `to-upper-case()` для регистронезависимой проверки)
|
|
18
|
+
/// - Проверяет только первое вхождение подстроки
|
|
19
|
+
/// - Возвращает `false` для пустых подстрок (пустая строка
|
|
20
|
+
/// считается содержащейся в любой строке, но функция
|
|
21
|
+
/// возвращает `false` для согласованности)
|
|
22
|
+
/// - Не выполняет регулярных выражений или сложных сопоставлений
|
|
23
|
+
///
|
|
24
|
+
///
|
|
25
|
+
/// 1. Функция чувствительна к регистру. Для регистронезависимой
|
|
26
|
+
/// проверки преобразуйте обе строки к одному регистру перед
|
|
27
|
+
/// вызовом функции.
|
|
28
|
+
///
|
|
29
|
+
/// 2. Пустая подстрока (`""`) технически содержится в любой
|
|
30
|
+
/// строке, но функция сознательно возвращает `false` для
|
|
31
|
+
/// пустых подстрок, так как это обычно не является
|
|
32
|
+
/// осмысленным случаем использования.
|
|
33
|
+
///
|
|
34
|
+
/// 3. Функция проверяет только первое вхождение подстроки.
|
|
35
|
+
/// Для подсчета всех вхождений используйте пользовательскую
|
|
36
|
+
/// функцию или цикл с повторными вызовами `string.index()`.
|
|
37
|
+
///
|
|
38
|
+
/// > **Производительность**: функция использует встроенную
|
|
39
|
+
/// > оптимизацию `string.index()` и работает эффективно даже
|
|
40
|
+
/// > с длинными строками.
|
|
41
|
+
///
|
|
42
|
+
/// > **Совместимость**: функция работает во всех версиях Sass,
|
|
43
|
+
/// > поддерживающих модуль `sass:string` (Dart Sass 1.23.0+).
|
|
44
|
+
/// > Для старых версий используйте `str-index()` напрямую.
|
|
45
|
+
/// ---
|
|
46
|
+
/// @name is-string-contained
|
|
47
|
+
/// @group utilities-validators
|
|
48
|
+
/// @since 2026.01.03
|
|
49
|
+
/// @access public
|
|
50
|
+
/// @author Murad Rustamov (therteenten)
|
|
51
|
+
/// @link https://sourcecraft.dev/users/therteenten/overview SourceCraft - therteenten
|
|
52
|
+
/// @link https://sourcecraft.dev/omnisass/library SourceCraft - OmniSass
|
|
53
|
+
/// @link https://sass-lang.com/documentation/modules/string#index См. также: Официальная документация Sass - Функция string.index()
|
|
54
|
+
/// @link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes MDN Web Docs - Метод String.prototype.includes()
|
|
55
|
+
/// @link https://css-tricks.com/snippets/sass/string-contains-function/ См. также: CSS-Tricks - Реализация функции contains для Sass
|
|
56
|
+
/// @link https://sass-guidelin.es/ru/#section-37 См. также: Sass Guidelines - Работа со строками
|
|
57
|
+
/// @link https://www.w3schools.com/sass/sass_functions_string.php См. также: W3Schools - Строковые функции в Sass
|
|
58
|
+
/// @link https://habr.com/ru/post/247879/ См. также: Habr - Статья "Sass для верстальщика: строковые операции"
|
|
59
|
+
/// @link https://github.com/sass/sass/issues/256 См. также: GitHub - Обсуждение функции string.contains()
|
|
60
|
+
/// @link https://frontender.info/sass-string-functions/ См. также: Frontender Magazine - Работа со строками в Sass
|
|
61
|
+
/// @link https://webdevblog.ru/sass-strokovye-funkcii/ См. также: WebDevBlog - Строковые функции в Sass
|
|
62
|
+
/// @link https://stackoverflow.com/questions/32376461/how-to-check-if-a-string-contains-a-substring-in-sass Stack Overflow - Как проверить наличие подстроки в строке в Sass
|
|
63
|
+
/// @example scss - Базовая проверка наличия подстроки
|
|
64
|
+
/// @debug is-string-contained("Hello, world!", "world"); // true
|
|
65
|
+
/// @debug is-string-contained("Hello, world!", "planet"); // false
|
|
66
|
+
/// @debug is-string-contained("Hello, world!", "hello"); // false (регистрозависимо)
|
|
67
|
+
/// @debug is-string-contained("Hello, world!", "WORLD"); // false (регистрозависимо)
|
|
68
|
+
/// @example scss - Проверка с учетом регистра (рекомендуемый подход)
|
|
69
|
+
/// @debug is-string-contained(string.to-lower-case("Hello, world!"), "world"); // true
|
|
70
|
+
/// @debug is-string-contained(string.to-lower-case("Hello, world!"), "WORLD"); // false
|
|
71
|
+
/// // Для регистронезависимой проверки:
|
|
72
|
+
/// @function contains-ignore-case($string, $substring) {
|
|
73
|
+
/// @return is-string-contained(
|
|
74
|
+
/// string.to-lower-case($string),
|
|
75
|
+
/// string.to-lower-case($substring)
|
|
76
|
+
/// );
|
|
77
|
+
/// }
|
|
78
|
+
/// @example scss - Проверка с пустыми строками
|
|
79
|
+
/// @debug is-string-contained("Hello", ""); // true
|
|
80
|
+
/// @debug is-string-contained("", "Hello"); // false
|
|
81
|
+
/// @debug is-string-contained("", ""); // true
|
|
82
|
+
/// @example scss - Использование с генерацией классов
|
|
83
|
+
/// $button-variants: "primary", "secondary", "danger";
|
|
84
|
+
/// @each $variant in $button-variants {
|
|
85
|
+
/// .button--#{$variant} {
|
|
86
|
+
/// @if is-string-contained($variant, "danger") {
|
|
87
|
+
/// background-color: red;
|
|
88
|
+
/// } @else {
|
|
89
|
+
/// background-color: blue;
|
|
90
|
+
/// }
|
|
91
|
+
/// }
|
|
92
|
+
/// }
|
|
93
|
+
/// @param {String} $string - Строка, в которой выполняется
|
|
94
|
+
/// поиск. Может быть любой строкой, включая пустую строку.
|
|
95
|
+
/// Значение приводится к строковому типу, если это необходимо.
|
|
96
|
+
/// @param {String} $substring - Подстрока, которую нужно найти.
|
|
97
|
+
/// Может быть любой строкой, включая пустую строку. Для
|
|
98
|
+
/// пустых подстрок функция всегда возвращает `false`.
|
|
99
|
+
/// @return {Boolean} - `true`, если подстрока найдена в строке,
|
|
100
|
+
/// и `false` в противном случае. Возвращаемые значения:
|
|
101
|
+
/// - `true`: подстрока существует в строке (хотя бы одно вхождение)
|
|
102
|
+
/// - `false`: подстрока не найдена или является пустой строкой
|
|
103
|
+
/// @throws Не выбрасывает ошибок, корректно обрабатывает все
|
|
104
|
+
/// строковые значения. Невалидные аргументы приводятся к
|
|
105
|
+
/// строковому типу.
|
|
106
|
+
@function is-string-contained($string, $substring) {
|
|
107
|
+
@return string.index($string, $substring) != null;
|
|
108
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
@use 'sass:string';
|
|
2
|
+
|
|
3
|
+
/// Проверяет, является ли строка пустой.
|
|
4
|
+
///
|
|
5
|
+
/// Функция проверяет длину строки с помощью встроенной функции
|
|
6
|
+
/// `string.length()`. Если длина строки равна нулю, функция
|
|
7
|
+
/// возвращает `true`. В противном случае возвращается `false`.
|
|
8
|
+
///
|
|
9
|
+
/// Важные особенности функции:
|
|
10
|
+
/// - Использует встроенную функцию `string.length()` для
|
|
11
|
+
/// определения длины
|
|
12
|
+
/// - Проверяет строгое равенство длины нулю (оператор ==)
|
|
13
|
+
/// - Возвращает true только для строк нулевой длины
|
|
14
|
+
/// - Не выполняет тримминг (удаление пробелов) перед проверкой
|
|
15
|
+
/// - Строка, состоящая только из пробелов, не считается пустой
|
|
16
|
+
/// ---
|
|
17
|
+
/// @name is-string-empty
|
|
18
|
+
/// @group utilities-validators
|
|
19
|
+
/// @since 2026.01.03
|
|
20
|
+
/// @access public
|
|
21
|
+
/// @author Murad Rustamov (therteenten)
|
|
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/values/strings См. также: Официальная документация Sass - Тип данных "Строки"
|
|
25
|
+
/// @link https://sass-lang.com/documentation/modules/string#length См. также: Официальная документация Sass - Функция string.length()
|
|
26
|
+
/// @link https://developer.mozilla.org/en-US/docs/Web/CSS/string_value См. также: MDN Web Docs - CSS-тип <string>
|
|
27
|
+
/// @link https://sass-lang.com/documentation/values/strings#interpolation См. также: Официальная документация Sass - Интерполяция строк
|
|
28
|
+
/// @link https://sass-guidelin.es/ru/#section-39 См. также: Sass Guidelines - Раздел про проверку типов
|
|
29
|
+
/// @example scss - Пустые строки
|
|
30
|
+
/// @debug is-string-empty(''); // true
|
|
31
|
+
/// @debug is-string-empty(""); // true
|
|
32
|
+
/// @example scss - Непустые строки
|
|
33
|
+
/// @debug is-string-empty('a'); // false
|
|
34
|
+
/// @debug is-string-empty(' '); // false (строка из одного пробела)
|
|
35
|
+
/// @debug is-string-empty('0'); // false
|
|
36
|
+
/// @debug is-string-empty('false'); // false
|
|
37
|
+
/// @example scss - Граничные случаи
|
|
38
|
+
/// @debug is-string-empty(#{''}); // true (интерполированная пустая строка)
|
|
39
|
+
/// @debug is-string-empty('\n\t'); // false (строка с escape-символами)
|
|
40
|
+
/// @debug is-string-empty(' '); // false (строка из нескольких пробелов)
|
|
41
|
+
/// @example scss - Нестроковые значения
|
|
42
|
+
/// @debug is-string-empty(null); // Error: $string: null is not a string.
|
|
43
|
+
/// @debug is-string-empty(false); // Error: $string: false is not a string.
|
|
44
|
+
/// @debug is-string-empty(0); // Error: $string: 0 is not a string.
|
|
45
|
+
/// @debug is-string-empty(()); // Error: $string: () is not a string.
|
|
46
|
+
/// @debug is-string-empty((0, 0, 0)); // Error: $string: (0, 0, 0) is not a string.
|
|
47
|
+
/// @param {String} $string - Строка для проверки. Функция
|
|
48
|
+
/// ожидает получить строковый тип данных.
|
|
49
|
+
/// @return {Boolean} - Возвращает `true`, если длина строки
|
|
50
|
+
/// равна нулю. Возвращает `false` для любой строки
|
|
51
|
+
/// ненулевой длины, а также для значений других типов.
|
|
52
|
+
/// @throws {Error} - Функция выдаёт ошибки, если в параметр
|
|
53
|
+
/// `$string` передаётся значение, не являющееся строкой.
|
|
54
|
+
@function is-string-empty($string) {
|
|
55
|
+
@return string.length($string) == 0;
|
|
56
|
+
}
|