@omnisass/library 0.4.0 → 0.5.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.
Files changed (52) hide show
  1. package/README.en.md +99 -0
  2. package/README.md +2 -0
  3. package/_configs.scss +1 -1
  4. package/index.scss +11 -5
  5. package/modules/utilities/getters/map/_get-map-item.scss +159 -0
  6. package/modules/utilities/helpers/list/_list-sum-numbers-safe.scss +4 -3
  7. package/modules/utilities/helpers/list/_list-sum-numbers.scss +4 -3
  8. package/modules/utilities/helpers/map/_map-remove-keys.scss +153 -0
  9. package/modules/utilities/helpers/misc/_url-encode.scss +5 -4
  10. package/modules/utilities/helpers/number/_number-ceil-to.scss +5 -3
  11. package/modules/utilities/helpers/number/_number-clamp-max.scss +5 -3
  12. package/modules/utilities/helpers/number/_number-clamp-min.scss +5 -3
  13. package/modules/utilities/helpers/number/_number-clamp.scss +6 -3
  14. package/modules/utilities/helpers/number/_number-denormalize.scss +6 -3
  15. package/modules/utilities/helpers/number/_number-fibonacci.scss +4 -3
  16. package/modules/utilities/helpers/number/_number-floor-to.scss +5 -3
  17. package/modules/utilities/helpers/number/_number-format-with-separator.scss +5 -4
  18. package/modules/utilities/helpers/number/_number-normalize.scss +6 -3
  19. package/modules/utilities/helpers/number/_number-random-between-int.scss +5 -3
  20. package/modules/utilities/helpers/number/_number-random-between.scss +5 -3
  21. package/modules/utilities/helpers/number/_number-range.scss +6 -3
  22. package/modules/utilities/helpers/number/_number-round-to-nearest.scss +5 -3
  23. package/modules/utilities/helpers/number/_number-round-to.scss +5 -3
  24. package/modules/utilities/helpers/number/_number-strip-unit.scss +4 -3
  25. package/modules/utilities/helpers/string/_string-capitalize.scss +4 -3
  26. package/modules/utilities/helpers/string/_string-lorips.config.scss +0 -2
  27. package/modules/utilities/helpers/string/_string-replace.scss +6 -3
  28. package/modules/utilities/helpers/string/_string-trim-end.scss +4 -3
  29. package/modules/utilities/helpers/string/_string-trim-start.scss +4 -3
  30. package/modules/utilities/helpers/string/_string-trim.scss +4 -3
  31. package/modules/utilities/loggers/_log.scss +219 -0
  32. package/modules/utilities/setters/map/_set-map-item.scss +243 -0
  33. package/modules/utilities/validators/color/_is-color-light.scss +5 -4
  34. package/modules/utilities/validators/color/_is-color-list.scss +4 -3
  35. package/modules/utilities/validators/list/_is-list-contained.scss +5 -4
  36. package/modules/utilities/validators/number/_is-int-even.scss +4 -3
  37. package/modules/utilities/validators/number/_is-int-odd.scss +4 -3
  38. package/modules/utilities/validators/number/_is-int.scss +5 -3
  39. package/modules/utilities/validators/number/_is-number-has-unit.scss +4 -3
  40. package/modules/utilities/validators/number/_is-number-negative.scss +4 -3
  41. package/modules/utilities/validators/number/_is-number-positive.scss +4 -3
  42. package/modules/utilities/validators/number/_is-number-unitless.scss +4 -3
  43. package/modules/utilities/validators/number/_is-number-zero.scss +4 -3
  44. package/modules/utilities/validators/string/_is-string-contained.scss +5 -3
  45. package/modules/utilities/validators/string/_is-string-empty.scss +4 -3
  46. package/modules/utilities/validators/string/_is-string-ending-with.scss +5 -3
  47. package/modules/utilities/validators/string/_is-string-starting-with.scss +5 -3
  48. package/modules/utilities/validators/type-of/_is-color.scss +0 -4
  49. package/package.json +25 -16
  50. package/package.scss +12 -2
  51. package/CHANGELOG.md +0 -122
  52. package/test2.sh +0 -158
