@omnisass/library 0.3.0 → 0.4.1

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 (50) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/index.scss +6 -0
  3. package/modules/utilities/getters/misc/_get-uid.scss +135 -0
  4. package/modules/utilities/getters/string/_get-string-hash.scss +143 -0
  5. package/modules/utilities/helpers/list/_list-sum-numbers-safe.scss +4 -3
  6. package/modules/utilities/helpers/list/_list-sum-numbers.scss +4 -3
  7. package/modules/utilities/helpers/misc/_url-encode.scss +7 -6
  8. package/modules/utilities/helpers/number/_number-ceil-to.scss +5 -3
  9. package/modules/utilities/helpers/number/_number-clamp-max.scss +5 -3
  10. package/modules/utilities/helpers/number/_number-clamp-min.scss +5 -3
  11. package/modules/utilities/helpers/number/_number-clamp.scss +6 -3
  12. package/modules/utilities/helpers/number/_number-denormalize.scss +6 -3
  13. package/modules/utilities/helpers/number/_number-fibonacci.scss +4 -3
  14. package/modules/utilities/helpers/number/_number-floor-to.scss +5 -3
  15. package/modules/utilities/helpers/number/_number-format-with-separator.scss +5 -4
  16. package/modules/utilities/helpers/number/_number-normalize.scss +6 -3
  17. package/modules/utilities/helpers/number/_number-random-between-int.scss +5 -3
  18. package/modules/utilities/helpers/number/_number-random-between.scss +5 -3
  19. package/modules/utilities/helpers/number/_number-range.scss +6 -3
  20. package/modules/utilities/helpers/number/_number-round-to-nearest.scss +5 -3
  21. package/modules/utilities/helpers/number/_number-round-to.scss +5 -3
  22. package/modules/utilities/helpers/number/_number-strip-unit.scss +4 -3
  23. package/modules/utilities/helpers/string/_string-capitalize.scss +4 -3
  24. package/modules/utilities/helpers/string/_string-count.scss +173 -0
  25. package/modules/utilities/helpers/string/_string-lorips.config.scss +81 -0
  26. package/modules/utilities/helpers/string/_string-lorips.scss +198 -0
  27. package/modules/utilities/helpers/string/_string-repeat.scss +147 -0
  28. package/modules/utilities/helpers/string/_string-replace.scss +6 -3
  29. package/modules/utilities/helpers/string/_string-reverse.scss +139 -0
  30. package/modules/utilities/helpers/string/_string-trim-end.scss +4 -3
  31. package/modules/utilities/helpers/string/_string-trim-start.scss +4 -3
  32. package/modules/utilities/helpers/string/_string-trim.scss +4 -3
  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/package.json +1 -1
  49. package/package.scss +2 -2
  50. package/modules/utilities/setters/_index.scss +0 -3
package/CHANGELOG.md CHANGED
@@ -1,6 +1,25 @@
1
1
  # История изменений OmniSass
