@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,66 @@
|
|
|
1
|
+
@use 'sass:string';
|
|
2
|
+
|
|
3
|
+
/// Проверяет, заканчивается ли строка указанной подстрокой.
|
|
4
|
+
///
|
|
5
|
+
/// Функция извлекает конец строки, равный по длине проверяемой
|
|
6
|
+
/// подстроке, и сравнивает его с этой подстрокой. Если
|
|
7
|
+
/// извлеченная часть строки совпадает с подстрокой, функция
|
|
8
|
+
/// возвращает `true`. В противном случае возвращается `false`.
|
|
9
|
+
///
|
|
10
|
+
/// Важные особенности функции:
|
|
11
|
+
/// - Использует функцию `string.slice()` с отрицательным индексом
|
|
12
|
+
/// для извлечения конца строки
|
|
13
|
+
/// - Сравнивает извлеченную часть с подстрокой оператором равенства (==)
|
|
14
|
+
/// - Отрицательный индекс позволяет отсчитывать позиции с конца строки
|
|
15
|
+
/// - Чувствительна к регистру символов
|
|
16
|
+
/// - Учитывает пробелы и специальные символы в конце строки
|
|
17
|
+
/// ---
|
|
18
|
+
/// @name is-string-ending-with
|
|
19
|
+
/// @group utilities-validators
|
|
20
|
+
/// @since 2026.01.03
|
|
21
|
+
/// @access public
|
|
22
|
+
/// @author Murad Rustamov (therteenten)
|
|
23
|
+
/// @link https://sourcecraft.dev/users/therteenten/overview SourceCraft - therteenten
|
|
24
|
+
/// @link https://sourcecraft.dev/omnisass/library SourceCraft - OmniSass
|
|
25
|
+
/// @link https://sass-lang.com/documentation/values/strings См. также: Официальная документация Sass - Тип данных "Строки"
|
|
26
|
+
/// @link https://sass-lang.com/documentation/modules/string#slice См. также: Официальная документация Sass - Функция string.slice()
|
|
27
|
+
/// @link https://sass-lang.com/documentation/modules/string#length См. также: Официальная документация Sass - Функция string.length()
|
|
28
|
+
/// @link https://developer.mozilla.org/en-US/docs/Web/CSS/string_value См. также: MDN Web Docs - CSS-тип <string>
|
|
29
|
+
/// @link https://sass-lang.com/documentation/operators/equality См. также: Официальная документация Sass - Операторы равенства
|
|
30
|
+
/// @link https://sass-lang.com/documentation/values/strings#interpolation См. также: Официальная документация Sass - Интерполяция строк
|
|
31
|
+
/// @link https://sass-lang.com/documentation/values/strings#quotes См. также: Официальная документация Sass - Кавычки в строках
|
|
32
|
+
/// @example scss - Строка заканчивается подстрокой
|
|
33
|
+
/// @debug is-string-ending-with('hello world', 'world'); // true
|
|
34
|
+
/// @debug is-string-ending-with('test-string', 'string'); // true
|
|
35
|
+
/// @debug is-string-ending-with('filename.jpg', '.jpg'); // true
|
|
36
|
+
/// @example scss - Строка не заканчивается подстрокой
|
|
37
|
+
/// @debug is-string-ending-with('hello world', 'hello'); // false
|
|
38
|
+
/// @debug is-string-ending-with('test', 'testing'); // false (подстрока длиннее строки)
|
|
39
|
+
/// @debug is-string-ending-with('World', 'world'); // false (регистр не совпадает)
|
|
40
|
+
/// @example scss - Граничные случаи
|
|
41
|
+
/// @debug is-string-ending-with('', ''); // true (обе строки пустые)
|
|
42
|
+
/// @debug is-string-ending-with('abc', ''); // false
|
|
43
|
+
/// @debug is-string-ending-with('', 'abc'); // false (строка короче подстроки)
|
|
44
|
+
/// @debug is-string-ending-with('space ', ' '); // true (пробелы в конце учитываются)
|
|
45
|
+
/// @example scss - Специальные символы и расширения файлов
|
|
46
|
+
/// @debug is-string-ending-with('style.css', '.css'); // true
|
|
47
|
+
/// @debug is-string-ending-with('data.json', '.json'); // true
|
|
48
|
+
/// @debug is-string-ending-with('index.html', '.html'); // true
|
|
49
|
+
/// @debug is-string-ending-with('text.txt', '.txt'); // true
|
|
50
|
+
/// @param {String} $string - Основная строка, в которой выполняется поиск.
|
|
51
|
+
/// @param {String} $substring - Подстрока, наличие которой проверяется
|
|
52
|
+
/// в конце основной строки.
|
|
53
|
+
/// @return {Boolean} - Возвращает `true`, если строка заканчивается
|
|
54
|
+
/// указанной подстрокой. Возвращает `false`, если строка не заканчивается
|
|
55
|
+
/// подстрокой, если подстрока длиннее строки, или если регистр
|
|
56
|
+
/// символов не совпадает.
|
|
57
|
+
/// @throws {Error} - Не выбрасывает ошибок. Если переданы нестроковые
|
|
58
|
+
/// значения, функция может вернуть неожиданный результат или вызвать
|
|
59
|
+
/// ошибку выполнения.
|
|
60
|
+
@function is-string-ending-with($string, $substring) {
|
|
61
|
+
|
|
62
|
+
$-substring-length: string.length($substring);
|
|
63
|
+
|
|
64
|
+
@return string.slice($string, -$-substring-length) == $substring;
|
|
65
|
+
|
|
66
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
@use 'sass:string';
|
|
2
|
+
|
|
3
|
+
/// Проверяет, начинается ли строка с указанной подстроки.
|
|
4
|
+
///
|
|
5
|
+
/// Функция извлекает начало строки, равное по длине проверяемой
|
|
6
|
+
/// подстроке, и сравнивает его с этой подстрокой. Если
|
|
7
|
+
/// извлеченная часть строки совпадает с подстрокой, функция
|
|
8
|
+
/// возвращает `true`. В противном случае возвращается `false`.
|
|
9
|
+
///
|
|
10
|
+
/// Важные особенности функции:
|
|
11
|
+
/// - Использует функцию `string.slice()` для извлечения части
|
|
12
|
+
/// строки
|
|
13
|
+
/// - Сравнивает извлеченную часть с подстрокой оператором равенства (==)
|
|
14
|
+
/// - Проверяет начало строки, начиная с первого символа (индекс 1)
|
|
15
|
+
/// - Чувствительна к регистру символов
|
|
16
|
+
/// - Учитывает пробелы и специальные символы
|
|
17
|
+
/// ---
|
|
18
|
+
/// @name is-string-starting-with
|
|
19
|
+
/// @group utilities-validators
|
|
20
|
+
/// @since 2026.01.03
|
|
21
|
+
/// @access public
|
|
22
|
+
/// @author Murad Rustamov (therteenten)
|
|
23
|
+
/// @link https://sourcecraft.dev/users/therteenten/overview SourceCraft - therteenten
|
|
24
|
+
/// @link https://sourcecraft.dev/omnisass/library SourceCraft - OmniSass
|
|
25
|
+
/// @link https://sass-lang.com/documentation/values/strings См. также: Официальная документация Sass - Тип данных "Строки"
|
|
26
|
+
/// @link https://sass-lang.com/documentation/modules/string#slice См. также: Официальная документация Sass - Функция string.slice()
|
|
27
|
+
/// @link https://sass-lang.com/documentation/modules/string#length См. также: Официальная документация Sass - Функция string.length()
|
|
28
|
+
/// @link https://developer.mozilla.org/en-US/docs/Web/CSS/string_value См. также: MDN Web Docs - CSS-тип <string>
|
|
29
|
+
/// @link https://sass-lang.com/documentation/operators/equality См. также: Официальная документация Sass - Операторы равенства
|
|
30
|
+
/// @link https://sass-lang.com/documentation/values/strings#interpolation См. также: Официальная документация Sass - Интерполяция строк
|
|
31
|
+
/// @link https://sass-lang.com/documentation/values/strings#quotes См. также: Официальная документация Sass - Кавычки в строках
|
|
32
|
+
/// @example scss - Строка начинается с подстроки
|
|
33
|
+
/// @debug is-string-starting-with('hello world', 'hello'); // true
|
|
34
|
+
/// @debug is-string-starting-with('test-string', 'test'); // true
|
|
35
|
+
/// @debug is-string-starting-with('12345', '123'); // true
|
|
36
|
+
/// @example scss - Строка не начинается с подстроки
|
|
37
|
+
/// @debug is-string-starting-with('hello world', 'world'); // false
|
|
38
|
+
/// @debug is-string-starting-with('test', 'testing'); // false (подстрока длиннее строки)
|
|
39
|
+
/// @debug is-string-starting-with('Hello', 'hello'); // false (регистр не совпадает)
|
|
40
|
+
/// @example scss - Граничные случаи
|
|
41
|
+
/// @debug is-string-starting-with('', ''); // true (обе строки пустые)
|
|
42
|
+
/// @debug is-string-starting-with('abc', ''); // true (пустая подстрока всегда в начале)
|
|
43
|
+
/// @debug is-string-starting-with('', 'abc'); // false (строка короче подстроки)
|
|
44
|
+
/// @debug is-string-starting-with(' space', ' '); // true (пробелы учитываются)
|
|
45
|
+
/// @example scss - Специальные символы
|
|
46
|
+
/// @debug is-string-starting-with('#selector', '#'); // true
|
|
47
|
+
/// @debug is-string-starting-with('.class-name', '.'); // true
|
|
48
|
+
/// @debug is-string-starting-with('url(image.jpg)', 'url'); // true
|
|
49
|
+
/// @param {String} $string - Основная строка, в которой
|
|
50
|
+
/// выполняется поиск.
|
|
51
|
+
/// @param {String} $substring - Подстрока, наличие которой
|
|
52
|
+
/// проверяется в начале основной строки.
|
|
53
|
+
/// @return {Boolean} - Возвращает `true`, если строка начинается
|
|
54
|
+
/// с указанной подстроки. Возвращает `false`, если строка не
|
|
55
|
+
/// начинается с подстроки, если подстрока длиннее строки, или
|
|
56
|
+
/// если регистр символов не совпадает.
|
|
57
|
+
/// @throws {Error} - Не выбрасывает ошибок. Если переданы
|
|
58
|
+
/// нестроковые значения, функция может вернуть неожиданный
|
|
59
|
+
/// результат или вызвать ошибку выполнения.
|
|
60
|
+
@function is-string-starting-with($string, $substring) {
|
|
61
|
+
@return string.slice(
|
|
62
|
+
$string,
|
|
63
|
+
1,
|
|
64
|
+
string.length($substring)
|
|
65
|
+
) == $substring;
|
|
66
|
+
}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
@use 'sass:meta';
|
|
2
|
+
|
|
3
|
+
/// Проверяет, является ли переданное значение
|
|
4
|
+
/// логическим типом (boolean).
|
|
5
|
+
///
|
|
6
|
+
/// Функция анализирует тип переданной переменной
|
|
7
|
+
/// и возвращает `true`, если это логическое
|
|
8
|
+
/// значение (true или false). Используется для
|
|
9
|
+
/// валидации входных параметров в функциях и миксинах,
|
|
10
|
+
/// а также для условных операций в зависимости от
|
|
11
|
+
/// типа данных.
|
|
12
|
+
/// ---
|
|
13
|
+
/// @name is-boolean
|
|
14
|
+
/// @group utilities-validators
|
|
15
|
+
/// @since 2025.12.27
|
|
16
|
+
/// @access public
|
|
17
|
+
/// @author takamoso
|
|
18
|
+
/// @author Murad Rustamov (therteenten) [адаптация]
|
|
19
|
+
/// @link https://github.com/takamoso GitHub - takamoso
|
|
20
|
+
/// @link https://sourcecraft.dev/users/therteenten/overview SourceCraft - therteenten
|
|
21
|
+
/// @link https://sourcecraft.dev/omnisass/library SourceCraft - OmniSass
|
|
22
|
+
/// @link https://sass-lang.com/documentation/modules/meta#type-of См. также: Официальная документация Sass - Функция meta.type-of()
|
|
23
|
+
/// @link https://sass-lang.com/documentation/modules/meta См. также: Официальная документация Sass - Модуль meta
|
|
24
|
+
/// @link https://sass-lang.com/documentation/values/booleans См. также: Официальная документация Sass - Тип данных "Логические значения" (Booleans)
|
|
25
|
+
/// @link https://sass-lang.com/documentation/at-rules/function См. также: Официальная документация Sass - Правило @function
|
|
26
|
+
/// @link https://sass-lang.com/documentation/style-rules/declarations#custom-properties См. также: Документация Sass - Пользовательские функции
|
|
27
|
+
/// @link https://developer.mozilla.org/en-US/docs/Web/CSS/:checked См. также: MDN Web Docs - Псевдокласс :checked
|
|
28
|
+
/// @link https://developer.mozilla.org/en-US/docs/Web/CSS/:enabled См. также: MDN Web Docs - Псевдокласс :enabled
|
|
29
|
+
/// @link https://www.w3schools.com/sass/sass_functions_meta.php См. также: W3Schools - Мета-функции в Sass
|
|
30
|
+
/// @link https://www.sass.hk/docs/ См. также: Китайская документация Sass - Полное руководство
|
|
31
|
+
/// @link https://sass-guidelin.es/ru/#section-39 См. также: Sass Guidelines - Раздел про проверку типов
|
|
32
|
+
/// @link https://github.com/sass/sass/blob/main/accepted/module-system.md См. также: GitHub - Документация по модульной системе Sass
|
|
33
|
+
/// @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
|
|
34
|
+
/// @link https://stackoverflow.com/questions/51785890/sass-check-if-a-variable-is-of-type-boolean См. также: Stack Overflow - Проверка, является ли переменная булевой
|
|
35
|
+
/// @link https://css-tricks.com/snippets/sass/ См. также: CSS-Tricks - Коллекция сниппетов Sass
|
|
36
|
+
/// @link https://web.dev/learn/css/pseudo-classes/ См. также: web.dev - Изучение псевдоклассов CSS
|
|
37
|
+
/// @link https://frontender.info/sass-type-checking/ См. также: Frontender Magazine - Проверка типов в Sass
|
|
38
|
+
/// @link https://habr.com/ru/post/156549/ См. также: Habr - Статья "Sass для верстальщика: типы данных"
|
|
39
|
+
/// @link https://www.sitepoint.com/sass-basics-operators/ См. также: SitePoint - Основы Sass: операторы сравнения
|
|
40
|
+
/// @link https://www.freecodecamp.org/news/sass-data-types/ См. также: freeCodeCamp - Типы данных в Sass
|
|
41
|
+
/// @link https://code.tutsplus.com/tutorials/understanding-sass-data-types--cms-22110 См. также: Envato Tuts+ - Понимание типов данных в Sass
|
|
42
|
+
/// @link https://dev.to/kathryngrayson/sass-type-checking-1p6c См. также: Dev.to - Проверка типов в Sass
|
|
43
|
+
/// @link https://css-live.ru/articles/uskorenie-razrabotki-s-pomoshhyu-sass.html См. также: CSS-Live - Ускорение разработки с помощью Sass
|
|
44
|
+
/// @link https://itchief.ru/sass/data-types См. также: itchief - Типы данных в Sass
|
|
45
|
+
/// @link https://htmlacademy.ru/blog/boost/tools/sass-2 См. также: HTML Academy - Sass: переменные и типы данных
|
|
46
|
+
/// @link https://metanit.com/web/html5/13.3.php См. также: Metanit - Типы данных в Sass
|
|
47
|
+
/// @link https://ru.hexlet.io/courses/sass-basics/lessons/data-types/theory_unit См. также: Hexlet - Типы данных в Sass
|
|
48
|
+
/// @link https://www.youtube.com/watch?v=Zz6eOVaaelI См. также: YouTube - Sass Tutorial #4 - Data Types (The Net Ninja)
|
|
49
|
+
/// @link https://www.youtube.com/watch?v=URtUXqOQq0k См. также: YouTube - Типы данных в Sass (на русском)
|
|
50
|
+
/// @link https://codelabs.developers.google.com/codelabs/cloud-sass-cli#5 См. также: Google Codelabs - Создание пользовательских функций в Sass
|
|
51
|
+
/// @link https://www.npmjs.com/package/sass См. также: npm - Документация пакета Dart Sass
|
|
52
|
+
/// @link https://marketplace.visualstudio.com/items?itemName=Syler.sass-indented См. также: VS Code Marketplace - Поддержка синтаксиса Sass
|
|
53
|
+
/// @link https://stylelint.io/user-guide/rules/selector-pseudo-class/ См. также: Stylelint - Правила для псевдоклассов
|
|
54
|
+
/// @link https://sass-lang.com/documentation/js-api См. также: JavaScript API - Работа с Sass через JavaScript
|
|
55
|
+
/// @link https://sass-lang.com/documentation/cli/dart-sass См. также: CLI - Командная строка Dart Sass
|
|
56
|
+
/// @link https://sass-lang.com/documentation/breaking-changes/module-system См. также: Breaking Changes - Изменения в модульной системе
|
|
57
|
+
/// @link https://sass-lang.com/documentation/values/numbers См. также: Документация Sass - Числа
|
|
58
|
+
/// @link https://sass-lang.com/documentation/values/strings См. также: Документация Sass - Строки
|
|
59
|
+
/// @link https://sass-lang.com/documentation/values/colors См. также: Документация Sass - Цвета
|
|
60
|
+
/// @link https://sass-lang.com/documentation/values/null См. также: Документация Sass - Значение null
|
|
61
|
+
/// @link https://sass-lang.com/documentation/values/maps См. также: Документация Sass - Карты (maps)
|
|
62
|
+
/// @link https://sass-lang.com/documentation/interpolation См. также: Документация Sass - Интерполяция
|
|
63
|
+
/// @example scss - Базовое использование
|
|
64
|
+
/// $is-valid: true;
|
|
65
|
+
/// $count: 42;
|
|
66
|
+
/// $message: "text";
|
|
67
|
+
///
|
|
68
|
+
/// @debug is-boolean($is-valid); //=> true
|
|
69
|
+
/// @debug is-boolean($count); //=> false
|
|
70
|
+
/// @debug is-boolean($message); //=> false
|
|
71
|
+
/// @example scss - Использование в условиях
|
|
72
|
+
/// @if is-boolean($setting) {
|
|
73
|
+
/// // Выполняется только для boolean значений
|
|
74
|
+
/// @debug "Настройка имеет логический тип";
|
|
75
|
+
/// } @else {
|
|
76
|
+
/// @warn "Ожидается логическое значение true/false";
|
|
77
|
+
/// }
|
|
78
|
+
/// @example scss - Валидация параметров функции
|
|
79
|
+
/// @function set-visibility($is-visible) {
|
|
80
|
+
/// @if not is-boolean($is-visible) {
|
|
81
|
+
/// @error "Параметр $is-visible должен быть true или false";
|
|
82
|
+
/// }
|
|
83
|
+
/// @return if($is-visible, block, none);
|
|
84
|
+
/// }
|
|
85
|
+
/// @param {*} $value - Переменная для проверки типа
|
|
86
|
+
/// (может быть любого типа).
|
|
87
|
+
/// @return {Boolean} - `true` если переменная является
|
|
88
|
+
/// логическим типом (true/false), `false` во
|
|
89
|
+
/// всех остальных случаях.
|
|
90
|
+
@function is-boolean($value) {
|
|
91
|
+
@return meta.type-of($value) == bool;
|
|
92
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
@use 'sass:meta';
|
|
2
|
+
|
|
3
|
+
/// Проверяет, является ли значение допустимым цветом.
|
|
4
|
+
///
|
|
5
|
+
/// Функция `is-color()` определяет, представляет ли
|
|
6
|
+
/// переданное значение допустимый цвет в Sass. Это
|
|
7
|
+
/// типобезопасная проверка, которая помогает избежать
|
|
8
|
+
/// ошибок при работе с динамическими значениями,
|
|
9
|
+
/// или данными из внешних источников.
|
|
10
|
+
///
|
|
11
|
+
/// Особенно полезна в миксинах и функциях, которые ожидают
|
|
12
|
+
/// цветовые параметры.
|
|
13
|
+
///
|
|
14
|
+
/// > Функция проверяет тип значения во время компиляции, а
|
|
15
|
+
/// > не содержимое. Строка `"#ff0000"` вернет `false`, хотя
|
|
16
|
+
/// > выглядит как цвет.
|
|
17
|
+
///
|
|
18
|
+
/// > CSS-переменные (`var(--my-color)`) считаются строками,
|
|
19
|
+
/// > а не цветами, даже если они ссылаются на цветовые
|
|
20
|
+
/// > значения.
|
|
21
|
+
/// ---
|
|
22
|
+
/// @name is-color
|
|
23
|
+
/// @group utilities-validators
|
|
24
|
+
/// @since 2025.12.27
|
|
25
|
+
/// @access public
|
|
26
|
+
/// @author Murad Rustamov (therteenten)
|
|
27
|
+
/// @link https://sourcecraft.dev/users/therteenten/overview SourceCraft - therteenten
|
|
28
|
+
/// @link https://sourcecraft.dev/omnisass/library SourceCraft - OmniSass
|
|
29
|
+
/// @link https://sass-lang.com/documentation/values/colors См. также: Sass - Значения цветов
|
|
30
|
+
/// @link https://sass-lang.com/documentation/modules/meta#type-of См. также: Sass - Функция meta.type-of()
|
|
31
|
+
/// @link https://developer.mozilla.org/en-US/docs/Web/CSS/color_value См. также: MDN - Значения цвета CSS
|
|
32
|
+
/// @link https://www.w3.org/TR/css-color-4/ См. также: W3C - CSS Color Module Level 4
|
|
33
|
+
/// @link https://www.w3schools.com/sass/sass_data_types.php См. также: W3Schools - Типы данных Sass
|
|
34
|
+
/// @link https://www.sitepoint.com/5-things-you-might-not-know-about-sass/#typeof См. также: SitePoint - 5 вещей о Sass
|
|
35
|
+
/// @link https://css-tricks.com/snippets/sass/advanced-type-checking/ См. также: CSS-Tricks - Продвинутая проверка типов в Sass
|
|
36
|
+
/// @link https://webplatform.news/issues/2023-07-12 См. также: WebPlatform News - Цвета в CSS
|
|
37
|
+
/// @example scss - Проверка статических значений
|
|
38
|
+
/// @debug is-color(#ff0000); // true
|
|
39
|
+
/// @debug is-color(rgb(255, 0, 0)); // true
|
|
40
|
+
/// @debug is-color(red); // true
|
|
41
|
+
/// @debug is-color("red"); // false (строка, не цвет!)
|
|
42
|
+
/// @debug is-color(16px); // false
|
|
43
|
+
/// @debug is-color(null); // false
|
|
44
|
+
///
|
|
45
|
+
/// @example scss - Обработка динамических значений
|
|
46
|
+
/// @mixin apply-color($value) {
|
|
47
|
+
/// @if is-color($value) {
|
|
48
|
+
/// color: $value;
|
|
49
|
+
/// } @else {
|
|
50
|
+
/// @warn "Ожидался цвет, получено: #{$value}. Используется значение по умолчанию.";
|
|
51
|
+
/// color: #333;
|
|
52
|
+
/// }
|
|
53
|
+
/// }
|
|
54
|
+
///
|
|
55
|
+
/// .test {
|
|
56
|
+
/// @include apply-color(#ffffff);
|
|
57
|
+
/// }
|
|
58
|
+
/// @example css - Результат
|
|
59
|
+
/// .test {
|
|
60
|
+
/// color: #ffffff;
|
|
61
|
+
/// }
|
|
62
|
+
/// @example scss - Валидация в дизайн-системе
|
|
63
|
+
/// :root {
|
|
64
|
+
///
|
|
65
|
+
/// $custom-color: var(--user-color, #3498db);
|
|
66
|
+
///
|
|
67
|
+
/// @if is-color($custom-color) {
|
|
68
|
+
/// --validated-color: #{$custom-color};
|
|
69
|
+
/// } @else {
|
|
70
|
+
/// --validated-color: #3498db;
|
|
71
|
+
/// }
|
|
72
|
+
///
|
|
73
|
+
/// }
|
|
74
|
+
/// @example css - Результат
|
|
75
|
+
/// :root {
|
|
76
|
+
/// --validated-color: #3498db;
|
|
77
|
+
/// }
|
|
78
|
+
/// @param {*} $value - Произвольное значение для проверки.
|
|
79
|
+
/// Может быть любого типа: строка, число, список, карта,
|
|
80
|
+
/// цвет, логическое значение и т.д.
|
|
81
|
+
/// @return {Boolean} - Возвращает `true`, если значение
|
|
82
|
+
/// является цветом, и `false` в противном случае.
|
|
83
|
+
/// Распознает все форматы цветов, поддерживаемые Sass:
|
|
84
|
+
/// - HEX (`#ff0000`, `#f00`),
|
|
85
|
+
/// - RGB/A (`rgb(255, 0, 0)`, `rgba(255, 0, 0, 0.5)`),
|
|
86
|
+
/// - HSL/A (`hsl(0, 100%, 50%)`, `hsla(0, 100%, 50%, 0.5)`),
|
|
87
|
+
/// - Именованные цвета (`red`, `blue`, `transparent`, `currentColor`),
|
|
88
|
+
/// - Цвета в новых пространствах (`lab()`, `lch()`, `oklab()`, `oklch()`),
|
|
89
|
+
/// - CSS-переменные (если они ссылаются на цвета)
|
|
90
|
+
@function is-color($value) {
|
|
91
|
+
@return meta.type-of($value) == color;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
@use 'sass:list';
|
|
2
|
+
@use 'sass:meta';
|
|
3
|
+
|
|
4
|
+
/// Проверяет, является ли значение списком
|
|
5
|
+
/// (list) или списком аргументов (arglist).
|
|
6
|
+
///
|
|
7
|
+
/// Функция определяет, относится ли переданное
|
|
8
|
+
/// значение к типам данных "список" в Sass.
|
|
9
|
+
/// Проверяет как обычные списки (list), так и
|
|
10
|
+
/// списки аргументов (arglist), которые используются
|
|
11
|
+
/// в миксинах и функциях для передачи переменного
|
|
12
|
+
/// количества параметров.
|
|
13
|
+
/// ---
|
|
14
|
+
/// @name is-list
|
|
15
|
+
/// @group utilities-validators
|
|
16
|
+
/// @since 2025.12.27
|
|
17
|
+
/// @access public
|
|
18
|
+
/// @author takamoso
|
|
19
|
+
/// @author Murad Rustamov (therteenten) [адаптация]
|
|
20
|
+
/// @link https://github.com/takamoso GitHub - takamoso
|
|
21
|
+
/// @link https://sourcecraft.dev/users/therteenten/overview SourceCraft - therteenten
|
|
22
|
+
/// @link https://sourcecraft.dev/omnisass/library SourceCraft - OmniSass
|
|
23
|
+
/// @link https://sass-lang.com/documentation/modules/meta#type-of См. также: Официальная документация Sass - Функция meta.type-of()
|
|
24
|
+
/// @link https://sass-lang.com/documentation/modules/meta См. также: Официальная документация Sass - Модуль meta
|
|
25
|
+
/// @link https://sass-lang.com/documentation/values/lists См. также: Официальная документация Sass - Тип данных "Списки" (Lists)
|
|
26
|
+
/// @link https://sass-lang.com/documentation/values/lists#arglists См. также: Официальная документация Sass - Arglist (списки аргументов)
|
|
27
|
+
/// @link https://sass-lang.com/documentation/at-rules/function См. также: Официальная документация Sass - Правило @function
|
|
28
|
+
/// @link https://sass-lang.com/documentation/style-rules/declarations#custom-properties См. также: Документация Sass - Пользовательские функции
|
|
29
|
+
/// @link https://developer.mozilla.org/en-US/docs/Web/CSS/list-style-type См. также: MDN Web Docs - CSS свойство list-style-type
|
|
30
|
+
/// @link https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_lists См. также: MDN Web Docs - Работа со списками в CSS
|
|
31
|
+
/// @link https://www.w3schools.com/sass/sass_functions_list.php См. также: W3Schools - Функции для работы со списками в Sass
|
|
32
|
+
/// @link https://www.sass.hk/docs/ См. также: Китайская документация Sass - Полное руководство
|
|
33
|
+
/// @link https://sass-guidelin.es/ru/#section-39 См. также: Sass Guidelines - Раздел про проверку типов данных
|
|
34
|
+
/// @link https://github.com/sass/sass/blob/main/accepted/module-system.md См. также: GitHub - Документация по модульной системе Sass
|
|
35
|
+
/// @link https://stackoverflow.com/questions/36885966/sass-get-first-item-from-a-list См. также: Stack Overflow - Работа со списками в Sass
|
|
36
|
+
/// @link https://stackoverflow.com/questions/12528457/determine-type-of-a-variable-in-sass См. также: Stack Overflow - Определение типа переменной в Sass
|
|
37
|
+
/// @link https://css-tricks.com/snippets/sass/ См. также: CSS-Tricks - Коллекция сниппетов Sass
|
|
38
|
+
/// @link https://web.dev/learn/css/lists/ См. также: web.dev - Изучение CSS списков
|
|
39
|
+
/// @link https://frontender.info/sass-lists/ См. также: Frontender Magazine - Работа со списками в Sass
|
|
40
|
+
/// @link https://habr.com/ru/post/156549/ См. также: Habr - Статья "Sass для верстальщика: списки и циклы"
|
|
41
|
+
/// @link https://www.sitepoint.com/using-sass-maps/ См. также: SitePoint - Использование карт (maps) в Sass
|
|
42
|
+
/// @link https://www.freecodecamp.org/news/how-to-use-lists-in-sass/ См. также: freeCodeCamp - Как использовать списки в Sass
|
|
43
|
+
/// @link https://code.tutsplus.com/tutorials/understanding-sass-lists--cms-22020 См. также: Envato Tuts+ - Понимание списков в Sass
|
|
44
|
+
/// @link https://dev.to/kathryngrayson/using-sass-list-functions-4lp См. также: Dev.to - Использование функций для работы со списками в Sass
|
|
45
|
+
/// @link https://css-live.ru/vecssti-i-sovety/vse-o-spiskax-v-sass.html См. также: CSS-Live - Все о списках в Sass
|
|
46
|
+
/// @link https://itchief.ru/sass/cycles-and-lists См. также: itchief - Циклы и списки в Sass
|
|
47
|
+
/// @link https://htmlacademy.ru/blog/boost/tools/sass-3 См. также: HTML Academy - Sass: списки, циклы, условия
|
|
48
|
+
/// @link https://metanit.com/web/html5/13.6.php См. также: Metanit - Списки и циклы в Sass
|
|
49
|
+
/// @link https://ru.hexlet.io/courses/sass-basics/lessons/conditionals/theory_unit См. также: Hexlet - Условные операторы и списки в Sass
|
|
50
|
+
/// @link https://www.youtube.com/watch?v=roywYSEPSvc См. также: YouTube - Sass Tutorial #10 - Lists (The Net Ninja)
|
|
51
|
+
/// @link https://www.youtube.com/watch?v=BIz02qY5BRA См. также: YouTube - Sass списки и циклы (на русском)
|
|
52
|
+
/// @link https://codelabs.developers.google.com/codelabs/cloud-sass-cli#5 См. также: Google Codelabs - Создание пользовательских функций в Sass
|
|
53
|
+
/// @link https://www.npmjs.com/package/sass См. также: npm - Документация пакета Dart Sass
|
|
54
|
+
/// @link https://marketplace.visualstudio.com/items?itemName=Syler.sass-indented См. также: VS Code Marketplace - Поддержка синтаксиса Sass
|
|
55
|
+
/// @link https://stylelint.io/user-guide/rules/list/ См. также: Stylelint - Правила для работы со списками
|
|
56
|
+
/// @link https://sass-lang.com/documentation/js-api См. также: JavaScript API - Работа с Sass через JavaScript
|
|
57
|
+
/// @link https://sass-lang.com/documentation/cli/dart-sass См. также: CLI - Командная строка Dart Sass
|
|
58
|
+
/// @link https://sass-lang.com/documentation/breaking-changes/module-system См. также: Breaking Changes - Изменения в модульной системе
|
|
59
|
+
/// @link https://sass-lang.com/documentation/values/booleans См. также: Документация Sass - Логические значения
|
|
60
|
+
/// @link https://sass-lang.com/documentation/values/strings См. также: Документация Sass - Строки
|
|
61
|
+
/// @link https://sass-lang.com/documentation/values/colors См. также: Документация Sass - Цвета
|
|
62
|
+
/// @link https://sass-lang.com/documentation/values/null См. также: Документация Sass - Значение null
|
|
63
|
+
/// @link https://sass-lang.com/documentation/values/maps См. также: Документация Sass - Карты (maps)
|
|
64
|
+
/// @link https://sass-lang.com/documentation/interpolation См. также: Документация Sass - Интерполяция
|
|
65
|
+
/// @link https://sass-lang.com/documentation/at-rules/mixin#taking-arbitrary-arguments См. также: Документация Sass - Прием произвольных аргументов (arglist)
|
|
66
|
+
/// @link https://sass-lang.com/documentation/at-rules/function#taking-arbitrary-arguments См. также: Документация Sass - Функции с произвольными аргументами
|
|
67
|
+
/// @link https://sass-lang.com/documentation/modules/list#functions-in-the-list-module См. также: Документация Sass - Функции модуля list
|
|
68
|
+
/// @example scss - Проверка списков
|
|
69
|
+
/// $simple-list: 1, 2, 3;
|
|
70
|
+
/// $nested-list: (1, 2), (3, 4);
|
|
71
|
+
/// $single-item: (1,);
|
|
72
|
+
/// $empty-list: ();
|
|
73
|
+
///
|
|
74
|
+
/// @debug is-list($simple-list); // true
|
|
75
|
+
/// @debug is-list($nested-list); // true
|
|
76
|
+
/// @debug is-list($single-item); // true
|
|
77
|
+
/// @debug is-list($empty-list); // true
|
|
78
|
+
/// @example scss - Проверка других типов
|
|
79
|
+
/// @debug is-list(42); // false
|
|
80
|
+
/// @debug is-list("text"); // false
|
|
81
|
+
/// @debug is-list(true); // false
|
|
82
|
+
/// @debug is-list(#fff); // false
|
|
83
|
+
/// @debug is-list((key: value)); // false (это map)
|
|
84
|
+
/// @example scss - Использование с миксинами
|
|
85
|
+
/// @mixin custom-mixin($items...) {
|
|
86
|
+
/// @if is-list($items) {
|
|
87
|
+
/// @each $item in $items {
|
|
88
|
+
/// // Обработка каждого элемента списка
|
|
89
|
+
/// }
|
|
90
|
+
/// }
|
|
91
|
+
/// }
|
|
92
|
+
/// @example scss - Валидация параметров
|
|
93
|
+
/// @function join-lists($list1, $list2) {
|
|
94
|
+
/// @if not is-list($list1) or not is-list($list2) {
|
|
95
|
+
/// @error "Оба параметра должны быть списками";
|
|
96
|
+
/// }
|
|
97
|
+
/// @return join($list1, $list2);
|
|
98
|
+
/// }
|
|
99
|
+
/// @param {*} $value - Проверяемое значение
|
|
100
|
+
/// @return {Boolean} - `true` если значение является
|
|
101
|
+
/// списком или списком аргументов, `false` во всех
|
|
102
|
+
/// остальных случаях.
|
|
103
|
+
@function is-list($value) {
|
|
104
|
+
@return meta.type-of($value) == list or meta.type-of($value) == arglist;
|
|
105
|
+
}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
@use 'sass:meta';
|
|
2
|
+
|
|
3
|
+
/// Проверяет, является ли значение ассоциативным
|
|
4
|
+
/// массивом (map).
|
|
5
|
+
///
|
|
6
|
+
/// Функция определяет, относится ли переданное
|
|
7
|
+
/// значение к типу данных "map" в Sass.
|
|
8
|
+
/// Map представляет собой коллекцию пар ключ-значение
|
|
9
|
+
/// и используется для хранения структурированных данных,
|
|
10
|
+
/// конфигураций и тематических настроек.
|
|
11
|
+
/// ---
|
|
12
|
+
/// @name is-map
|
|
13
|
+
/// @group utilities-validators
|
|
14
|
+
/// @since 2025.12.27
|
|
15
|
+
/// @access public
|
|
16
|
+
/// @author takamoso
|
|
17
|
+
/// @author Murad Rustamov (therteenten) [адаптация]
|
|
18
|
+
/// @link https://github.com/takamoso GitHub - takamoso
|
|
19
|
+
/// @link https://sourcecraft.dev/users/therteenten/overview SourceCraft - therteenten
|
|
20
|
+
/// @link https://sourcecraft.dev/omnisass/library SourceCraft - OmniSass
|
|
21
|
+
/// @link https://sass-lang.com/documentation/modules/meta#type-of См. также: Официальная документация Sass - Функция `meta.type-of()`
|
|
22
|
+
/// @link https://sass-lang.com/documentation/modules/meta См. также: Официальная документация Sass - Модуль `meta`
|
|
23
|
+
/// @link https://sass-lang.com/documentation/values/maps См. также: Официальная документация Sass - Тип данных "Карты" (Maps)
|
|
24
|
+
/// @link https://sass-lang.com/documentation/modules/map См. также: Официальная документация Sass - Модуль map
|
|
25
|
+
/// @link https://sass-lang.com/documentation/at-rules/function См. также: Официальная документация Sass - Правило `@function`
|
|
26
|
+
/// @link https://sass-lang.com/documentation/style-rules/declarations#custom-properties См. также: Документация Sass - Пользовательские функции
|
|
27
|
+
/// @link https://developer.mozilla.org/en-US/docs/Web/CSS/map См. также: MDN Web Docs - CSS тип данных map()
|
|
28
|
+
/// @link https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_functions См. также: MDN Web Docs - CSS функции
|
|
29
|
+
/// @link https://www.w3schools.com/sass/sass_functions_map.php См. также: W3Schools - Функции для работы с картами в Sass
|
|
30
|
+
/// @link https://www.sass.hk/docs/ См. также: Китайская документация Sass - Полное руководство
|
|
31
|
+
/// @link https://sass-guidelin.es/ru/#maps См. также: Sass Guidelines - Руководство по использованию карт в Sass
|
|
32
|
+
/// @link https://github.com/sass/sass/blob/main/accepted/module-system.md См. также: GitHub - Документация по модульной системе Sass
|
|
33
|
+
/// @link https://stackoverflow.com/questions/21192078/sass-check-if-map-has-key См. также: Stack Overflow - Проверка наличия ключа в карте Sass
|
|
34
|
+
/// @link https://stackoverflow.com/questions/21768988/how-to-check-for-a-map-in-sass См. также: Stack Overflow - Как проверить, является ли значение картой в Sass
|
|
35
|
+
/// @link https://css-tricks.com/snippets/sass/ См. также: CSS-Tricks - Коллекция сниппетов Sass
|
|
36
|
+
/// @link https://web.dev/learn/css/functions/ См. также: web.dev - Изучение CSS функций
|
|
37
|
+
/// @link https://frontender.info/sass-maps/ См. также: Frontender Magazine - Работа с картами в Sass
|
|
38
|
+
/// @link https://habr.com/ru/post/247881/ См. также: Habr - Статья "Sass для верстальщика: карты (maps)"
|
|
39
|
+
/// @link https://www.sitepoint.com/using-sass-maps/ См. также: SitePoint - Использование карт в Sass
|
|
40
|
+
/// @link https://www.freecodecamp.org/news/sass-maps/ См. также: freeCodeCamp - Карты в Sass
|
|
41
|
+
/// @link https://code.tutsplus.com/tutorials/understanding-sass-maps--cms-22184 См. также: Envato Tuts+ - Понимание карт в Sass
|
|
42
|
+
/// @link https://dev.to/kathryngrayson/sass-maps-43cn См. также: Dev.to - Карты в Sass
|
|
43
|
+
/// @link https://css-live.ru/articles/karty-v-sass-samaya-polnaya-statya.html См. также: CSS-Live - Карты в Sass: самая полная статья
|
|
44
|
+
/// @link https://itchief.ru/sass/maps См. также: itchief - Карты в Sass
|
|
45
|
+
/// @link https://htmlacademy.ru/blog/boost/tools/sass-maps См. также: HTML Academy - Карты в Sass
|
|
46
|
+
/// @link https://metanit.com/web/html5/13.7.php См. также: Metanit - Карты в Sass
|
|
47
|
+
/// @link https://ru.hexlet.io/courses/sass-basics/lessons/maps/theory_unit См. также: Hexlet - Карты в Sass
|
|
48
|
+
/// @link https://www.youtube.com/watch?v=7uUaU0KpO3Y См. также: YouTube - Sass Tutorial #11 - Maps (The Net Ninja)
|
|
49
|
+
/// @link https://www.youtube.com/watch?v=8y-6p8n8Vc8 См. также: YouTube - Карты в Sass (на русском)
|
|
50
|
+
/// @link https://codelabs.developers.google.com/codelabs/cloud-sass-cli#5 См. также: Google Codelabs - Создание пользовательских функций в Sass
|
|
51
|
+
/// @link https://www.npmjs.com/package/sass См. также: npm - Документация пакета Dart Sass
|
|
52
|
+
/// @link https://marketplace.visualstudio.com/items?itemName=Syler.sass-indented См. также: VS Code Marketplace - Поддержка синтаксиса Sass
|
|
53
|
+
/// @link https://stylelint.io/user-guide/rules/declaration-property-value/ См. также: Stylelint - Правила для значений свойств
|
|
54
|
+
/// @link https://sass-lang.com/documentation/js-api См. также: JavaScript API - Работа с Sass через JavaScript
|
|
55
|
+
/// @link https://sass-lang.com/documentation/cli/dart-sass См. также: CLI - Командная строка Dart Sass
|
|
56
|
+
/// @link https://sass-lang.com/documentation/breaking-changes/module-system См. также: Breaking Changes - Изменения в модульной системе
|
|
57
|
+
/// @link https://sass-lang.com/documentation/values/booleans См. также: Документация Sass - Логические значения
|
|
58
|
+
/// @link https://sass-lang.com/documentation/values/strings См. также: Документация Sass - Строки
|
|
59
|
+
/// @link https://sass-lang.com/documentation/values/lists См. также: Документация Sass - Списки
|
|
60
|
+
/// @link https://sass-lang.com/documentation/values/colors См. также: Документация Sass - Цвета
|
|
61
|
+
/// @link https://sass-lang.com/documentation/values/null См. также: Документация Sass - Значение `null`
|
|
62
|
+
/// @link https://sass-lang.com/documentation/interpolation См. также: Документация Sass - Интерполяция
|
|
63
|
+
/// @link https://sass-lang.com/documentation/modules/map#functions-in-the-map-module См. также: Документация Sass - Функции модуля map
|
|
64
|
+
/// @link https://sass-lang.com/documentation/modules/map#keys См. также: Документация Sass - Функция `map.keys()`
|
|
65
|
+
/// @link https://sass-lang.com/documentation/modules/map#values См. также: Документация Sass - Функция `map.values()`
|
|
66
|
+
/// @link https://sass-lang.com/documentation/modules/map#get См. также: Документация Sass - Функция `map.get()`
|
|
67
|
+
/// @link https://sass-lang.com/documentation/modules/map#merge См. также: Документация Sass - Функция `map.merge()`
|
|
68
|
+
/// @link https://sass-lang.com/documentation/modules/map#remove См. также: Документация Sass - Функция `map.remove()`
|
|
69
|
+
/// @example scss - Проверка map
|
|
70
|
+
/// $color-map: (primary: blue, secondary: green);
|
|
71
|
+
/// $config-map: (font-size: 16px, spacing: 10px);
|
|
72
|
+
/// $nested-map: (colors: (primary: red, secondary: blue));
|
|
73
|
+
/// $empty-map: ();
|
|
74
|
+
///
|
|
75
|
+
/// @debug is-map($color-map); // true
|
|
76
|
+
/// @debug is-map($config-map); // true
|
|
77
|
+
/// @debug is-map($nested-map); // true
|
|
78
|
+
/// @debug is-map($empty-map); // true
|
|
79
|
+
/// @example scss - Проверка других типов
|
|
80
|
+
/// @debug is-map((1, 2, 3)); // false (это list)
|
|
81
|
+
/// @debug is-map("hello"); // false
|
|
82
|
+
/// @debug is-map(42); // false
|
|
83
|
+
/// @debug is-map(true); // false
|
|
84
|
+
/// @example scss - Использование для безопасного доступа к map
|
|
85
|
+
/// @function map-get-safe($map, $key) {
|
|
86
|
+
/// @if not is-map($map) {
|
|
87
|
+
/// @warn "Первый параметр должен быть map";
|
|
88
|
+
/// @return null;
|
|
89
|
+
/// }
|
|
90
|
+
/// @return map.get($map, $key);
|
|
91
|
+
/// }
|
|
92
|
+
/// @example scss - Валидация конфигурационных объектов
|
|
93
|
+
/// @mixin configure($config) {
|
|
94
|
+
/// @if not is-map($config) {
|
|
95
|
+
/// @error "Конфигурация должна быть передана в виде map";
|
|
96
|
+
/// }
|
|
97
|
+
/// // Применение конфигурации
|
|
98
|
+
/// }
|
|
99
|
+
/// @param {*} $value - Проверяемое значение
|
|
100
|
+
/// @return {Boolean} - `true` если значение является
|
|
101
|
+
/// ассоциативным массивом (map), `false` во всех
|
|
102
|
+
/// остальных случаях.
|
|
103
|
+
@function is-map($value) {
|
|
104
|
+
@return meta.type-of($value) == map;
|
|
105
|
+
}
|