@@ -0,0 +1,243 @@
1
+ @use 'sass:map';
2
+ @use 'sass:list';
3
+ @use '../../loggers/log-invalid-type' as *;
4
+ @use '../../loggers/log' as *;
5
+ @use '../../validators/type-of/is-map' as *;
6
+
7
+ /// Устанавливает значение во вложенную карту по цепочке ключей.
8
+ ///
9
+ /// Функция позволяет безопасно обновить значение в глубоко
10
+ /// вложенной структуре карт, создавая недостающие уровни
11
+ /// автоматически. В отличие от стандартного `map.merge()`,
12
+ /// эта функция работает с произвольной вложенностью и
13
+ /// сохраняет неизменёнными все остальные части структуры.
14
+ /// Это особенно полезно при работе с темами, конфигурациями
15
+ /// и другими сложными древовидными данными.
16
+ ///
17
+ /// Функция использует двухпроходной алгоритм:
18
+ /// 1. Сначала собирает все уровни карты по пути следования
19
+ /// 2. Затем рекурсивно собирает новую карту, подставляя
20
+ /// обновлённое значение на нужном уровне
21
+ ///
22
+ /// Важные особенности функции:
23
+ /// - Сохраняет неизменными все не затронутые обновлением части
24
+ /// - Автоматически создаёт недостающие уровни карты
25
+ /// - Предупреждает о переопределении карты значением
26
+ /// - Останавливается с ошибкой при отсутствии ключа
27
+ /// - Работает с любым уровнем вложенности
28
+ /// - Возвращает полностью новую карту, не мутируя исходную
29
+ /// - Поддерживает любые типы значений (строки, числа, списки)
30
+ /// - Интегрируется с системой логирования для отладки
31
+ /// - Позволяет безопасно обновлять конфигурации тем
32
+ /// - Упрощает работу с глубокими структурами данных
33
+ /// ---
34
+ /// @name set-map-item
35
+ /// @group utilities-setters
36
+ /// @since 2026.01.14
37
+ /// @access public
38
+ /// @author Murad Rustamov (therteenten) [адаптация]
39
+ /// @author Kitty Giraudel
40
+ /// @link https://sourcecraft.dev/users/therteenten/overview SourceCraft - therteenten
41
+ /// @link https://sourcecraft.dev/omnisass/library SourceCraft - OmniSass
42
+ /// @link https://github.com/KittyGiraudel GitHub - Kitty Giraudel
43
+ /// @link https://sass-lang.com/documentation/values/maps См. также: Официальная документация Sass - Тип данных "Карты" (`maps`)
44
+ /// @link https://sass-lang.com/documentation/modules/map См. также: Официальная документация Sass - Модуль `sass:map`
45
+ /// @link https://sass-lang.com/documentation/modules/map#merge См. также: Официальная документация Sass - Функция `map.merge()`
46
+ /// @link https://sass-lang.com/documentation/modules/map#get См. также: Официальная документация Sass - Функция `map.get()`
47
+ /// @link https://sass-lang.com/documentation/modules/list См. также: Официальная документация Sass - Модуль `sass:list`
48
+ /// @link https://sass-lang.com/documentation/at-rules/function См. также: Официальная документация Sass - Правило `@function`
49
+ /// @link https://sass-guidelin.es/ru/#maps-1 См. также: Sass Guidelines - Манипуляции с картами
50
+ /// @link https://css-tricks.com/snippets/sass/deep-getset-maps/ См. также: CSS-Tricks - Deep Get/Set для Sass Maps
51
+ /// @link https://www.sitepoint.com/using-sass-maps/ См. также: SitePoint - Использование карт Sass
52
+ /// @link https://www.smashingmagazine.com/2015/07/real-work-sass-maps/ См. также: Smashing Magazine - Реальная работа с картами Sass
53
+ /// @link https://dev.to/marcelle/understanding-sass-maps-3fhj См. также: Dev.to - Понимание карт Sass
54
+ /// @link https://code.tutsplus.com/tutorials/an-introduction-to-sass-maps--cms-22138 См. также: Envato Tuts+ - Введение в карты Sass
55
+ /// @link https://habr.com/ru/post/309656/ См. также: Habr - Карты данных (maps) в Sass
56
+ /// @link https://htmlacademy.ru/blog/boost/tools/sass-maps См. также: HTML Academy - Sass-карты: практическое руководство
57
+ /// @link https://ru.hexlet.io/courses/sass-basics/lessons/maps/theory_unit См. также: Hexlet - Карты в Sass
58
+ /// @link https://www.youtube.com/watch?v=6kUo6lBF0Cc См. также: YouTube - Работа с картами в Sass
59
+ /// @link https://www.youtube.com/watch?v=WSfRZjyUTgg См. также: YouTube - Продвинутая работа с картами Sass
60
+ /// @link https://stackoverflow.com/questions/37705095/sass-get-value-from-nested-map См. также: Stack Overflow - Получение значения из вложенной карты
61
+ /// @link https://stackoverflow.com/questions/40774889/sass-update-nested-map-value См. также: Stack Overflow - Обновление значения во вложенной карте
62
+ /// @link https://stackoverflow.com/questions/47802171/sass-merge-nested-maps См. также: Stack Overflow - Слияние вложенных карт
63
+ /// @link https://github.com/sass/sass/tree/main/spec См. также: GitHub - Спецификация языка Sass
64
+ /// @link https://www.npmjs.com/package/sass См. также: npm - Пакет Dart Sass
65
+ /// @link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map См. также: MDN Web Docs - JavaScript объект Map
66
+ /// @link https://en.wikipedia.org/wiki/Associative_array См. также: Wikipedia - Ассоциативный массив
67
+ /// @link https://en.wikipedia.org/wiki/Tree_(data_structure) См. также: Wikipedia - Древовидные структуры данных
68
+ /// @link https://ru.wikipedia.org/wiki/%D0%90%D1%81%D1%81%D0%BE%D1%86%D0%B8%D0%B0%D1%82%D0%B8%D0%B2%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B0%D1%81%D1%81%D0%B8%D0%B2 См. также: Wikipedia - Ассоциативный массив (рус.)
69
+ /// @example scss - Базовое использование с плоской картой
70
+ /// $breakpoints: (
71
+ /// mobile: 480px,
72
+ /// tablet: 768px
73
+ /// );
74
+ ///
75
+ /// @debug set-map-item($breakpoints, (desktop), 1024px); // Результат: (mobile: 480px, tablet: 768px, desktop: 1024px)
76
+ ///
77
+ /// @example scss - Обновление значения во вложенной карте
78
+ /// $theme: (
79
+ /// colors: (
80
+ /// primary: #3498db,
81
+ /// secondary: #2ecc71
82
+ /// ),
83
+ /// fonts: (
84
+ /// base: 16px,
85
+ /// headings: (
86
+ /// h1: 2rem,
87
+ /// h2: 1.5rem
88
+ /// )
89
+ /// )
90
+ /// );
91
+ ///
92
+ /// @debug set-map-item($theme, (colors, primary), #e74c3c); // Debug: (colors: (primary: #e74c3c, secondary: #2ecc71), fonts: (base: 16px, headings: (h1: 2rem, h2: 1.5rem)))
93
+ ///
94
+ /// @example scss - Создание новых уровней вложенности
95
+ /// $config: (
96
+ /// api: (
97
+ /// version: 'v1'
98
+ /// )
99
+ /// );
100
+ ///
101
+ /// @debug set-map-item(
102
+ /// $config,
103
+ /// (api, endpoints, users),
104
+ /// '/api/v1/users'
105
+ /// ); // Error: "🟥 Ключ «endpoints» не существует на текущем уровне карты."
106
+ ///
107
+ /// @param {Map} $map - Исходная карта, в которую
108
+ /// устанавливается значение. Остаётся неизменной,
109
+ /// функция возвращает новую карту.
110
+ /// @param {List} $keys - Список ключей, образующих путь
111
+ /// к месту установки значения. Ключи перечисляются
112
+ /// последовательно, от внешнего уровня к внутреннему.
113
+ /// @param {*} $value - Значение, которое нужно установить
114
+ /// по указанному пути. Может быть любого типа: строка,
115
+ /// число, список, карта и т.д.
116
+ /// @return {Map} - Новая карта с установленным значением.
117
+ /// Исходная карта остаётся неизменной.
118
+ /// @throws {Error} - Выбрасывает ошибку через функцию
119
+ /// `log()`, если промежуточный ключ не существует
120
+ /// на своём уровне карты.
121
+ /// @throws {Warning} - Выводит предупреждение через
122
+ /// функцию `log()`, если последний ключ является картой.
123
+ /// Предупреждение информирует о том, что карта будет
124
+ /// переопределена новым значением.
125
+ @function set-map-item($map, $keys, $value) {
126
+
127
+ // Создаём список для хранения всех уровней карты,
128
+ // которые мы встретим при прохождении по ключам.
129
+ // Начинаем с исходной карты.
130
+ $-maps: ($map,);
131
+
132
+ $key: null;
133
+
134
+ // Переменная для хранения результата сборки.
135
+ // Будет заполнена на втором проходе.
136
+ $-result: null;
137
+
138
+ // Проверяем, не пытается ли пользователь переопределить
139
+ // карту значением. Если последний ключ — это карта,
140
+ // предупреждаем об этом, потому что карта будет заменена
141
+ // на новое значение, что может привести к потере данных.
142
+ @if is-map(list.nth($keys, -1)) {
143
+
144
+ // Сообщение предупреждения о переопределении карты.
145
+ // Содержит значение, которым будет заменена карта.
146
+ $-log-map-key-override: (
147
+ en: 'The last key you specified is a map; it will be redefined using «#{$value}».',
148
+ ru: 'Последний указанный вами ключ — это карта; он будет переопределен с помощью «#{$value}».'
149
+ );
150
+
151
+ // Выводим предупреждение через систему логирования
152
+ // и возвращаем null (логирование само вернёт null).
153
+ @return log($-log-map-key-override, 'warn');
154
+
155
+ }
156
+
157
+ // Проверяем, что первый аргумент действительно
158
+ // является картой.
159
+ @if not is-map($map) {
160
+
161
+ // Если это не так, вызываем функцию логирования ошибки
162
+ // и возвращаем её результат.
163
+ // Функция log-invalid-type должна обработать некорректный
164
+ // тип и вернуть null (или выбросить ошибку в зависимости
165
+ // от настроек).
166
+ @return log-invalid-type(
167
+ 'set-map-item',
168
+ $map,
169
+ '$map',
170
+ 'map'
171
+ );
172
+
173
+ }
174
+
175
+ // Если передан только один ключ, используем простой map.merge().
176
+ // Это оптимизация для частного случая плоской карты.
177
+ @if list.length($keys) == 1 {
178
+ @return map.merge($map, ($keys: $value));
179
+ }
180
+
181
+ // ПЕРВЫЙ ПРОХОД: Собираем все уровни карты
182
+ // Проходим по всем ключам, кроме последнего (последний
183
+ // будет заменён новым значением).
184
+ @for $-i from 1 through list.length($keys) - 1 {
185
+
186
+ // Текущий ключ из списка ключей
187
+ $-current-key: list.nth($keys, $-i);
188
+
189
+ // Текущая карта (последняя добавленная в $-maps)
190
+ $-current-map: list.nth($-maps, -1);
191
+
192
+ // Пытаемся получить значение по текущему ключу
193
+ $-current-get: map.get($-current-map, $-current-key);
194
+
195
+ // Если ключ не существует на текущем уровне,
196
+ // это критическая ошибка — мы не можем продолжить.
197
+ @if $-current-get == null {
198
+
199
+ // Сообщение об ошибке отсутствия ключа.
200
+ // Указывает, какой именно ключ не найден.
201
+ $-log-map-key-missing: (
202
+ en: 'The key «#{$-current-key}» does not exist at the current map level.',
203
+ ru: 'Ключ «#{$-current-key}» не существует на текущем уровне карты.'
204
+ );
205
+
206
+ // Выбрасываем ошибку через систему логирования.
207
+ // Ошибка остановит компиляцию.
208
+ @return log($-log-map-key-missing, 'error');
209
+
210
+ }
211
+
212
+ // Добавляем найденное значение в список карт.
213
+ // Оно станет текущей картой для следующей итерации.
214
+ $-maps: list.append($-maps, $-current-get);
215
+
216
+ }
217
+
218
+ // ВТОРОЙ ПРОХОД: Собираем новую карту снизу вверх
219
+ // Идём от последнего уровня к первому, встраивая
220
+ // обновлённые значения.
221
+ @for $-i from list.length($-maps) through 1 {
222
+
223
+ // Текущая карта для этого уровня
224
+ $-current-map: list.nth($-maps, $-i);
225
+
226
+ // Ключ для этого уровня
227
+ $-current-key: list.nth($keys, $-i);
228
+
229
+ // Определяем значение, которое нужно установить:
230
+ // - Если это последний уровень, используем переданное $value
231
+ // - Иначе используем результат предыдущей сборки ($-result)
232
+ $-current-val: if(sass($-i == list.length($-maps)): $value; else: $-result);
233
+
234
+ // Объединяем текущую карту с новым значением по ключу
235
+ // Результат сохраняем в $-result для следующего уровня
236
+ $-result: map.merge($-current-map, ($-current-key: $-current-val));
237
+
238
+ }
239
+
240
+ // Возвращаем полностью собранную новую карту
241
+ @return $-result;
242
+
243
+ }
@@ -127,10 +127,11 @@
127
127
  /// используется значение 50%, которое является