2
2
  Обратите внимание, что данный текст представляет собой краткое изложение истории разработки проекта по версиям. Для более детального ознакомления с изменениями рекомендуется обратиться к соответствующему [разделу](https://sourcecraft.dev/omnisass/library/commits/?rev=master) в SourceCraft.
3
3
 
4
+ ## v0.4.0 - Public Alpha Release
5
+ {% note info %}
6
+
7
+ Данная версия библиотеки включает завершённую реализацию функций, построенных на основе встроенного модуля `sass:string`. В фокусе следующего релиза — разработка функциональности с использованием модуля `sass:map`.
8
+
9
+ {% endnote %}
10
+
11
+ ### Добавленные новые Sass-функции
12
+ #### Вспомогательные функции
13
+ - **string-count** - Подсчитывает количество вхождений подстроки в строку.
14
+ - **string-reverse** - Переворачивает строку (меняет порядок символов на обратный).
15
+ - **string-lorips** - Генерирует текст-заполнитель на основе указанного списка слов.
16
+ - **string-repeat** - Повторяет строку указанное количество раз.
17
+
18
+ #### Функции для получения значений
19
+ - **get-string-hash** - Вычисляет числовой хеш-код для строки по алгоритму DJB2.
20
+ - **get-uid** - Генерирует уникальный строковый идентификатор с префиксом.
21
+
22
+
4
23
  ## v0.3.0 - Public Alpha Release
5
24
  {% note warning "Примечание" %}
6
25
 
package/index.scss CHANGED
@@ -21,6 +21,7 @@
21
21
  @forward 'modules/utilities/getters/list/get-list-item';
22
22
  @forward 'modules/utilities/getters/list/get-list-item-end';
23
23
  @forward 'modules/utilities/getters/list/get-list-item-start';
24
+ @forward 'modules/utilities/getters/misc/get-uid';
24
25
  @forward 'modules/utilities/getters/number/get-number-from-percent';
25
26
  @forward 'modules/utilities/getters/number/get-number-height-by-ratio';
26
27
  @forward 'modules/utilities/getters/number/get-number-max';
@@ -28,6 +29,7 @@
28
29
  @forward 'modules/utilities/getters/number/get-number-percentage-of';
29
30
  @forward 'modules/utilities/getters/number/get-number-unit';
30
31
  @forward 'modules/utilities/getters/number/get-number-width-by-ratio';
32
+ @forward 'modules/utilities/getters/string/get-string-hash';
31
33
 
32
34
  // Helpers
33
35
  @forward 'modules/utilities/helpers/color/color-blend';
@@ -60,7 +62,11 @@
60
62
  @forward 'modules/utilities/helpers/number/number-round-to-nearest';
61
63
  @forward 'modules/utilities/helpers/number/number-strip-unit';
62
64
  @forward 'modules/utilities/helpers/string/string-capitalize';
65
+ @forward 'modules/utilities/helpers/string/string-count';
66
+ @forward 'modules/utilities/helpers/string/string-lorips';
67
+ @forward 'modules/utilities/helpers/string/string-repeat';
63
68
  @forward 'modules/utilities/helpers/string/string-replace';
69
+ @forward 'modules/utilities/helpers/string/string-reverse';
64
70
  @forward 'modules/utilities/helpers/string/string-trim';
65
71
  @forward 'modules/utilities/helpers/string/string-trim-end';
66
72
  @forward 'modules/utilities/helpers/string/string-trim-start';
@@ -0,0 +1,135 @@
1
+ @use 'sass:math';
2
+ @use 'sass:string';
3
+ @use '../../loggers/log-invalid-type' as *;
4
+ @use '../../validators/type-of/is-number' as *;
5
+ @use '../../validators/type-of/is-string' as *;
6
+
7
+ /// Генерирует уникальный строковый идентификатор с префиксом.
8
+ ///
9
+ /// Функция создает гарантированно уникальный идентификатор,
10
+ /// комбинируя пользовательский префикс, случайное число и
11
+ /// встроенный уникальный временной штамп Sass. Это позволяет
12
+ /// создавать идентификаторы, которые практически исключают
13
+ /// вероятность коллизий даже при массовой генерации в разных
14
+ /// контекстах выполнения.
15
+ ///
16
+ /// Важные особенности функции:
17
+ /// - Поддерживает настраиваемый префикс для семантического
18
+ /// обозначения типа идентификатора
19
+ /// - Использует криптографически безопасный генератор
20
+ /// случайных чисел Sass
21
+ /// - Добавляет встроенный временной штамп для уникальности
22
+ /// - Выполняет строгую проверку типов входных параметров
23
+ /// - Возвращает строку, готовую к использованию как CSS ID
24
+ /// или имя класса
25
+ /// - Полезна для генерации уникальных имен в CSS-in-JS
26
+ /// решениях
27
+ /// - Может использоваться для создания ключей в картах
28
+ /// - Обеспечивает уникальность в пределах одной компиляции
29
+ /// - Совместима с модульной системой Sass
30
+ /// ---
31
+ /// @name get-uid
32
+ /// @group utilities-getters
33
+ /// @since 2026.01.18
34
+ /// @access public
35
+ /// @author Murad Rustamov (therteenten)
36
+ /// @link https://sourcecraft.dev/users/therteenten/overview SourceCraft - therteenten
37
+ /// @link https://sourcecraft.dev/omnisass/library SourceCraft - OmniSass
38
+ /// @link https://sass-lang.com/documentation/modules/math См. также: Официальная документация Sass - Модуль Math
39
+ /// @link https://sass-lang.com/documentation/modules/string См. также: Официальная документация Sass - Модуль String
40
+ /// @link https://sass-lang.com/documentation/values/numbers См. также: Официальная документация Sass - Тип данных "Числа"
41
+ /// @link https://sass-lang.com/documentation/values/strings См. также: Официальная документация Sass - Тип данных "Строки"
42
+ /// @link https://developer.mozilla.org/en-US/docs/Web/API/Crypto/randomUUID См. также: MDN Web Docs - Метод Crypto.randomUUID()
43
+ /// @link https://developer.mozilla.org/en-US/docs/Glossary/CSS_keyword См. также: MDN Web Docs - Глоссарий: CSS Keyword
44
+ /// @link https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id См. также: MDN Web Docs - Глобальный атрибут id
45
+ /// @link https://css-tricks.com/snippets/sass/unique-id-function/ См. также: CSS-Tricks - Функция уникального ID в Sass
46
+ /// @link https://css-tricks.com/sass-generate-ids-classes/ См. также: CSS-Tricks - Генерация ID и классов в Sass
47
+ /// @link https://sass-guidelin.es/ru/#section-44 См. также: Sass Guidelines - Раздел про функции
48
+ /// @link https://github.com/sass/sass/issues/2848 См. также: GitHub - Обсуждение уникальных ID в Sass
49
+ /// @example scss - Базовое использование с префиксом по умолчанию
50
+ /// @debug get-uid(); // "id-384756-uasgd7234"
51
+ /// @debug get-uid(); // "id-928173-kjhasd872"
52
+ /// @debug get-uid(); // "id-102938-poiuy1234"
53
+ /// @example scss - Использование с кастомным префиксом
54
+ /// @debug get-uid('user-'); // "user-473829-oiuyt9876"
55
+ /// @debug get-uid('modal-'); // "modal-192837-zxcvb4567"
56
+ /// @debug get-uid('component-'); // "component-564738-mnbvc0987"
57
+ /// @example scss - Использование с разным диапазоном случайных чисел
58
+ /// @debug get-uid('id-', 1000); // "id-423-iuyt6543"
59
+ /// @debug get-uid('id-', 9999999); // "id-7823491-zxcv5432"
60
+ /// @debug get-uid('id-', 100); // "id-87-asdfg1234"
61
+ /// @param {String} $prefix ["id-"] - Префикс для
62
+ /// идентификатора. Добавляется в начало строки ID,
63
+ /// позволяя семантически группировать идентификаторы
64
+ /// по назначению. Должен быть строковым значением.
65
+ /// @param {Number} $random-max [1000000] - Максимальное
66
+ /// значение для генерации случайного числа. Определяет
67
+ /// диапазон случайной части идентификатора (от 1 до
68
+ /// указанного значения). Должен быть числовым значением.
69
+ /// @return {String} - Уникальный строковый идентификатор
70
+ /// в формате "префикс-случайное_число-временной_штамп".
71
+ /// Гарантирует уникальность в пределах текущей сессии
72
+ /// компиляции Sass.
73
+ /// @throws {Error} - Выбрасывает ошибку, если в параметр передано
74
+ /// значение, не соответствующее необходимому типу:
75
+ ///
76
+ /// - `$prefix` → `string`
77
+ /// - `$random-max` → `number`
78
+ @function get-uid($prefix: "id-", $random-max: 1000000) {
79
+
80
+ // Проверка типа первого параметра: ожидается строковый префикс.
81
+ // Префикс позволяет семантически обозначать тип идентификатора
82
+ // (например, 'user-', 'modal-', 'component-'), что улучшает
83
+ // читаемость и отладку сгенерированных идентификаторов.
84
+ @if not is-string($prefix) {
85
+
86
+ // Если $prefix не является строкой, возвращаем ошибку через
87
+ // стандартную функцию логирования. Это предотвращает
88
+ // некорректную конкатенацию с нестроковыми значениями.
89
+ @return log-invalid-type(
90
+ 'get-uid',
91
+ $prefix,
92
+ '$prefix',
93
+ 'string'
94
+ );
95
+
96
+ }
97
+
98
+ // Проверка типа второго параметра: ожидается числовое значение
99
+ // для диапазона случайных чисел. Параметр определяет верхнюю
100
+ // границу для генератора случайных чисел (math.random).
101
+ @else if not is-number($random-max) {
102
+
103
+ // Если $random-max не является числом, возвращаем ошибку.
104
+ // Проверка выполняется только если $prefix прошел валидацию.
105
+ @return log-invalid-type(
106
+ 'get-uid',
107
+ $random-max,
108
+ '$random-max',
109
+ 'number'
110
+ );
111
+
112
+ }
113
+
114
+ // Все параметры прошли валидацию - генерируем уникальный ID.
115
+ @else {
116
+
117
+ // Генерация случайного числа в диапазоне от 1 до $random-max.
118
+ // Функция math.random() использует криптографически безопасный
119
+ // генератор, обеспечивающий хорошее распределение значений.
120
+ $-random: math.random($random-max);
121
+
122
+ // Генерация уникального временного штампа.
123
+ // Функция string.unique-id() возвращает гарантированно
124
+ // уникальную строку в пределах текущей компиляции Sass,
125
+ // основанную на времени и случайных факторах.
126
+ $-timestamp: string.unique-id();
127
+
128
+ // Конкатенация всех компонентов в финальный идентификатор.
129
+ // Формат: префикс + случайное_число + разделитель + штамп.
130
+ // Разделитель '-' улучшает читаемость и парсинг при отладке.
131
+ @return $prefix + $-random + "-" + $-timestamp;
132
+
133
+ }
134
+
135
+ }
@@ -0,0 +1,143 @@
1
+ @use 'sass:string';
2
+ @use '../../loggers/log-invalid-type' as *;
3
+ @use '../../validators/type-of/is-string' as *;
4
+
5
+ /// Вычисляет числовой хеш-код для строки по алгоритму DJB2.
6
+ ///
7
+ /// Функция преобразует произвольную строку в числовой хеш-код
8
+ /// фиксированной длины (до 6 знаков). Алгоритм использует
9
+ /// мультипликативный подход с множителем 31 и модульной
10
+ /// арифметикой, что обеспечивает хорошее распределение
11
+ /// значений при минимальных коллизиях для коротких строк.
12
+ ///
13
+ /// Важные особенности функции:
14
+ /// - Реализует упрощенную версию алгоритма хеширования DJB2
15
+ /// - Использует множитель 31 для оптимального распределения
16
+ /// - Ограничивает результат модулем 1,000,000 (6 знаков)
17
+ /// - Работает только с алфавитно-цифровыми символами
18
+ /// - Возвращает 0 для пустой строки или некорректных символов
19
+ /// - Выполняет строгую проверку типа входного параметра
20
+ /// - Подходит для создания коротких уникальных идентификаторов
21
+ /// - Может использоваться для быстрого сравнения строк
22
+ /// - Полезна для генерации ключей в картах или массивах
23
+ /// - Обеспечивает детерминированный результат для одинаковых
24
+ /// входных данных
25
+ /// - Алгоритм использует ограниченный набор символов
26
+ /// (a-z, A-Z, 0-9). Символы вне этого набора игнорируются
27
+ /// и не влияют на итоговый хеш. Для поддержки Unicode или
28
+ /// расширенных символов потребуется модификация функции.
29
+ /// - Множитель 31 выбран как простое число, что
30
+ /// способствует хорошему распределению хеш-значений.
31
+ /// Этот множитель используется в реализации hashCode()
32
+ /// языка Java для строк.
33
+ /// - Модуль 1000000 ограничивает результат 6 знаками,
34
+ /// что удобно для генерации коротких идентификаторов.
35
+ /// При необходимости большего диапазона значение модуля
36
+ /// можно увеличить.
37
+ /// ---
38
+ /// @name get-string-hash
39
+ /// @group utilities-getters
40
+ /// @since 2026.01.18
41
+ /// @access public
42
+ /// @author Murad Rustamov (therteenten)
43
+ /// @link https://sourcecraft.dev/users/therteenten/overview SourceCraft - therteenten
44
+ /// @link https://sourcecraft.dev/omnisass/library SourceCraft - OmniSass
45
+ /// @link https://sass-lang.com/documentation/modules/string См. также: Официальная документация Sass - Модуль String
46
+ /// @link https://sass-lang.com/documentation/values/numbers См. также: Официальная документация Sass - Тип данных "Числа"
47
+ /// @link https://sass-lang.com/documentation/values/strings См. также: Официальная документация Sass - Тип данных "Строки"
48
+ /// @link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/charCodeAt См. также: MDN Web Docs - Метод String.charCodeAt()
49
+ /// @link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/hashCode См. также: MDN Web Docs - Метод String.hashCode()
50
+ /// @link https://en.wikipedia.org/wiki/Hash_function См. также: Wikipedia - Хеш-функция
51
+ /// @link https://en.wikipedia.org/wiki/Java_hashCode() См. также: Wikipedia - Метод hashCode() в Java
52
+ /// @link https://en.wikipedia.org/wiki/DJB2 См. также: Wikipedia - Алгоритм хеширования DJB2
53
+ /// @link https://css-tricks.com/snippets/sass/string-hashing-function/ См. также: CSS-Tricks - Функция хеширования строк в Sass
54
+ /// @link https://css-tricks.com/sass-generate-unique-ids/ См. также: CSS-Tricks - Генерация уникальных ID в Sass
55
+ /// @link https://sass-guidelin.es/ru/#section-44 См. также: Sass Guidelines - Раздел про функции
56
+ /// @link https://github.com/sass/sass/issues/2864 См. также: GitHub - Обсуждение хеш-функций в Sass
57
+ /// @link https://www.strchr.com/hash_functions См. также: strchr.com - Сравнение хеш-функций
58
+ /// @example scss - Хеширование простых строк
59
+ /// @debug get-string-hash('hello'); // 549042
60
+ /// @debug get-string-hash('world'); // 705522
61
+ /// @debug get-string-hash('test'); // 601234
62
+ /// @debug get-string-hash(''); // 32
63
+ /// @example scss - Хеширование строк с разным регистром
64
+ /// @debug get-string-hash('Hello'); // 560588
65
+ /// @debug get-string-hash('HELLO'); // 360972
66
+ /// @debug get-string-hash('hElLo'); // 324414
67
+ /// @example scss - Хеширование алфавитно-цифровых строк
68
+ /// @debug get-string-hash('abc123'); // 619221
69
+ /// @debug get-string-hash('ABC123'); // 763259
70
+ /// @debug get-string-hash('user42'); // 927145
71
+ /// @param {String} $string - Строка для хеширования.
72
+ /// Функция ожидает строку, содержащую символы из набора
73
+ /// a-z, A-Z, 0-9. Для символов вне этого набора функция
74
+ /// string.index() вернет null, что приведет к нулевому
75
+ /// вкладу в хеш-значение. Пустая строка вернет 0.
76
+ /// @return {Number} - Числовой хеш-код в диапазоне от 0 до
77
+ /// 999999 (включительно). Результат детерминирован - одна
78
+ /// и та же строка всегда дает одинаковый хеш-код в
79
+ /// пределах одной версии функции.
80
+ /// @throws {Error} - Выбрасывает ошибку, если в параметр передано
81
+ /// значение, не соответствующее необходимому типу:
82
+ ///
83
+ /// - `$string` → `string`
84
+ @function get-string-hash($string) {
85
+
86
+ // Проверка типа входного параметра: ожидается строковое значение.
87
+ // Функция предназначена для работы исключительно со строками,
88
+ // так как алгоритм хеширования оперирует последовательностью символов.
89
+ @if not is-string($string) {
90
+
91
+ // Если $string не является строкой, возвращаем ошибку через
92
+ // стандартную функцию логирования. Это предотвращает
93
+ // некорректные операции с нестроковыми типами данных.
94
+ @return log-invalid-type(
95
+ 'get-string-hash',
96
+ $string,
97
+ '$string',
98
+ 'string'
99
+ );
100
+
101
+ }
102
+
103
+ // Параметр прошел валидацию - вычисляем хеш-код строки.
104
+ @else {
105
+
106
+ // Инициализация переменной для хранения хеш-значения.
107
+ // Начальное значение 0 обеспечивает корректную работу
108
+ // алгоритма для пустых строк и первого символа.
109
+ $-hash: 0;
110
+
111
+ // Определение длины входной строки.
112
+ // Длина используется для итерации по всем символам строки
113
+ // в цикле for.
114
+ $-length: string.length($string);
115
+
116
+ // Итерация по всем символам строки от первого до последнего.
117
+ // Каждый символ вносит свой вклад в итоговое хеш-значение
118
+ // согласно алгоритму DJB2.
119
+ @for $i from 1 through $-length {
120
+
121
+ // Извлечение текущего символа строки по индексу.
122
+ // Индексация в Sass начинается с 1 (не с 0).
123
+ $-char: string.slice($string, $i, $i);
124
+
125
+ // Вычисление нового значения хеша по формуле:
126
+ // hash = ((hash * 31) + char_index) % 1000000
127
+ // Где:
128
+ // - hash * 31: сдвиг предыдущего значения
129
+ // - char_index: позиция символа в алфавите (1-62)
130
+ // - % 1000000: ограничение результата 6 знаками
131
+ // string.index() возвращает позицию символа в строке
132
+ // алфавита или null для отсутствующих символов.
133
+ $-hash: (($-hash * 31) + string.index("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", $-char)) % 1000000;
134
+
135
+ }
136
+
137
+ // Возвращаем вычисленный хеш-код строки.
138
+ // Значение всегда будет в диапазоне 0-999999 включительно.
139
+ @return $-hash;
140
+
141
+ }
142
+
143
+ }
@@ -84,9 +84,10 @@
84
84
  /// измерения первого найденного числа.
85
85
  /// @throws {Warning} - Выводит предупреждение при обнаружении
86
86
  /// чисел с несовместимыми единицами измерения.
87
- /// @throws {Error} - Выбрасывает ошибку, если в параметры передано
88
- /// значение, не соответствующее типу `list`. Компиляция Sass
89
- /// будет остановлена с ошибкой.
87
+ /// @throws {Error} - Выбрасывает ошибку, если в параметр передано
88
+ /// значение, не соответствующее необходимому типу:
89
+ ///
90
+ /// - `$list` → `list`
90
91
  @function list-sum-numbers-safe($list) {
91
92
 
92
93
  // Проверка типа входного параметра: ожидается список или arglist.
@@ -66,9 +66,10 @@
66
66
  /// @throws {Error} - Может выбросить ошибку при попытке
67
67
  /// сложить числа с несовместимыми единицами измерения
68
68
  /// (например, px + em).
69
- /// @throws {Error} - Выбрасывает ошибку, если в параметры передано
70
- /// значение, не соответствующее типу `list`. Компиляция Sass
71
- /// будет остановлена с ошибкой.
69
+ /// @throws {Error} - Выбрасывает ошибку, если в параметр передано
70
+ /// значение, не соответствующее необходимому типу:
71
+ ///
72
+ /// - `$list` → `list`
72
73
  @function list-sum-numbers($list) {
73
74
 
74
75
  // Проверка типа входного параметра: ожидается список или arglist.
@@ -1,6 +1,6 @@
1
- @forward 'url-encode.configs';
1
+ @forward './url-encode.configs';
2
2
 
3
- @use 'url-encode.configs' as configs;
3
+ @use './url-encode.configs' as configs;
4
4
  @use '../string/string-replace' as *;
5
5
  @use '../../loggers/log-invalid-type' as *;
6
6
  @use '../../validators/type-of/is-map' as *;
@@ -67,10 +67,11 @@
67
67
  /// @return {String} - Закодированная строка, где все символы
68
68
  /// из карты замены преобразованы в их процентное
69
69
  /// представление.
70
- /// @throws {Error} - Выбрасывает ошибку, если в параметры передано
71
- /// значение, не соответствующее типу `string` (`$value`) или
72
- /// `map` (`$chars-map`). Компиляция Sass будет остановлена
73
- /// с ошибкой.
70
+ /// @throws {Error} - Выбрасывает ошибку, если в параметр передано
71
+ /// значение, не соответствующее необходимому типу:
72
+ ///
73
+ /// - `$value` → `string`
74
+ /// - `$chars-map` → `map`
74
75
  /// @require {function} string-replace - Вспомогательная
75
76
  /// функция замены подстрок в строке. Должна быть определена
76
77
  /// и доступна для корректной работы данной функции.
@@ -105,9 +105,11 @@
105
105
  /// @return {Number} - Число, округленное вверх до ближайшего
106
106
  /// значения, кратного `$nearest`. Сохраняет единицы
107
107
  /// измерения исходного числа `$value`.
108
- /// @throws {Error} - Выбрасывает ошибку, если в параметры передано
109
- /// значение, не соответствующее типу `number`. Компиляция Sass
110
- /// будет остановлена с ошибкой.
108
+ /// @throws {Error} - Выбрасывает ошибку, если в параметр передано
109
+ /// значение, не соответствующее необходимому типу:
110
+ ///
111
+ /// - `$value` → `number`
112
+ /// - `$nearest` → `number`
111
113
  @function number-ceil-to($value, $nearest) {
112
114
 
113
115
  // Проверка типа первого параметра: ожидается числовое значение.
@@ -86,9 +86,11 @@
86
86
  /// или `$value-max`. Если `$value` меньше или равно `$value-max`,
87
87
  /// возвращается `$value`. В противном случае возвращается
88
88
  /// `$value-max`.
89
- /// @throws {Error} - Выбрасывает ошибку, если в параметры передано
90
- /// значение, не соответствующее типу `number`. Компиляция Sass
91
- /// будет остановлена с ошибкой.
89
+ /// @throws {Error} - Выбрасывает ошибку, если в параметр передано
90
+ /// значение, не соответствующее необходимому типу:
91
+ ///
92
+ /// - `$value` → `number`
93
+ /// - `$value-max` → `number`
92
94
  @function number-clamp-max($value, $value-max) {
93
95
 
94
96
  // Проверка типа первого параметра: ожидается числовое значение.
@@ -94,9 +94,11 @@
94
94
  /// или `$value-min`. Если `$value` больше или равно `$value-min`,
95
95
  /// возвращается `$value`. В противном случае возвращается
96
96
  /// `$value-min`.
97
- /// @throws {Error} - Выбрасывает ошибку, если в параметры передано
98
- /// значение, не соответствующее типу `number`. Компиляция Sass
99
- /// будет остановлена с ошибкой.
97
+ /// @throws {Error} - Выбрасывает ошибку, если в параметр передано
98
+ /// значение, не соответствующее необходимому типу:
99
+ ///
100
+ /// - `$value` → `number`
101
+ /// - `$value-min` → `number`
100
102
  @function number-clamp-min($value, $value-min) {
101
103
 
102
104
  // Проверка типа первого параметра: ожидается числовое значение.
@@ -105,9 +105,12 @@
105
105
  /// диапазона.
106
106
  /// @throws {Warning} - когда `$value-min > $value-max` поведение
107
107
  /// функции может быть неинтуитивным.
108
- /// @throws {Error} - Выбрасывает ошибку, если в параметры передано
109
- /// значение, не соответствующее типу `number`. Компиляция Sass
110
- /// будет остановлена с ошибкой.
108
+ /// @throws {Error} - Выбрасывает ошибку, если в параметр передано
109
+ /// значение, не соответствующее необходимому типу:
110
+ ///
111
+ /// - `$value` → `number`
112
+ /// - `$value-min` → `number`
113
+ /// - `$value-max` → `number`
111
114
  @function number-clamp($value, $value-min, $value-max) {
112
115
 
113
116
  // Проверка типа первого параметра: ожидается числовое значение.
@@ -170,9 +170,12 @@
170
170
  /// @throws Не выбрасывает ошибок, безопасно обрабатывает все
171
171
  /// числовые значения. Формула математически корректна для
172
172
  /// любых числовых аргументов.
173
- /// @throws {Error} - Выбрасывает ошибку, если в параметры передано
174
- /// значение, не соответствующее типу `number`. Компиляция Sass
175
- /// будет остановлена с ошибкой.
173
+ /// @throws {Error} - Выбрасывает ошибку, если в параметр передано
174
+ /// значение, не соответствующее необходимому типу:
175
+ ///
176
+ /// - `$value` → `number`
177
+ /// - `$value-min` → `number`
178
+ /// - `$value-max` → `number`
176
179
  @function number-denormalize($value, $value-min, $value-max) {
177
180
 
178
181
  // Проверка типа первого параметра: ожидается нормализованное числовое значение.
@@ -218,9 +218,10 @@
218
218
  /// - Второй элемент: всегда 1 (если `$n > 1`)
219
219
  /// - Каждый последующий элемент: сумма двух предыдущих
220
220
  /// - Все элементы: целые положительные числа
221
- /// @throws {Error} - Выбрасывает ошибку, если в параметры передано
222
- /// значение, не соответствующее типу `number`. Компиляция Sass
223
- /// будет остановлена с ошибкой.
221
+ /// @throws {Error} - Выбрасывает ошибку, если в параметр передано
222
+ /// значение, не соответствующее необходимому типу:
223
+ ///
224
+ /// - `$n` → `number`
224
225
  @function number-fibonacci($n) {
225
226
 
226
227
  // Проверка типа входного параметра: ожидается числовое значение.
@@ -110,9 +110,11 @@
110
110
  /// измерения исходного числа `$value`.
111
111
  /// @throws {Error} - Может выбросить ошибку если происходит
112
112
  /// деление на ноль.
113
- /// @throws {Error} - Выбрасывает ошибку, если в параметры передано
114
- /// значение, не соответствующее типу `number`. Компиляция Sass
115
- /// будет остановлена с ошибкой.
113
+ /// @throws {Error} - Выбрасывает ошибку, если в параметр передано
114
+ /// значение, не соответствующее необходимому типу:
115
+ ///
116
+ /// - `$value` → `number`
117
+ /// - `$nearest` → `number`
116
118
  @function number-floor-to($value, $nearest) {
117
119
 
118
120
  // Проверка типа первого параметра: ожидается числовое значение.
@@ -96,10 +96,11 @@
96
96
  /// часть исходного числа игнорируется.
97
97
  /// @throws {Error} - Может выбросить ошибку если `$value`
98
98
  /// не является числом или если `$separator` не является строкой.
99
- /// @throws {Error} - Выбрасывает ошибку, если в параметры передано
100
- /// значение, не соответствующее типу `number (`$value`) или
101
- /// `string` (`$separator`). Компиляция Sass будет остановлена
102
- /// с ошибкой.
99
+ /// @throws {Error} - Выбрасывает ошибку, если в параметр передано
100
+ /// значение, не соответствующее необходимому типу:
101
+ ///
102
+ /// - `$value` → `number`
103
+ /// - `$separator` → `string`
103
104
  @function number-format-with-separator($value, $separator: ",") {
104
105
 
105
106
  // Проверка типа первого параметра: ожидается числовое значение.
@@ -157,9 +157,12 @@
157
157
  /// @throws {Error} - Может выбросить ошибку деления на ноль, если
158
158
  /// `$value-min == $value-max`. В этом случае знаменатель формулы становится
159
159
  /// нулем, что приводит к математической неопределенности.
160
- /// @throws {Error} - Выбрасывает ошибку, если в параметры передано
161
- /// значение, не соответствующее типу `number`. Компиляция Sass
162
- /// будет остановлена с ошибкой.
160
+ /// @throws {Error} - Выбрасывает ошибку, если в параметр передано
161
+ /// значение, не соответствующее необходимому типу:
162
+ ///
163
+ /// - `$value` → `number`
164
+ /// - `$value-min` → `number`
165
+ /// - `$value-max` → `number`
163
166
  @function number-normalize($value, $value-min, $value-max) {
164
167
 
165
168
  // Проверка типа первого параметра: ожидается числовое значение.
@@ -78,9 +78,11 @@
78
78
  /// Должно быть больше или равно `$value-min` для корректных результатов.
79
79
  /// @return {Number} - Случайное целое число в диапазоне [`$value-min`, `$value-max`].
80
80
  /// Всегда возвращает целое число без единиц измерения.
81
- /// @throws {Error} - Выбрасывает ошибку, если в параметры передано
82
- /// значение, не соответствующее типу `number`. Компиляция Sass
83
- /// будет остановлена с ошибкой.
81
+ /// @throws {Error} - Выбрасывает ошибку, если в параметр передано
82
+ /// значение, не соответствующее необходимому типу:
83
+ ///
84
+ /// - `$value-min` → `number`
85
+ /// - `$value-max` → `number`
84
86
  /// @throws {Warning} - При `$value-max < $value-min` результат
85
87
  /// может быть неожиданным.
86
88
  @function number-random-between-int($value-min, $value-max) {
@@ -117,9 +117,11 @@
117
117
  /// быть неожиданным (возможны отрицательные значения длины
118
118
  /// диапазона). Рекомендуется всегда передавать
119
119
  /// `$value-min ≤ $value-max`.
120
- /// @throws {Error} - Выбрасывает ошибку, если в параметры передано
121
- /// значение, не соответствующее типу `number`. Компиляция Sass
122
- /// будет остановлена с ошибкой.
120
+ /// @throws {Error} - Выбрасывает ошибку, если в параметр передано
121
+ /// значение, не соответствующее необходимому типу:
122
+ ///
123
+ /// - `$value-min` → `number`
124
+ /// - `$value-max` → `number`
123
125
  @function number-random-between($value-min, $value-max) {
124
126
 
125
127
  // Проверка типа первого параметра: ожидается числовое значение
@@ -244,9 +244,12 @@
244
244
  /// - Последний элемент: ближайшее к `$end` значение, кратное шагу
245
245
  /// - Все элементы: равномерно распределены с шагом `$step`
246
246
  /// - Направление: соответствует соотношению `$start` и `$end`
247
- /// @throws {Error} - Выбрасывает ошибку, если в параметры передано
248
- /// значение, не соответствующее типу `number`. Компиляция Sass
249
- /// будет остановлена с ошибкой.
247
+ /// @throws {Error} - Выбрасывает ошибку, если в параметр передано
248
+ /// значение, не соответствующее необходимому типу:
249
+ ///
250
+ /// - `$from` → `number`
251
+ /// - `$to` → `number`
252
+ /// - `$step` → `number`
250
253
  @function number-range($from, $to, $step: 1) {
251
254
 
252
255
  // Проверка типа первого параметра: ожидается числовое значение
@@ -128,9 +128,11 @@
128
128
  /// @throws {Error} - Может выбросить ошибку если `$value` или
129
129
  /// `$nearest` не являются числами, или если происходит
130
130
  /// деление на ноль.
131
- /// @throws {Error} - Выбрасывает ошибку, если в параметры передано
132
- /// значение, не соответствующее типу `number`. Компиляция Sass
133
- /// будет остановлена с ошибкой.
131
+ /// @throws {Error} - Выбрасывает ошибку, если в параметр передано
132
+ /// значение, не соответствующее необходимому типу:
133
+ ///
134
+ /// - `$value` → `number`
135
+ /// - `$nearest` → `number`
134
136
  @function number-round-to-nearest($value, $nearest) {
135
137
 
136
138
  // Проверка типа первого параметра: ожидается числовое значение.