@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,103 @@
|
|
|
1
|
+
@use 'sass:meta';
|
|
2
|
+
|
|
3
|
+
/// Проверяет, является ли значение числом
|
|
4
|
+
///
|
|
5
|
+
/// Функция определяет тип данных переданного
|
|
6
|
+
/// значения и возвращает `true`, если значение
|
|
7
|
+
/// является числом (включая числа с единицами измерения).
|
|
8
|
+
/// ---
|
|
9
|
+
/// @name is-number
|
|
10
|
+
/// @group utilities-validators
|
|
11
|
+
/// @since 2025.12.27
|
|
12
|
+
/// @access public
|
|
13
|
+
/// @author Murad Rustamov (therteenten)
|
|
14
|
+
/// @link https://sourcecraft.dev/users/therteenten/overview SourceCraft - therteenten
|
|
15
|
+
/// @link https://sourcecraft.dev/omnisass/library SourceCraft - OmniSass
|
|
16
|
+
/// @link https://sass-lang.com/documentation/modules/meta#type-of См. также: Официальная документация Sass - Функция meta.type-of()
|
|
17
|
+
/// @link https://sass-lang.com/documentation/modules/meta См. также: Официальная документация Sass - Модуль meta
|
|
18
|
+
/// @link https://sass-lang.com/documentation/values/numbers См. также: Официальная документация Sass - Тип данных "Числа" (Numbers)
|
|
19
|
+
/// @link https://sass-lang.com/documentation/values/numbers#units См. также: Официальная документация Sass - Числа и единицы измерения
|
|
20
|
+
/// @link https://sass-lang.com/documentation/at-rules/function См. также: Официальная документация Sass - Правило @function
|
|
21
|
+
/// @link https://sass-lang.com/documentation/style-rules/declarations#custom-properties См. также: Документация Sass - Пользовательские функции
|
|
22
|
+
/// @link https://developer.mozilla.org/en-US/docs/Web/CSS/number См. также: MDN Web Docs - CSS тип данных <number>
|
|
23
|
+
/// @link https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Values_and_Units См. также: MDN Web Docs - CSS значения и единицы измерения
|
|
24
|
+
/// @link https://www.w3schools.com/sass/sass_functions_numeric.php См. также: W3Schools - Числовые функции в Sass
|
|
25
|
+
/// @link https://www.sass.hk/docs/ См. также: Китайская документация Sass - Полное руководство
|
|
26
|
+
/// @link https://sass-guidelin.es/ru/#section-39 См. также: Sass Guidelines - Раздел про проверку типов данных
|
|
27
|
+
/// @link https://github.com/sass/sass/blob/main/accepted/module-system.md См. также: GitHub - Документация по модульной системе Sass
|
|
28
|
+
/// @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
|
|
29
|
+
/// @link https://stackoverflow.com/questions/12328259/how-do-you-strip-the-unit-from-any-number-in-sass См. также: Stack Overflow - Как удалить единицы измерения из числа в Sass
|
|
30
|
+
/// @link https://css-tricks.com/snippets/sass/ См. также: CSS-Tricks - Коллекция сниппетов Sass
|
|
31
|
+
/// @link https://web.dev/learn/css/numbers/ См. также: web.dev - Изучение чисел в CSS
|
|
32
|
+
/// @link https://frontender.info/sass-numbers/ См. также: Frontender Magazine - Работа с числами в Sass
|
|
33
|
+
/// @link https://habr.com/ru/post/247887/ См. также: Habr - Статья "Sass для верстальщика: числа и математика"
|
|
34
|
+
/// @link https://www.sitepoint.com/sass-basics-operators/ См. также: SitePoint - Основы Sass: операторы
|
|
35
|
+
/// @link https://www.freecodecamp.org/news/sass-data-types/ См. также: freeCodeCamp - Типы данных в Sass
|
|
36
|
+
/// @link https://code.tutsplus.com/tutorials/understanding-sass-data-types--cms-22110 См. также: Envato Tuts+ - Понимание типов данных в Sass
|
|
37
|
+
/// @link https://dev.to/kathryngrayson/sass-type-checking-1p6c См. также: Dev.to - Проверка типов в Sass
|
|
38
|
+
/// @link https://css-live.ru/articles/uskorenie-razrabotki-s-pomoshhyu-sass.html См. также: CSS-Live - Ускорение разработки с помощью Sass
|
|
39
|
+
/// @link https://itchief.ru/sass/data-types См. также: itchief - Типы данных в Sass
|
|
40
|
+
/// @link https://htmlacademy.ru/blog/boost/tools/sass-2 См. также: HTML Academy - Sass: переменные и типы данных
|
|
41
|
+
/// @link https://metanit.com/web/html5/13.3.php См. также: Metanit - Типы данных в Sass
|
|
42
|
+
/// @link https://ru.hexlet.io/courses/sass-basics/lessons/data-types/theory_unit См. также: Hexlet - Типы данных в Sass
|
|
43
|
+
/// @link https://www.youtube.com/watch?v=Zz6eOVaaelI См. также: YouTube - Sass Tutorial #4 - Data Types (The Net Ninja)
|
|
44
|
+
/// @link https://www.youtube.com/watch?v=URtUXqOQq0k См. также: YouTube - Типы данных в Sass (на русском)
|
|
45
|
+
/// @link https://codelabs.developers.google.com/codelabs/cloud-sass-cli#5 См. также: Google Codelabs - Создание пользовательских функций в Sass
|
|
46
|
+
/// @link https://www.npmjs.com/package/sass См. также: npm - Документация пакета Dart Sass
|
|
47
|
+
/// @link https://marketplace.visualstudio.com/items?itemName=Syler.sass-indented См. также: VS Code Marketplace - Поддержка синтаксиса Sass
|
|
48
|
+
/// @link https://stylelint.io/user-guide/rules/length-zero-no-unit/ См. также: Stylelint - Правила для единиц измерения
|
|
49
|
+
/// @link https://sass-lang.com/documentation/js-api См. также: JavaScript API - Работа с Sass через JavaScript
|
|
50
|
+
/// @link https://sass-lang.com/documentation/cli/dart-sass См. также: CLI - Командная строка Dart Sass
|
|
51
|
+
/// @link https://sass-lang.com/documentation/breaking-changes/module-system См. также: Breaking Changes - Изменения в модульной системе
|
|
52
|
+
/// @link https://sass-lang.com/documentation/values/booleans См. также: Документация Sass - Логические значения
|
|
53
|
+
/// @link https://sass-lang.com/documentation/values/strings См. также: Документация Sass - Строки
|
|
54
|
+
/// @link https://sass-lang.com/documentation/values/colors См. также: Документация Sass - Цвета
|
|
55
|
+
/// @link https://sass-lang.com/documentation/values/lists См. также: Документация Sass - Списки
|
|
56
|
+
/// @link https://sass-lang.com/documentation/values/null См. также: Документация Sass - Значение null
|
|
57
|
+
/// @link https://sass-lang.com/documentation/values/maps См. также: Документация Sass - Карты
|
|
58
|
+
/// @link https://sass-lang.com/documentation/interpolation См. также: Документация Sass - Интерполяция
|
|
59
|
+
/// @link https://sass-lang.com/documentation/modules/math См. также: Официальная документация Sass - Модуль math
|
|
60
|
+
/// @link https://sass-lang.com/documentation/modules/math#abs См. также: Документация Sass - Функция math.abs()
|
|
61
|
+
/// @link https://sass-lang.com/documentation/modules/math#ceil См. также: Документация Sass - Функция math.ceil()
|
|
62
|
+
/// @link https://sass-lang.com/documentation/modules/math#floor См. также: Документация Sass - Функция math.floor()
|
|
63
|
+
/// @link https://sass-lang.com/documentation/modules/math#max См. также: Документация Sass - Функция math.max()
|
|
64
|
+
/// @link https://sass-lang.com/documentation/modules/math#min См. также: Документация Sass - Функция math.min()
|
|
65
|
+
/// @link https://sass-lang.com/documentation/modules/math#percentage См. также: Документация Sass - Функция math.percentage()
|
|
66
|
+
/// @link https://sass-lang.com/documentation/modules/math#random См. также: Документация Sass - Функция math.random()
|
|
67
|
+
/// @link https://sass-lang.com/documentation/modules/math#round См. также: Документация Sass - Функция math.round()
|
|
68
|
+
/// @example scss - Проверка числовых значений
|
|
69
|
+
/// @debug is-number(10); // true
|
|
70
|
+
/// @debug is-number(3.14); // true
|
|
71
|
+
/// @debug is-number(1px); // true
|
|
72
|
+
/// @debug is-number(2em); // true
|
|
73
|
+
/// @debug is-number(0); // true
|
|
74
|
+
/// @debug is-number(-5rem); // true
|
|
75
|
+
/// @example scss - Проверка нечисловых значений
|
|
76
|
+
/// @debug is-number("text"); // false
|
|
77
|
+
/// @debug is-number(#fff); // false
|
|
78
|
+
/// @debug is-number(true); // false
|
|
79
|
+
/// @debug is-number(null); // false
|
|
80
|
+
/// @debug is-number((1, 2, 3)); // false
|
|
81
|
+
/// @debug is-number(red); // false
|
|
82
|
+
/// @example scss - Использование для валидации
|
|
83
|
+
/// @function calculate-margin($value) {
|
|
84
|
+
/// @if not is-number($value) {
|
|
85
|
+
/// @error "Ожидается числовое значение, получено: number";
|
|
86
|
+
/// }
|
|
87
|
+
/// @return $value * 2;
|
|
88
|
+
/// }
|
|
89
|
+
/// @example scss - Условная обработка
|
|
90
|
+
/// .test {
|
|
91
|
+
/// $spacing: 1px;
|
|
92
|
+
/// @if is-number($spacing) {
|
|
93
|
+
/// padding: $spacing;
|
|
94
|
+
/// } @else {
|
|
95
|
+
/// padding: 1rem;
|
|
96
|
+
/// }
|
|
97
|
+
/// }
|
|
98
|
+
/// @param {*} $value - Проверяемое значение любого типа
|
|
99
|
+
/// @return {Boolean} - Возвращает `true`, если значение является
|
|
100
|
+
/// числом, иначе возвращает `false`.
|
|
101
|
+
@function is-number($value) {
|
|
102
|
+
@return meta.type-of($value) == number;
|
|
103
|
+
}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
@use 'sass:meta';
|
|
2
|
+
|
|
3
|
+
/// Проверяет, является ли значение строкой (string)
|
|
4
|
+
///
|
|
5
|
+
/// Функция определяет, относится ли переданное значение
|
|
6
|
+
/// к строковому типу данных в Sass. Строки могут быть
|
|
7
|
+
/// заключены в кавычки (`""` или `''`) или без них, но тип
|
|
8
|
+
/// всегда определяется как `string`.
|
|
9
|
+
/// Полезно для валидации текстовых параметров,
|
|
10
|
+
/// обработки контента и проверки входных данных.
|
|
11
|
+
/// ---
|
|
12
|
+
/// @name is-string
|
|
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/strings См. также: Официальная документация Sass - Тип данных "Строки" (Strings)
|
|
24
|
+
/// @link https://sass-lang.com/documentation/values/strings#escapes См. также: Официальная документация Sass - Экранирование символов в строках
|
|
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/string См. также: MDN Web Docs - CSS тип данных <string>
|
|
28
|
+
/// @link https://developer.mozilla.org/en-US/docs/Web/CSS/attr См. также: MDN Web Docs - CSS функция attr()
|
|
29
|
+
/// @link https://www.w3schools.com/sass/sass_functions_string.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/19456143/sass-if-a-variable-is-a-string См. также: Stack Overflow - Проверка строковой переменной в Sass
|
|
35
|
+
/// @link https://css-tricks.com/snippets/sass/ См. также: CSS-Tricks - Коллекция сниппетов Sass
|
|
36
|
+
/// @link https://web.dev/learn/css/strings/ См. также: web.dev - Изучение строк в CSS
|
|
37
|
+
/// @link https://frontender.info/sass-strings/ См. также: Frontender Magazine - Работа со строками в Sass
|
|
38
|
+
/// @link https://habr.com/ru/post/247882/ См. также: 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/string-quotes/ См. также: 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/numbers См. также: Документация Sass - Числа
|
|
59
|
+
/// @link https://sass-lang.com/documentation/values/colors См. также: Документация Sass - Цвета
|
|
60
|
+
/// @link https://sass-lang.com/documentation/values/lists См. также: Документация Sass - Списки
|
|
61
|
+
/// @link https://sass-lang.com/documentation/values/null См. также: Документация Sass - Значение null
|
|
62
|
+
/// @link https://sass-lang.com/documentation/values/maps См. также: Документация Sass - Карты
|
|
63
|
+
/// @link https://sass-lang.com/documentation/interpolation См. также: Документация Sass - Интерполяция
|
|
64
|
+
/// @link https://sass-lang.com/documentation/modules/string См. также: Официальная документация Sass - Модуль string
|
|
65
|
+
/// @link https://sass-lang.com/documentation/modules/string#index См. также: Документация Sass - Функция string.index()
|
|
66
|
+
/// @link https://sass-lang.com/documentation/modules/string#slice См. также: Документация Sass - Функция string.slice()
|
|
67
|
+
/// @link https://sass-lang.com/documentation/modules/string#to-upper-case См. также: Документация Sass - Функция string.to-upper-case()
|
|
68
|
+
/// @link https://sass-lang.com/documentation/modules/string#to-lower-case См. также: Документация Sass - Функция string.to-lower-case()
|
|
69
|
+
/// @link https://sass-lang.com/documentation/modules/string#unique-id См. также: Документация Sass - Функция string.unique-id()
|
|
70
|
+
/// @link https://sass-lang.com/documentation/modules/string#quote См. также: Документация Sass - Функция string.quote()
|
|
71
|
+
/// @link https://sass-lang.com/documentation/modules/string#unquote См. также: Документация Sass - Функция string.unquote()
|
|
72
|
+
/// @example scss - Проверка строковых значений
|
|
73
|
+
/// @debug is-string("Hello World"); // true
|
|
74
|
+
/// @debug is-string('Single quotes'); // true
|
|
75
|
+
/// @debug is-string(without-quotes); // true
|
|
76
|
+
/// @debug is-string(""); // true (пустая строка)
|
|
77
|
+
/// @example scss - Проверка других типов
|
|
78
|
+
/// @debug is-string(42); // false
|
|
79
|
+
/// @debug is-string(true); // false
|
|
80
|
+
/// @debug is-string(#fff); // false
|
|
81
|
+
/// @debug is-string((1, 2, 3)); // false
|
|
82
|
+
/// @debug is-string((key: value)); // false
|
|
83
|
+
/// @example scss - Использование для валидации текстовых параметров
|
|
84
|
+
/// @function to-uppercase($text) {
|
|
85
|
+
/// @if not is-string($text) {
|
|
86
|
+
/// @error "Параметр $text должен быть строкой";
|
|
87
|
+
/// }
|
|
88
|
+
/// @return to-upper-case($text);
|
|
89
|
+
/// }
|
|
90
|
+
///
|
|
91
|
+
/// @example scss - Обработка контента
|
|
92
|
+
/// @mixin generate-icon($name) {
|
|
93
|
+
/// @if not is-string($name) {
|
|
94
|
+
/// @warn "Название иконки должно быть строкой";
|
|
95
|
+
/// }
|
|
96
|
+
/// content: $name;
|
|
97
|
+
/// }
|
|
98
|
+
///
|
|
99
|
+
/// @example scss - Условная логика для разных типов
|
|
100
|
+
/// @if is-string($value) {
|
|
101
|
+
/// @debug "Текстовое значение: #{$value}";
|
|
102
|
+
/// } @else if is-number($value) {
|
|
103
|
+
/// @debug "Числовое значение: #{$value}";
|
|
104
|
+
/// }
|
|
105
|
+
/// @param {*} $value - Проверяемое значение
|
|
106
|
+
/// @return {Boolean} - `true` если значение является
|
|
107
|
+
/// строкой, `false` во всех остальных случаях.
|
|
108
|
+
@function is-string($value) {
|
|
109
|
+
@return meta.type-of($value) == string;
|
|
110
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
@use 'sass:meta';
|
|
2
|
+
|
|
3
|
+
/// Возвращает тип данных переданного значения.
|
|
4
|
+
///
|
|
5
|
+
/// Функция является оберткой над встроенной функцией
|
|
6
|
+
/// `meta.type-of()` для удобства использования и лучшей
|
|
7
|
+
/// читаемости кода. Возвращает строку, содержащую название
|
|
8
|
+
/// типа данных переданного значения.
|
|
9
|
+
///
|
|
10
|
+
/// Важные особенности функции:
|
|
11
|
+
/// - Является оберткой над `meta.type-of()` для улучшения
|
|
12
|
+
/// читаемости
|
|
13
|
+
/// - Возвращает строковое представление типа данных
|
|
14
|
+
/// - Поддерживает все типы данных Sass
|
|
15
|
+
/// - Не выполняет дополнительных преобразований или проверок
|
|
16
|
+
/// - Возвращает стандартные названия типов Sass
|
|
17
|
+
/// ---
|
|
18
|
+
/// @name is-type
|
|
19
|
+
/// @group utilities-validators
|
|
20
|
+
/// @since 2025.12.27
|
|
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/modules/meta#type-of См. также: Официальная документация Sass - Функция meta.type-of()
|
|
26
|
+
/// @link https://sass-lang.com/documentation/values См. также: Официальная документация Sass - Типы данных
|
|
27
|
+
/// @link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof MDN Web Docs - Оператор typeof
|
|
28
|
+
/// @link https://css-tricks.com/snippets/sass/ См. также: CSS-Tricks - Коллекция сниппетов Sass
|
|
29
|
+
/// @link https://sass-guidelin.es/ru/#section-39 См. также: Sass Guidelines - Раздел про проверку типов
|
|
30
|
+
/// @link https://frontender.info/sass-type-checking/ См. также: Frontender Magazine - Проверка типов в Sass
|
|
31
|
+
/// @link https://www.w3schools.com/sass/sass_functions_meta.php См. также: W3Schools - Мета-функции в Sass
|
|
32
|
+
/// @link https://habr.com/ru/post/247879/ См. также: Habr - Статья "Sass для верстальщика: проверки и валидация"
|
|
33
|
+
/// @example scss - Определение типа чисел
|
|
34
|
+
/// @debug is-type(10); // "number"
|
|
35
|
+
/// @debug is-type(3.14); // "number"
|
|
36
|
+
/// @debug is-type(10px); // "number"
|
|
37
|
+
/// @debug is-type(-5rem); // "number"
|
|
38
|
+
/// @debug is-type(0); // "number"
|
|
39
|
+
/// @example scss - Определение типа строк
|
|
40
|
+
/// @debug is-type("text"); // "string"
|
|
41
|
+
/// @debug is-type('single'); // "string"
|
|
42
|
+
/// @debug is-type(""); // "string"
|
|
43
|
+
/// @debug is-type("123"); // "string"
|
|
44
|
+
/// @example scss - Определение типа цветов
|
|
45
|
+
/// @debug is-type(#ff0000); // "color"
|
|
46
|
+
/// @debug is-type(red); // "color"
|
|
47
|
+
/// @debug is-type(rgb(255, 0, 0)); // "color"
|
|
48
|
+
/// @debug is-type(hsl(0, 100%, 50%)); // "color"
|
|
49
|
+
/// @example scss - Определение типа списков и карт
|
|
50
|
+
/// @debug is-type((a, b, c)); // "list"
|
|
51
|
+
/// @debug is-type((1 2 3)); // "list"
|
|
52
|
+
/// @debug is-type(()); // "list"
|
|
53
|
+
/// @debug is-type((key: value)); // "map"
|
|
54
|
+
/// @debug is-type((1: a, 2: b)); // "map"
|
|
55
|
+
/// @example scss - Определение типа логических значений и null
|
|
56
|
+
/// @debug is-type(true); // "bool"
|
|
57
|
+
/// @debug is-type(false); // "bool"
|
|
58
|
+
/// @debug is-type(null); // "null"
|
|
59
|
+
/// @param {*} $value - Значение, тип которого нужно определить.
|
|
60
|
+
/// Может быть любого типа: число, строка, цвет, список,
|
|
61
|
+
/// карта, логическое значение, null, arglist или function.
|
|
62
|
+
/// @return {String} - Строка, содержащая название типа данных
|
|
63
|
+
/// переданного значения. Возможные значения:
|
|
64
|
+
/// - `"number"` - для чисел (с единицами или без)
|
|
65
|
+
/// - `"string"` - для строк
|
|
66
|
+
/// - `"color"` - для цветов
|
|
67
|
+
/// - `"list"` - для списков
|
|
68
|
+
/// - `"map"` - для карт (ассоциативных массивов)
|
|
69
|
+
/// - `"bool"` - для логических значений (true/false)
|
|
70
|
+
/// - `"null"` - для значения null
|
|
71
|
+
/// - `"arglist"` - для списков аргументов
|
|
72
|
+
/// - `"function"` - для функций
|
|
73
|
+
/// @throws Не выбрасывает ошибок, корректно обрабатывает
|
|
74
|
+
/// значения любого типа.
|
|
75
|
+
@function is-type($value) {
|
|
76
|
+
@return meta.type-of($value);
|
|
77
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@omnisass/library",
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "Библиотека функций и миксинов, написанная на языке CSS-препроцессора Sass. Она предназначена для того, чтобы упростить, ускорить и улучшить процесс создания стилей для веб-сайтов.",
|
|
5
|
+
"main": "index.scss",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"test": "sass playground/:playground/",
|
|
8
|
+
"test-with-docs": "sass playground/:playground/ && npm run sassdoc",
|
|
9
|
+
"serve": "sass --watch playground/:playground/",
|
|
10
|
+
"sassdoc": "npx sassdoc ./ --config ./.sassdoc.yaml",
|
|
11
|
+
"omni:bump-version": "sh .omnisass/scripts/bump-version.sh"
|
|
12
|
+
},
|
|
13
|
+
"exports": {
|
|
14
|
+
".": {
|
|
15
|
+
"sass": "./index.scss"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"keywords": [
|
|
19
|
+
"sass",
|
|
20
|
+
"scss",
|
|
21
|
+
"omnisass",
|
|
22
|
+
"therteenten",
|
|
23
|
+
"css",
|
|
24
|
+
"mixin",
|
|
25
|
+
"function",
|
|
26
|
+
"sass-mixin",
|
|
27
|
+
"sass-function",
|
|
28
|
+
"scss-minix",
|
|
29
|
+
"scss-function",
|
|
30
|
+
"web-development",
|
|
31
|
+
"colors"
|
|
32
|
+
],
|
|
33
|
+
"repository": {
|
|
34
|
+
"type": "git",
|
|
35
|
+
"url": "https://git@git.sourcecraft.dev/omnisass/library.git"
|
|
36
|
+
},
|
|
37
|
+
"author": {
|
|
38
|
+
"name": "Murad Rustamov (therteenten)",
|
|
39
|
+
"email": "therteenten@ya.ru",
|
|
40
|
+
"url": "https://sourcecraft.dev/users/therteenten/overview"
|
|
41
|
+
},
|
|
42
|
+
"license": "MIT",
|
|
43
|
+
"bugs": {
|
|
44
|
+
"url": "https://sourcecraft.dev/omnisass/library/issues",
|
|
45
|
+
"email": "therteenten@ya.ru"
|
|
46
|
+
},
|
|
47
|
+
"homepage": "https://sourcecraft.dev/therteenten",
|
|
48
|
+
"devDependencies": {
|
|
49
|
+
"sassdoc": "^2.7.4"
|
|
50
|
+
},
|
|
51
|
+
"dependencies": {
|
|
52
|
+
"sass": "^1.97.2"
|
|
53
|
+
}
|
|
54
|
+
}
|
package/package.scss
ADDED
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
@use 'sass:map';
|
|
2
|
+
@use './configs' as libconfigs;
|
|
3
|
+
|
|
4
|
+
////
|
|
5
|
+
/// В данном файле представлены переменные, описывающие
|
|
6
|
+
/// библиотеку, и, как правило, не требуют модификации
|
|
7
|
+
/// (за исключением переменной `$version`, которая подлежит
|
|
8
|
+
/// обновлению посредством скрипта bump-version.sh).
|
|
9
|
+
/// ---
|
|
10
|
+
/// @group package
|
|
11
|
+
////
|
|
12
|
+
|
|
13
|
+
/// Библиотека функций и миксинов, написанная на языке
|
|
14
|
+
/// CSS-препроцессора Sass. Она предназначена для того,
|
|
15
|
+
/// чтобы упростить, ускорить и улучшить процесс создания
|
|
16
|
+
/// стилей для веб-сайтов.
|
|
17
|
+
/// ---
|
|
18
|
+
/// @ignore
|
|
19
|
+
/// @name package
|
|
20
|
+
/// @access private
|
|
21
|
+
/// @author Murad Rustamov (therteenten)
|
|
22
|
+
/// @link https://t.me/therteenten Telegram
|
|
23
|
+
/// @link https://t.me/omnisass Telegram (OmniSass)
|
|
24
|
+
/// @link https://sourcecraft.dev/users/therteenten/overview SourceCraft
|
|
25
|
+
/// @link https://sourcecraft.dev/omnisass/library SourceCraft (OmniSass)
|
|
26
|
+
/// @type String
|
|
27
|
+
$package: '@omnisass/library';
|
|
28
|
+
|
|
29
|
+
/// Название библиотеки - используется для идентификации и
|
|
30
|
+
/// ссылок в документации.
|
|
31
|
+
/// ---
|
|
32
|
+
/// @ignore
|
|
33
|
+
/// @name title
|
|
34
|
+
/// @access private
|
|
35
|
+
/// @type String
|
|
36
|
+
$title: "OmniSass";
|
|
37
|
+
|
|
38
|
+
/// Описание библиотеки - краткое пояснение назначения и
|
|
39
|
+
/// преимуществ использования данного набора.
|
|
40
|
+
/// ---
|
|
41
|
+
/// @ignore
|
|
42
|
+
/// @name description
|
|
43
|
+
/// @access private
|
|
44
|
+
/// @type String
|
|
45
|
+
$description: "Набор утилит, миксинов, расширений на языке препроцессора @sass для помощи в ускорении, упрощении и улучщения процесса написания CSS-стилей.";
|
|
46
|
+
|
|
47
|
+
/// Текущая версия библиотеки - используется для контроля
|
|
48
|
+
/// версий и отслеживания изменений.
|
|
49
|
+
/// ---
|
|
50
|
+
/// @ignore Данная переменная не важна для кода. Она дублирует
|
|
51
|
+
/// версию проекта из package.json, благодаря скрипту
|
|
52
|
+
/// bump-version.sh.
|
|
53
|
+
/// @name version
|
|
54
|
+
/// @access private
|
|
55
|
+
/// @type String | Number
|
|
56
|
+
$version: "0.2.0";
|
|
57
|
+
|
|
58
|
+
/// Тип лицензии библиотеки - используется для указания
|
|
59
|
+
/// условий использования и распространения.
|
|
60
|
+
/// ---
|
|
61
|
+
/// @ignore
|
|
62
|
+
/// @name license
|
|
63
|
+
/// @access private
|
|
64
|
+
/// @type String
|
|
65
|
+
$license: "MIT";
|
|
66
|
+
|
|
67
|
+
/// URL исходного кода библиотеки OmniSass - используется
|
|
68
|
+
/// для атрибуции и ссылок на документацию.
|
|
69
|
+
/// ---
|
|
70
|
+
/// @ignore
|
|
71
|
+
/// @name sources
|
|
72
|
+
/// @access private
|
|
73
|
+
/// @type String
|
|
74
|
+
$sources: "https://sourcecraft.dev/omnisass/library";
|
|
75
|
+
|
|
76
|
+
/// )))
|
|
77
|
+
/// ---
|
|
78
|
+
/// @ignore
|
|
79
|
+
/// @name author
|
|
80
|
+
/// @access private
|
|
81
|
+
/// @link https://t.me/therteenten Telegram
|
|
82
|
+
/// @link https://sourcecraft.dev/users/therteenten/overview SourceCraft
|
|
83
|
+
/// @prop {String} author.name [Murad Rustamov (therteenten)] - Автор проекта
|
|
84
|
+
/// @prop {String} author.email [therteenten@ya.ru] - Адрес электронной почты автора проекта
|
|
85
|
+
/// @type Map
|
|
86
|
+
$author: (
|
|
87
|
+
name: "Murad Rustamov (therteenten)",
|
|
88
|
+
email: "therteenten@ya.ru"
|
|
89
|
+
);
|
|
90
|
+
|
|
91
|
+
/// Миксин создающий комментарий с основной информацией о
|
|
92
|
+
/// библиотеке в итоговом CSS-файле.
|
|
93
|
+
/// ---
|
|
94
|
+
/// @name genOmniSassFingerprint
|
|
95
|
+
/// @access public
|
|
96
|
+
/// @example scss - Базовое использование
|
|
97
|
+
/// @include genOmniSassFingerprint();
|
|
98
|
+
/// @example scss - Использование без лога в консоль
|
|
99
|
+
/// @include genOmniSassFingerprint(false);
|
|
100
|
+
/// @example css - Примерный итоговый результат
|
|
101
|
+
/// /*
|
|
102
|
+
/// * @package:
|
|
103
|
+
/// └─ name: @therteenten/omnisass
|
|
104
|
+
/// └─ version: 0.0.0
|
|
105
|
+
/// └─ project: OmniSass
|
|
106
|
+
/// └─ description: Набор утилит, миксинов, расширений на языке препроцессора @sass для помощи в ускорении, упрощении и улучщения процесса написания CSS-стилей.
|
|
107
|
+
/// * @license
|
|
108
|
+
/// └─ MIT
|
|
109
|
+
/// * @author:
|
|
110
|
+
/// └─ name: Murad Rustamov (therteenten)
|
|
111
|
+
/// └─ email: therteenten@ya.ru
|
|
112
|
+
/// * @links:
|
|
113
|
+
/// └─ sources: https://sourcecraft.dev/omnisass/library
|
|
114
|
+
/// */
|
|
115
|
+
/// @output На выходе в итоговом скомпилированном CSS-файле
|
|
116
|
+
/// будет находиться блок комментария с краткой информацией
|
|
117
|
+
/// о проекте OmniSass (имя пакета, версия, автор и etc).
|
|
118
|
+
/// @param {Boolean} $show-console-log [true] - переменная логического
|
|
119
|
+
/// типа (true/false), влияющая на отображение лога об использовании
|
|
120
|
+
/// OmniSass в консоль при компиляции Sass в CSS.
|
|
121
|
+
/// @require {Variable} $package
|
|
122
|
+
/// @require {Variable} $version
|
|
123
|
+
/// @require {Variable} $description
|
|
124
|
+
/// @require {Variable} $sources
|
|
125
|
+
/// @require {Variable} $title
|
|
126
|
+
/// @require {Variable} $author
|
|
127
|
+
/// @require {Variable} $license
|
|
128
|
+
@mixin genOmniSassFingerprint($show-console-log: true) {
|
|
129
|
+
|
|
130
|
+
$-author-name: map.get($author, name);
|
|
131
|
+
$-author-email: map.get($author, email);
|
|
132
|
+
|
|
133
|
+
@if libconfigs.$set-fingerprint == true {
|
|
134
|
+
|
|
135
|
+
/*
|
|
136
|
+
* @package:
|
|
137
|
+
└─ name: #{$package}
|
|
138
|
+
└─ version: #{$version}
|
|
139
|
+
└─ project: #{$title}
|
|
140
|
+
└─ description: #{$description}
|
|
141
|
+
* @license
|
|
142
|
+
└─ #{$license}
|
|
143
|
+
* @author:
|
|
144
|
+
└─ name: #{$-author-name}
|
|
145
|
+
└─ email: #{$-author-email}
|
|
146
|
+
* @links:
|
|
147
|
+
└─ sources: #{$sources}
|
|
148
|
+
*/
|
|
149
|
+
|
|
150
|
+
@if ($show-console-log) == true {
|
|
151
|
+
@debug "#{$title} #{$version} using!";
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
}
|