128
128
  /// общепринятым разделением между светлыми и темными
129
129
  /// тонами. Можно изменить для тонкой настройки.
130
- /// @throws {Error} - Выбрасывает ошибку, если в параметры передано
131
- /// значение, не соответствующее типу `color` ($color) или
132
- /// `number` (`$threshold`). Компиляция Sass будет остановлена
133
- /// с ошибкой.
130
+ /// @throws {Error} - Выбрасывает ошибку, если в параметр передано
131
+ /// значение, не соответствующее необходимому типу:
132
+ ///
133
+ /// - `$color` → `color`
134
+ /// - `$threshold` → `number`
134
135
  @function is-color-light($color, $threshold: 50) {
135
136
 
136
137
  // Проверка типа первого параметра: ожидается цветовое значение.
@@ -103,9 +103,10 @@
103
103
  /// в списке являются цветами. Возвращает `false`, если
104
104
  /// хотя бы один элемент не является цветом. Для пустого
105
105
  /// списка возвращает `true`.
106
- /// @throws {Error} - Выбрасывает ошибку, если параметру `$list` передано
107
- /// значение, не соответствующее типу `list`. Компиляция Sass
108
- /// будет остановлена с ошибкой.
106
+ /// @throws {Error} - Выбрасывает ошибку, если в параметр передано
107
+ /// значение, не соответствующее необходимому типу:
108
+ ///
109
+ /// - `$list` → `list`
109
110
  @function is-color-list($list) {
110
111
 
111
112
  // Проверка типа входного параметра: ожидается список или arglist.
@@ -56,13 +56,14 @@
56
56
  ///
57
57
  /// position: $position;
58
58
  /// }
59
- /// @param {*} $value - Значение для поиска в списке
60
59
  /// @param {List} $list - Список, в котором выполняется поиск
60
+ /// @param {*} $value - Значение для поиска в списке
61
61
  /// @return {Boolean} - Возвращает `true`, если значение
62
62
  /// найдено в списке, иначе возвращает `false`.
63
- /// @throws {Error} - Выбрасывает ошибку, если параметру `$list` передано
64
- /// значение, не соответствующее типу `list`. Компиляция Sass
65
- /// будет остановлена с ошибкой.
63
+ /// @throws {Error} - Выбрасывает ошибку, если в параметр передано
64
+ /// значение, не соответствующее необходимому типу:
65
+ ///
66
+ /// - `$list` → `list`
66
67
  @function is-list-contained($list, $value) {
67
68
 
68
69
  // Проверка типа первого параметра: ожидается список или arglist.
@@ -64,9 +64,10 @@
64
64
  /// является целым числом и делится на 2 без остатка.
65
65
  /// Во всех остальных случаях возвращает `false`,
66
66
  /// включая нецелые числа и значения других типов.
67
- /// @throws {Error} - Выбрасывает ошибку, если в параметры передано
68
- /// значение, не соответствующее типу `number`. Компиляция Sass
69
- /// будет остановлена с ошибкой.
67
+ /// @throws {Error} - Выбрасывает ошибку, если в параметр передано
68
+ /// значение, не соответствующее необходимому типу:
69
+ ///
70
+ /// - `$value` → `number`
70
71
  @function is-int-even($value) {
71
72
 
72
73
  // Проверка типа входного параметра: ожидается числовое значение.
@@ -65,9 +65,10 @@
65
65
  /// является целым числом и не делится на 2 без остатка.
66
66
  /// Во всех остальных случаях возвращает `false`,
67
67
  /// включая нецелые числа и значения других типов.
68
- /// @throws {Error} - Выбрасывает ошибку, если в параметры передано
69
- /// значение, не соответствующее типу `number`. Компиляция Sass
70
- /// будет остановлена с ошибкой.
68
+ /// @throws {Error} - Выбрасывает ошибку, если в параметр передано
69
+ /// значение, не соответствующее необходимому типу:
70
+ ///
71
+ /// - `$value` → `number`
71
72
  @function is-int-odd($value) {
72
73
 
73
74
  // Проверка типа входного параметра: ожидается числовое значение.
@@ -120,9 +120,11 @@
120
120
  /// строгой проверки типов.
121
121
  /// @return {Boolean} - `true` если значение является
122
122
  /// целым числом, `false` во всех остальных случаях.
123
- /// @throws {Error} - Выбрасывает ошибку, если в параметры передано
124
- /// значение, не соответствующее типу `number`. Компиляция Sass
125
- /// будет остановлена с ошибкой.
123
+ /// @throws {Error} - Выбрасывает ошибку, если в параметр передано
124
+ /// значение, не соответствующее необходимому типу:
125
+ ///
126
+ /// - `$value` → `number`
127
+ /// - `$set-strict-mode-local` → `boolean`
126
128
  @function is-int($value, $set-strict-mode-local: true) {
127
129
 
128
130
  // Проверка строгого режима: если включен, выполняется
@@ -78,9 +78,10 @@
78
78
  /// `math.unit($value)` не является пустой строкой).
79
79
  /// Возвращает `false` для безразмерных чисел и всех
80
80
  /// нечисловых значений.
81
- /// @throws {Error} - Выбрасывает ошибку, если в параметры передано
82
- /// значение, не соответствующее типу `number`. Компиляция Sass
83
- /// будет остановлена с ошибкой.
81
+ /// @throws {Error} - Выбрасывает ошибку, если в параметр передано
82
+ /// значение, не соответствующее необходимому типу:
83
+ ///
84
+ /// - `$value` → `number`
84
85
  @function is-number-has-unit($value) {
85
86
 
86
87
  // Проверка типа входного параметра: ожидается числовое значение.
@@ -70,9 +70,10 @@
70
70
  /// является числом и строго меньше нуля. Во всех
71
71
  /// остальных случаях возвращает `false`, включая
72
72
  /// ноль, положительные числа и значения других типов.
73
- /// @throws {Error} - Выбрасывает ошибку, если в параметры передано
74
- /// значение, не соответствующее типу `number`. Компиляция Sass
75
- /// будет остановлена с ошибкой.
73
+ /// @throws {Error} - Выбрасывает ошибку, если в параметр передано
74
+ /// значение, не соответствующее необходимому типу:
75
+ ///
76
+ /// - `$value` → `number`
76
77
  @function is-number-negative($value) {
77
78
 
78
79
  // Проверка типа входного параметра: ожидается числовое значение.
@@ -68,9 +68,10 @@
68
68
  /// является числом и строго больше нуля. Во всех
69
69
  /// остальных случаях возвращает `false`, включая
70
70
  /// ноль, отрицательные числа и значения других типов.
71
- /// @throws {Error} - Выбрасывает ошибку, если в параметры передано
72
- /// значение, не соответствующее типу `number`. Компиляция Sass
73
- /// будет остановлена с ошибкой.
71
+ /// @throws {Error} - Выбрасывает ошибку, если в параметр передано
72
+ /// значение, не соответствующее необходимому типу:
73
+ ///
74
+ /// - `$value` → `number`
74
75
  @function is-number-positive($value) {
75
76
 
76
77
  // Проверка типа входного параметра: ожидается числовое значение.
@@ -81,9 +81,10 @@
81
81
  /// `math.unit($value)` является пустой строкой).
82
82
  /// Возвращает `false` для чисел с единицами измерения и всех
83
83
  /// нечисловых значений.
84
- /// @throws {Error} - Выбрасывает ошибку, если в параметры передано
85
- /// значение, не соответствующее типу `number`. Компиляция Sass
86
- /// будет остановлена с ошибкой.
84
+ /// @throws {Error} - Выбрасывает ошибку, если в параметр передано
85
+ /// значение, не соответствующее необходимому типу:
86
+ ///
87
+ /// - `$value` → `number`
87
88
  @function is-number-unitless($value) {
88
89
 
89
90
  // Проверка типа входного параметра: ожидается числовое значение.
@@ -69,9 +69,10 @@
69
69
  /// является числом и строго равно нулю. Во всех
70
70
  /// остальных случаях возвращает `false`, включая
71
71
  /// ненулевые числа и значения других типов.
72
- /// @throws {Error} - Выбрасывает ошибку, если в параметры передано
73
- /// значение, не соответствующее типу `number`. Компиляция Sass
74
- /// будет остановлена с ошибкой.
72
+ /// @throws {Error} - Выбрасывает ошибку, если в параметр передано
73
+ /// значение, не соответствующее необходимому типу:
74
+ ///
75
+ /// - `$value` → `number`
75
76
  @function is-number-zero($value) {
76
77
 
77
78
  // Проверка типа входного параметра: ожидается числовое значение.
@@ -102,9 +102,11 @@
102
102
  /// и `false` в противном случае. Возвращаемые значения:
103
103
  /// - `true`: подстрока существует в строке (хотя бы одно вхождение)
104
104
  /// - `false`: подстрока не найдена или является пустой строкой
105
- /// @throws {Error} - Выбрасывает ошибку, если параметрам передано
106
- /// значение, не соответствующее типу `string`. Компиляция Sass
107
- /// будет остановлена с ошибкой.
105
+ /// @throws {Error} - Выбрасывает ошибку, если в параметр передано
106
+ /// значение, не соответствующее необходимому типу:
107
+ ///
108
+ /// - `$string` → `string`
109
+ /// - `$substring` → `string`
108
110
  @function is-string-contained($string, $substring) {
109
111
 
110
112
  // Проверка типа первого параметра: ожидается строка для поиска.
@@ -50,9 +50,10 @@
50
50
  /// @return {Boolean} - Возвращает `true`, если длина строки
51
51
  /// равна нулю. Возвращает `false` для любой строки
52
52
  /// ненулевой длины, а также для значений других типов.
53
- /// @throws {Error} - Выбрасывает ошибку, если в параметры передано
54
- /// значение, не соответствующее типу `string`. Компиляция Sass
55
- /// будет остановлена с ошибкой.
53
+ /// @throws {Error} - Выбрасывает ошибку, если в параметр передано
54
+ /// значение, не соответствующее необходимому типу:
55
+ ///
56
+ /// - `$string` → `string`
56
57
  @function is-string-empty($string) {
57
58
 
58
59
  // Проверка типа входного параметра: ожидается строковое значение.
@@ -56,9 +56,11 @@
56
56
  /// указанной подстрокой. Возвращает `false`, если строка не заканчивается
57
57
  /// подстрокой, если подстрока длиннее строки, или если регистр
58
58
  /// символов не совпадает.
59
- /// @throws {Error} - Выбрасывает ошибку, если параметрам передано
60
- /// значение, не соответствующее типу `string`. Компиляция Sass
61
- /// будет остановлена с ошибкой.
59
+ /// @throws {Error} - Выбрасывает ошибку, если в параметр передано
60
+ /// значение, не соответствующее необходимому типу:
61
+ ///
62
+ /// - `$string` → `string`
63
+ /// - `$substring` → `string`
62
64
  @function is-string-ending-with($string, $substring) {
63
65
 
64
66
  // Проверка типа первого параметра: ожидается строка для проверки.
@@ -56,9 +56,11 @@
56
56
  /// с указанной подстроки. Возвращает `false`, если строка не
57
57
  /// начинается с подстроки, если подстрока длиннее строки, или
58
58
  /// если регистр символов не совпадает.
59
- /// @throws {Error} - Выбрасывает ошибку, если параметрам передано
60
- /// значение, не соответствующее типу `string`. Компиляция Sass
61
- /// будет остановлена с ошибкой.
59
+ /// @throws {Error} - Выбрасывает ошибку, если в параметр передано
60
+ /// значение, не соответствующее необходимому типу:
61
+ ///
62
+ /// - `$string` → `string`
63
+ /// - `$substring` → `string`
62
64
  @function is-string-starting-with($string, $substring) {
63
65
 
64
66
  // Проверка типа первого параметра: ожидается строка для проверки.
@@ -90,7 +90,3 @@
90
90
  @function is-color($value) {
91
91
  @return meta.type-of($value) == color;
92
92
  }
93
-
94
-
95
-
96
-
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@omnisass/library",
3
- "version": "0.4.0",
4
3
  "description": "Библиотека функций и миксинов, написанная на языке CSS-препроцессора Sass. Она предназначена для того, чтобы упростить, ускорить и улучшить процесс создания стилей для веб-сайтов.",
4
+ "version": "0.5.0",
5
5
  "main": "index.scss",
6
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"
7
+ "test:sass": "sass playground/:playground/",
8
+ "test:sass-watch": "sass playground/:playground/ --watch",
9
+ "test:sassdoc": "npx sassdoc ./ --config ./.sassdoc.yaml",
10
+ "test": "npm run test:sass && npm run test:sassdoc",
11
+ "script:bump-version": "sh .omnisass/scripts/bump-version.sh"
12
12
  },
13
13
  "exports": {
14
14
  ".": {
@@ -17,18 +17,27 @@
17
17
  },
18
18
  "keywords": [
19
19
  "sass",
20
- "scss",
21
- "omnisass",
22
- "therteenten",
23
- "css",
24
- "mixin",
25
- "function",
26
20
  "sass-mixin",
27
21
  "sass-function",
28
- "scss-minix",
22
+ "sass-utilities",
23
+ "sass-framework",
24
+ "scss",
25
+ "scss-mixin",
29
26
  "scss-function",
27
+ "scss-utilities",
28
+ "scss-framework",
29
+ "css",
30
+ "web",
30
31
  "web-development",
31
- "colors"
32
+ "web-design",
33
+ "web-frontend",
34
+ "colors",
35
+ "mixin",
36
+ "function",
37
+ "omnisass",
38
+ "sassify",
39
+ "kalium19",
40
+ "therteenten"
32
41
  ],
33
42
  "repository": {
34
43
  "type": "git",
@@ -40,15 +49,15 @@
40
49
  "url": "https://sourcecraft.dev/users/therteenten/overview"
41
50
  },
42
51
  "license": "MIT",
52
+ "homepage": "https://sourcecraft.dev/therteenten",
43
53
  "bugs": {
44
54
  "url": "https://sourcecraft.dev/omnisass/library/issues",
45
55
  "email": "therteenten@ya.ru"
46
56
  },
47
- "homepage": "https://sourcecraft.dev/therteenten",
48
57
  "devDependencies": {
49
58
  "sassdoc": "^2.7.4"
50
59
  },
51
60
  "dependencies": {
52
- "sass": "^1.97.2"
61
+ "sass": "^1.98.0"
53
62
  }
54
63
  }
package/package.scss CHANGED
@@ -6,6 +6,9 @@
6
6
  /// библиотеку, и, как правило, не требуют модификации
7
7
  /// (за исключением переменной `$version`, которая подлежит
8
8
  /// обновлению посредством скрипта bump-version.sh).
9
+ ///
10
+ /// При использовании этого модуля пространство имён для этих
11
+ /// конфигов рекомендуется указывать как `package`.
9
12
  /// ---
10
13
  /// @group package
11
14
  ////
@@ -42,7 +45,7 @@ $title: "OmniSass";
42
45
  /// @name description
43
46
  /// @access private
44
47
  /// @type String
45
- $description: "Набор утилит, миксинов, расширений на языке препроцессора Sass для помощи в ускорении, упрощении и улучщения процесса написания CSS-стилей.";
48
+ $description: "Набор утилит, миксинов, расширений на языке препроцессора Sass для помощи в ускорении, упрощении и улучщения процесса написания CSS-стилей.";
46
49
 
47
50
  /// Текущая версия библиотеки - используется для контроля
48
51
  /// версий и отслеживания изменений.
@@ -53,7 +56,14 @@ $description: "Набор утилит, миксинов, расширений
53
56
  /// @name version
54
57
  /// @access private
55
58
  /// @type String | Number
56
- $version: "0.4.0";
59
+ $version: "0.5.0";
60
+
61
+ /// Цвет бренда проекта. Может быть использована открыто.
62
+ /// ---
63
+ /// @name color
64
+ /// @access private
65
+ /// @type Color
66
+ $color: #e91e63;
57
67
 
58
68
  /// Тип лицензии библиотеки - используется для указания
59
69
  /// условий использования и распространения.