@omnisass/library 0.2.1 → 0.4.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 (88) hide show
  1. package/CHANGELOG.md +120 -3
  2. package/README.md +94 -0
  3. package/index.scss +6 -0
  4. package/modules/utilities/converters/_convert-camel2kebab.scss +5 -4
  5. package/modules/utilities/converters/_convert-em2px.scss +5 -3
  6. package/modules/utilities/converters/_convert-hex2rgb.scss +4 -0
  7. package/modules/utilities/converters/_convert-hex2rgba.scss +5 -0
  8. package/modules/utilities/converters/_convert-kebab2camel.scss +5 -4
  9. package/modules/utilities/converters/_convert-kebab2snake.scss +4 -4
  10. package/modules/utilities/converters/_convert-px2em.scss +5 -4
  11. package/modules/utilities/converters/_convert-px2rem.scss +5 -4
  12. package/modules/utilities/converters/_convert-rem2px.scss +5 -3
  13. package/modules/utilities/converters/_convert-snake2kebab.scss +4 -4
  14. package/modules/utilities/getters/color/_get-color-brightness.scss +4 -0
  15. package/modules/utilities/getters/color/_get-color-darkest.scss +5 -1
  16. package/modules/utilities/getters/list/_get-list-item-end.scss +4 -2
  17. package/modules/utilities/getters/list/_get-list-item-start.scss +4 -2
  18. package/modules/utilities/getters/list/_get-list-item.scss +6 -4
  19. package/modules/utilities/getters/misc/_get-uid.scss +135 -0
  20. package/modules/utilities/getters/number/_get-number-from-percent.scss +6 -2
  21. package/modules/utilities/getters/number/_get-number-height-by-ratio.scss +5 -0
  22. package/modules/utilities/getters/number/_get-number-max.scss +4 -0
  23. package/modules/utilities/getters/number/_get-number-min.scss +4 -0
  24. package/modules/utilities/getters/number/_get-number-percentage-of.scss +6 -1
  25. package/modules/utilities/getters/number/_get-number-unit.scss +4 -2
  26. package/modules/utilities/getters/number/_get-number-width-by-ratio.scss +5 -0
  27. package/modules/utilities/getters/string/_get-string-hash.scss +143 -0
  28. package/modules/utilities/helpers/color/_color-blend-steps.scss +6 -0
  29. package/modules/utilities/helpers/color/_color-blend.scss +6 -0
  30. package/modules/utilities/helpers/color/_color-hue-shift.scss +5 -0
  31. package/modules/utilities/helpers/color/_color-scale.scss +5 -0
  32. package/modules/utilities/helpers/color/_color-shade.scss +5 -0
  33. package/modules/utilities/helpers/color/_color-tint.scss +5 -0
  34. package/modules/utilities/helpers/color/_color-triad.scss +4 -1
  35. package/modules/utilities/helpers/list/_list-dedupe.scss +4 -0
  36. package/modules/utilities/helpers/list/_list-insert-at.scss +5 -0
  37. package/modules/utilities/helpers/list/_list-merge.scss +54 -8
  38. package/modules/utilities/helpers/list/_list-remove-at.scss +5 -0
  39. package/modules/utilities/helpers/list/_list-sum-numbers-safe.scss +3 -0
  40. package/modules/utilities/helpers/list/_list-sum-numbers.scss +3 -0
  41. package/modules/utilities/helpers/misc/_url-encode.scss +7 -8
  42. package/modules/utilities/helpers/number/_number-ceil-to.scss +56 -4
  43. package/modules/utilities/helpers/number/_number-clamp-max.scss +65 -10
  44. package/modules/utilities/helpers/number/_number-clamp-min.scss +65 -10
  45. package/modules/utilities/helpers/number/_number-clamp.scss +88 -12
  46. package/modules/utilities/helpers/number/_number-denormalize.scss +87 -9
  47. package/modules/utilities/helpers/number/_number-fibonacci.scss +62 -9
  48. package/modules/utilities/helpers/number/_number-floor-to.scss +57 -3
  49. package/modules/utilities/helpers/number/_number-format-with-separator.scss +99 -16
  50. package/modules/utilities/helpers/number/_number-normalize.scss +88 -10
  51. package/modules/utilities/helpers/number/_number-random-between-int.scss +74 -13
  52. package/modules/utilities/helpers/number/_number-random-between.scss +76 -15
  53. package/modules/utilities/helpers/number/_number-range.scss +105 -12
  54. package/modules/utilities/helpers/number/_number-round-to-nearest.scss +58 -1
  55. package/modules/utilities/helpers/number/_number-round-to.scss +65 -2
  56. package/modules/utilities/helpers/number/_number-strip-unit.scss +43 -9
  57. package/modules/utilities/helpers/string/_string-capitalize.scss +46 -5
  58. package/modules/utilities/helpers/string/_string-count.scss +173 -0
  59. package/modules/utilities/helpers/string/_string-lorips.config.scss +81 -0
  60. package/modules/utilities/helpers/string/_string-lorips.scss +198 -0
  61. package/modules/utilities/helpers/string/_string-repeat.scss +147 -0
  62. package/modules/utilities/helpers/string/_string-replace.scss +82 -4
  63. package/modules/utilities/helpers/string/_string-reverse.scss +139 -0
  64. package/modules/utilities/helpers/string/_string-trim-end.scss +49 -6
  65. package/modules/utilities/helpers/string/_string-trim-start.scss +49 -6
  66. package/modules/utilities/helpers/string/_string-trim.scss +56 -11
  67. package/modules/utilities/loggers/_log-invalid-type.scss +1 -1
  68. package/modules/utilities/loggers/_log-invalid-value.scss +1 -1
  69. package/modules/utilities/validators/color/_is-color-light.scss +61 -4
  70. package/modules/utilities/validators/color/_is-color-list.scss +41 -9
  71. package/modules/utilities/validators/list/_is-list-contained.scss +42 -3
  72. package/modules/utilities/validators/misc/_is-time.scss +29 -0
  73. package/modules/utilities/validators/number/_is-int-even.scss +50 -8
  74. package/modules/utilities/validators/number/_is-int-odd.scss +51 -9
  75. package/modules/utilities/validators/number/_is-int.scss +71 -12
  76. package/modules/utilities/validators/number/_is-number-has-unit.scss +55 -13
  77. package/modules/utilities/validators/number/_is-number-negative.scss +53 -11
  78. package/modules/utilities/validators/number/_is-number-positive.scss +52 -10
  79. package/modules/utilities/validators/number/_is-number-unitless.scss +53 -12
  80. package/modules/utilities/validators/number/_is-number-zero.scss +54 -10
  81. package/modules/utilities/validators/string/_is-string-contained.scss +59 -4
  82. package/modules/utilities/validators/string/_is-string-empty.scss +48 -8
  83. package/modules/utilities/validators/string/_is-string-ending-with.scss +64 -5
  84. package/modules/utilities/validators/string/_is-string-starting-with.scss +60 -8
  85. package/package.json +1 -1
  86. package/package.scss +9 -8
  87. package/test2.sh +158 -0
  88. package/modules/utilities/setters/_index.scss +0 -3
package/CHANGELOG.md CHANGED
@@ -1,5 +1,122 @@
1
1
  # История изменений OmniSass
2
- Обратите внимание, что данный текст представляет собой краткое изложение истории разработки проекта по версиям. Для более детального ознакомления с изменениями рекомендуется обратиться к соответствующему [разделу](https://sourcecraft.dev/therteenten/omnisass/commits/?rev=master) в SourceCraft.
2
+ Обратите внимание, что данный текст представляет собой краткое изложение истории разработки проекта по версиям. Для более детального ознакомления с изменениями рекомендуется обратиться к соответствующему [разделу](https://sourcecraft.dev/omnisass/library/commits/?rev=master) в SourceCraft.
3
3
 
4
- ## 0.0.1 - Alpha Public Preview
5
- ...
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
+
23
+ ## v0.3.0 - Public Alpha Release
24
+ {% note warning "Примечание" %}
25
+
26
+ В списке изменений к версии 0.3.0 будут указаны все изменения, внесённые в предыдущих версиях, поскольку ранее они не фиксировались в документации.
27
+
28
+ {% endnote %}
29
+
30
+ ### Добавленные новые Sass-функции
31
+ #### Конверторы значений
32
+ - **convert-camel2kebab** - Конвертирует строку из `camelCase` (верблюжья нотация) в `kebab-case` (кебаб-нотация или дефисная нотация).
33
+ - **convert-em2px** - Конвертирует значения из относительных единиц (`em`) в пиксели (`px`).
34
+ - **convert-hex2rgba** - Преобразует цвет в строку формата RGBA с поддержкой прозрачности.
35
+ - **convert-hex2rgb** - Преобразует цвет из HEX формата в строку формата RGB.
36
+ - **convert-kebab2camel** - Конвертирует строку из `kebab-case` (кебаб-нотация) в `camelCase` (верблюжья нотация).
37
+ - **convert-kebab2snake** - Преобразует строку из `kebab-case` (кебаб-нотация) в `snake_case` (змеиная нотация).
38
+ - **convert-px2em** - Конвертирует значения из пикселей (`px`) в относительные единицы (`em`).
39
+ - **convert-px2rem** - Конвертирует значения из пикселей (`px`) в относительные единицы (`rem`).
40
+ - **convert-rem2px** - Конвертирует значения из относительных единиц (`rem`) в пиксели (`px`).
41
+ - **convert-snake2kebab** - Преобразует строку из `snake_case` (змеиная нотация) в `kebab-case` (кебаб-нотация).
42
+
43
+ #### Функции для получения значений
44
+ - **get-color-brightness** - Рассчитывает яркость (светлоту) цвета.
45
+ - **get-color-darkest** - Находит самый темный цвет в списке по значению lightness в HSL-пространстве.
46
+ - **get-list-item-end** - Возвращает последний элемент списка.
47
+ - **get-list-item-start** - Возвращает первый элемент списка.
48
+ - **get-list-item** - Возвращает первый или последний элемент списка.
49
+ - **get-number-from-percent** - Вычисляет абсолютное значение по проценту от целого.
50
+ - **get-number-height-by-ratio** - Вычисляет высоту на основе ширины и соотношения сторон.
51
+ - **get-number-max** - Находит максимальное числовое значение в списке.
52
+ - **get-number-min** - Находит минимальное числовое значение в списке.
53
+ - **get-number-percentage-of** - Вычисляет процентное отношение части к целому.
54
+ - **get-number-unit** - Возвращает единицы измерения числа в виде строки.
55
+ - **get-number-width-by-ratio** - Вычисляет ширину на основе высоты и соотношения сторон.
56
+
57
+ #### Вспомогательные функции
58
+ - **color-blend** - Линейная интерполяция (смешивание) между двумя цветами.
59
+ - **color-blend-steps** - Создает последовательность равномерно распределенных цветов между двумя точками.
60
+ - **color-hue-shift** - Поворачивает цветовой тон (hue) цвета на заданное количество градусов.
61
+ - **color-scale** - Генерирует монохромную шкалу оттенков путем затемнения базового цвета.
62
+ - **color-shade** - Создает затемненную версию цвета, добавляя к нему черный цвет.
63
+ - **color-tint** - Осветляет исходный цвет, смешивая его с белым.
64
+ - **color-triad** - Генерирует триадную цветовую схему из трех равноудаленных цветов.
65
+ - **list-dedupe** - Удаляет дублирующиеся значения из списка.
66
+ - **list-insert-at** - Вставляет значение в список по указанному индексу.
67
+ - **list-merge** - Объединяет несколько списков в один плоский список.
68
+ - **list-remove-at** - Удаляет элемент из списка по указанному индексу.
69
+ - **list-sum-numbers-safe** - Безопасно суммирует числовые значения в списке с проверкой единиц измерения.
70
+ - **list-sum-numbers** - Суммирует все числовые значения в списке.
71
+ - **url-encode** - Кодирует строку для безопасного использования в URL.
72
+ - **number-ceil-to** - Округляет число вверх до ближайшего кратного значения.
73
+ - **number-clamp-max** - Ограничивает число сверху, обеспечивая максимальное значение.
74
+ - **number-clamp-min** - Ограничивает число снизу, обеспечивая минимальное значение.
75
+ - **number-clamp** - Ограничивает число заданным диапазоном значений.
76
+ - **number-denormalize** - Денормализует число из единичного интервала [0, 1] в исходный диапазон.
77
+ - **number-fibonacci** - Генерирует последовательность чисел Фибоначчи.
78
+ - **number-floor-to** - Округляет число вниз до ближайшего кратного значения.
79
+ - **number-format-with-separator** - Форматирует число, добавляя разделители тысяч для улучшения читаемости больших чисел.
80
+ - **number-normalize** - Нормализует число к единичному интервалу [0, 1].
81
+ - **number-random-between-int** - Генерирует случайное целое число в заданном диапазоне.
82
+ - **number-random-between** - Генерирует случайное число в заданном диапазоне.
83
+ - **number-range** - Генерирует последовательность чисел в заданном диапазоне с определенным шагом.
84
+ - **number-round-to-nearest** - Округляет число до ближайшего кратного значения с использованием стандартного математического округления (половинки в сторону от нуля).
85
+ - **number-round-to** - Округляет число до указанного количества знаков после запятой.
86
+ - **number-strip-unit** - Удаляет единицы измерения из числа, возвращая безразмерное значение.
87
+ - **string-capitalize** - Преобразует первый символ строки в верхний регистр, остальные оставляет без изменений.
88
+ - **string-replace** - Заменяет все вхождения подстроки в строке на другую подстроку.
89
+ - **string-trim-end** - Удаляет пробелы с конца строки (справа).
90
+ - **string-trim-start** - Удаляет пробелы с начала строки (слева).
91
+ - **string-trim** - Удаляет пробелы с начала и конца строки.
92
+
93
+ #### Функции для логгирования
94
+ - **log-invalid-type** - Логирует ошибку или предупреждение о несоответствии типа параметра ожидаемым типам.
95
+ - **log-invalid-value** - Логирует ошибку или предупреждение о недопустимом значении параметра, когда передано значение, не входящее в список разрешенных.
96
+
97
+ #### Функции для валидации значений
98
+ - **is-color-light** - Определяет, является ли цвет светлым (по пороговому значению светлоты).
99
+ - **is-color-list** - Проверяет, что все элементы в списке являются цветами.
100
+ - **is-list-contained** - Проверяет, содержится ли значение в указанном списке.
101
+ - **is-time** - Проверяет, является ли значение корректным временным значением.
102
+ - **is-int-even** - Проверяет, является ли целое число четным.
103
+ - **is-int-odd** - Проверяет, является ли целое число нечетным.
104
+ - **is-int** - Проверяет, является ли число целым (integer).
105
+ - **is-number-has-unit** - Проверяет, имеет ли число единицы измерения.
106
+ - **is-number-negative** - Проверяет, является ли значение отрицательным числом.
107
+ - **is-number-positive** - Проверяет, является ли значение положительным числом.
108
+ - **is-number-unitless** - Проверяет, является ли число безразмерным.
109
+ - **is-number-zero** - Проверяет, является ли значение нулем (числовым нулем).
110
+ - **is-string-contained** - Проверяет, содержится ли подстрока в указанной строке.
111
+ - **is-string-empty** - Проверяет, является ли строка пустой.
112
+ - **is-string-ending-with** - Проверяет, заканчивается ли строка указанной подстрокой.
113
+ - **is-string-starting-with** - Проверяет, начинается ли строка с указанной подстроки.
114
+ - **is-boolean** - Проверяет, является ли переданное значение логическим типом (boolean).
115
+ - **is-color** - Проверяет, является ли значение допустимым цветом.
116
+ - **is-list** - Проверяет, является ли значение списком (list) или списком аргументов (arglist).
117
+ - **is-map** - Проверяет, является ли значение ассоциативным массивом (map).
118
+ - **is-number** - Проверяет, является ли значение числом
119
+ - **is-string** - Проверяет, является ли значение строкой (string)
120
+ - **is-type** - Возвращает тип данных переданного значения.
121
+
122
+ > Чтобы получить подробные сведения об API новых функций, посетите веб-сайт по адресу [https://omnisass.sourcecraft.site/sassdocs/](https://omnisass.sourcecraft.site/sassdocs/).
package/README.md CHANGED
@@ -1,2 +1,96 @@
1
+ <p align="left">
2
+ <img src="https://sourcecraft.dev/file?owner=omnisass&repo=library&rev=anvil&path=.omnisass%2Fimages%2Fomnisass_logo_rounded.png" width="150" height="150" alt="Логотип проекта">
3
+ </p>
4
+
1
5
  # OmniSass
6
+ > ВАЖНО: Библиотека сейчас проходит стадию тестирования. Вполне возможно, что до финальной версии 1.0.0 будут внесены изменения в API или удалены некоторые функции. Рекомендуется использовать её исключительно для ознакомительных целей.
7
+
2
8
  Библиотека функций и миксинов, написанная на языке CSS-препроцессора Sass. Она предназначена для того, чтобы упростить, ускорить и улучшить процесс создания стилей для веб-сайтов.
9
+
10
+ ![NPM Version](https://img.shields.io/npm/v/%40omnisass%2Flibrary?logo=npm&label=%40omnisass%2Flibrary&labelColor=%23CB3837&color=white) ![NPM Downloads](https://img.shields.io/npm/dw/%40omnisass%2Flibrary?logo=npm&logoColor=white&labelColor=%23CB3837&color=white) ![NPM Last Update](https://img.shields.io/npm/last-update/%40omnisass%2Flibrary?logo=npm&logoColor=white&labelColor=%23CB3837&color=white) ![NPM Collaborators](https://img.shields.io/npm/collaborators/%40omnisass%2Flibrary?logo=npm&logoColor=white&labelColor=%23CB3837&color=white) ![NPM License](https://img.shields.io/npm/l/%40omnisass%2Flibrary?logo=ReadMe&logoColor=white&labelColor=%23018EF5&color=white) ![NPM (prod) Dependency Version](https://img.shields.io/npm/dependency-version/%40omnisass%2Flibrary/sass?logo=Sass&logoColor=white&labelColor=%23CC6699&color=white)
11
+
12
+ OmniSass представляет собой обширный, стандартизированный и тщательно задокументированный пакет, включающий решения, годами собранные сообществом.
13
+
14
+ Большинство функций и миксинов — результат работы множества людей, которые в разное время занимались разработкой на языке Sass. Разработчик OmniSass ([@therteenten](https://t.me/therteenten)) сосредоточился на качественной стандартизации, документировании и создании единого инструмента на базе разрозненных элементов.
15
+
16
+ ## Установка библиотеки
17
+ 1. Для работы OmniSass необходимо, чтобы была установлена библиотека [`sass`](https://www.npmjs.com/package/sass):
18
+
19
+ ```shell
20
+ npm install sass
21
+ ```
22
+
23
+ 2. После завершения установки вы можете добавить библиотеку [`@omnisass/library`](https://www.npmjs.com/package/@omnisass/library):
24
+
25
+ ```shell
26
+ npm install @omnisass/library
27
+ ```
28
+
29
+ 3. Готово! OmniSass готов к использованию.
30
+
31
+ ## Использование
32
+ Вы можете внедрить модуль в ваш файл стилей после установки необходимых библиотек:
33
+
34
+ ```scss
35
+ @use '@omnisass/library' as omnisass;
36
+ ```
37
+
38
+ 1. Мы испортируем модуль `@omnisass/library`
39
+ 2. Вся "начинка" модуля доступна в пространстве `omnisass`
40
+
41
+ Затем мы применяем одну из функций из библиотеки. Например, `is-boolean`:
42
+
43
+ ```scss
44
+ @debug omnisass.is-boolean(true);
45
+ ```
46
+
47
+ В консоли мы получаем:
48
+
49
+ ```shell
50
+ src/styles/main.scss:3 Debug: true
51
+ ```
52
+
53
+ Готово. Мы успешно установили, импортировали и использовали библиотеку в проект.
54
+
55
+ > При компиляции Sass без ключа `--load-path=node_modules` для импорта модуля нужно указать полный путь к папке библиотеки. В нашем случае, если файл styles.scss находится в директории ./src/styles/, следует использовать следующую конструкцию: `@use '../../node_modules/@omnisass/library' as omnisass;`.
56
+
57
+ ## Полезные ссылки
58
+ - [Документация API (SassDoc)](https://omnisass.sourcecraft.site/sassdocs/)
59
+ - [Организация на SourceCraft](https://sourcecraft.dev/omnisass/overview)
60
+ - [Канал в Telegram](https://t.me/omnisass)
61
+ - [Список изменений](https://sourcecraft.dev/omnisass/library/browse/CHANGELOG.md?rev=develop)
62
+
63
+ ## Благодарности
64
+ - [github@takamoso](https://github.com/takamoso) - за функции `is-boolean`, `is-list` и др.
65
+ - [github@KittyGiraudel](https://github.com/KittyGiraudel) - за функции `color-shade`, `color-tint` и др.
66
+ - [github@sindresorhus](https://github.com/sindresorhus) - за функции `get-list-item-end`, `get-list-item-start` и др.
67
+ - [github@selfishprimate](https://github.com/selfishprimate) - за функцию [`is-time`](https://github.com/selfishprimate/gerillass/blob/master/scss/utilities/_is-time.scss) и др.
68
+ - [github@pentzzsolt](https://github.com/pentzzsolt) - за функцию `is-int` и др.
69
+
70
+ > Если я забыл вас упомянуть в этом списке, то прошу написать мне на [Telegram](https://t.me/therteenten).
71
+
72
+ ## Лицензия
73
+ Этот проект лицензирован под лицензией MIT - подробности см. в файле [LICENSE](LICENSE).
74
+ ```
75
+ MIT License
76
+
77
+ Copyright (c) 2025, Murad Rustamov (therteenten) <therteenten@ya.ru>
78
+
79
+ Permission is hereby granted, free of charge, to any person obtaining a copy
80
+ of this software and associated documentation files (the "Software"), to deal
81
+ in the Software without restriction, including without limitation the rights
82
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
83
+ copies of the Software, and to permit persons to whom the Software is
84
+ furnished to do so, subject to the following conditions:
85
+
86
+ The above copyright notice and this permission notice shall be included in all
87
+ copies or substantial portions of the Software.
88
+
89
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
90
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
91
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
92
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
93
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
94
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
95
+ SOFTWARE.
96
+ ```
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';
@@ -101,14 +101,15 @@
101
101
  /// заглавными буквами (кроме первой) добавлены дефисы.
102
102
  /// Результат готов к использованию как CSS-класс или
103
103
  /// часть селектора.
104
- /// @throws {Error} - Может выбросить ошибку при передаче
105
- /// нестроковых значений. Аргумент должен быть строкой
106
- /// для корректной работы строковых функций Sass.
104
+ /// @throws {Error} - Выбрасывает ошибку, если в параметр передано
105
+ /// значение, не соответствующее необходимому типу:
106
+ ///
107
+ /// - `$value` → `string`
107
108
  @function convert-camel2kebab($value) {
108
109
 
109
110
  // Переменная для накопления результата преобразования.
110
111
  // Инициализируется пустой строкой.
111
- $-result: '';
112
+ $-result: null;
112
113
 
113
114
  // Проверка типа входного параметра: ожидается строковое значение.
114
115
  // Функция is-string() проверяет, является ли $value строкой
@@ -187,9 +187,11 @@
187
187
  /// @return {Number} - Значение в единицах `px`, рассчитанное
188
188
  /// по формуле: `($em * $base) * 1px`. Возвращает дробное
189
189
  /// или целое число с единицами измерения `px`.
190
- /// @throws {Error} - Может выбросить ошибку при передаче
191
- /// нечисловых значений. Для корректной работы оба
192
- /// аргумента должны быть числами.
190
+ /// @throws {Error} - Выбрасывает ошибку, если в параметр передано
191
+ /// значение, не соответствующее необходимому типу:
192
+ ///
193
+ /// - `$em` → `number`
194
+ /// - `$base` → `number`
193
195
  @function convert-em2px($em, $base: 16px) {
194
196
 
195
197
  // Проверка типа первого параметра: ожидается числовое
@@ -52,6 +52,10 @@
52
52
  /// где `r`, `g`, `b` - числовые значения от 0 до 255.
53
53
  /// Если передан некорректный цвет, может вызвать ошибку
54
54
  /// Sass.
55
+ /// @throws {Error} - Выбрасывает ошибку, если в параметр передано
56
+ /// значение, не соответствующее необходимому типу:
57
+ ///
58
+ /// - `$color` → `color`
55
59
  @function convert-hex2rgb($color) {
56
60
 
57
61
  // Проверка типа входного параметра: ожидается
@@ -67,6 +67,11 @@
67
67
  /// @return {String} - Строка в формате `"rgba(r, g, b, a)"`,
68
68
  /// где `r`, `g`, `b` - числовые значения от 0 до 255,
69
69
  /// `a` - значение прозрачности.
70
+ /// @throws {Error} - Выбрасывает ошибку, если в параметр передано
71
+ /// значение, не соответствующее необходимому типу:
72
+ ///
73
+ /// - `$color` → `color`
74
+ /// - `$alpha` → `number`
70
75
  @function convert-hex2rgba($color, $alpha: 1) {
71
76
 
72
77
  // Проверка типа первого параметра: ожидается
@@ -146,13 +146,14 @@
146
146
  /// дефисы удалены, а символы, которые следовали за
147
147
  /// дефисами, преобразованы в верхний регистр. Первый
148
148
  /// символ остается в исходном регистре.
149
- /// @throws {Error} - Может выбросить ошибку при передаче
150
- /// нестроковых значений. Аргумент должен быть строкой
151
- /// для корректной работы строковых функций Sass.
149
+ /// @throws {Error} - Выбрасывает ошибку, если в параметр передано
150
+ /// значение, не соответствующее необходимому типу:
151
+ ///
152
+ /// - `$value` → `string`
152
153
  @function convert-kebab2camel($value) {
153
154
 
154
155
  // Переменная для накопления результата преобразования.
155
- $-result: "";
156
+ $-result: null;
156
157
 
157
158
  // Проверка типа входного параметра: ожидается строковое значение.
158
159
  // Функция is-string() проверяет, является ли $value строкой
@@ -78,10 +78,10 @@
78
78
  /// дефисы заменены на символы нижнего подчеркивания.
79
79
  /// Результат подходит для использования в backend-языках
80
80
  /// программирования, конфигурационных файлах и API-запросах.
81
- /// @throws {Error} - Может выбросить ошибку при передаче
82
- /// нестроковых значений или если функция `string-replace`
83
- /// не определена. Требуется наличие функции `string-replace`
84
- /// в модуле `helpers` для корректной работы.
81
+ /// @throws {Error} - Выбрасывает ошибку, если в параметр передано
82
+ /// значение, не соответствующее необходимому типу:
83
+ ///
84
+ /// - `$value` `string`
85
85
  /// @requires {function} string-replace - Вспомогательная
86
86
  /// функция замены подстрок в строке.
87
87
  /// Должна быть определена и доступна для корректной работы
@@ -170,10 +170,11 @@
170
170
  /// @return {Number} - Значение в единицах `em`, рассчитанное
171
171
  /// по формуле: `($px / $base) * 1em`. Возвращает дробное
172
172
  /// или целое число с единицами измерения `em`.
173
- /// @throws {Error} - Может выбросить ошибку деления на ноль,
174
- /// если `$base` равен 0 после удаления единиц измерения.
175
- /// Также может выбросить ошибку при передаче нечисловых
176
- /// значений.
173
+ /// @throws {Error} - Выбрасывает ошибку, если в параметр передано
174
+ /// значение, не соответствующее необходимому типу:
175
+ ///
176
+ /// - `$px` → `number`
177
+ /// - `$base` → `number`
177
178
  @function convert-px2em($px, $base: 16px) {
178
179
 
179
180
  // Проверка типа первого параметра: ожидается числовое
@@ -114,10 +114,11 @@
114
114
  /// @return {Number} - Значение в единицах `rem`, рассчитанное
115
115
  /// по формуле: `($px / $base) * 1rem`. Возвращает дробное
116
116
  /// или целое число с единицами измерения `rem`.
117
- /// @throws {Error} - Может выбросить ошибку деления на ноль,
118
- /// если `$base` равен 0 после удаления единиц измерения.
119
- /// Также может выбросить ошибку при передаче нечисловых
120
- /// значений.
117
+ /// @throws {Error} - Выбрасывает ошибку, если в параметр передано
118
+ /// значение, не соответствующее необходимому типу:
119
+ ///
120
+ /// - `$px` → `number`
121
+ /// - `$base` → `number`
121
122
  @function convert-px2rem($px, $base: 16px) {
122
123
 
123
124
  // Проверка типа первого параметра: ожидается числовое
@@ -142,9 +142,11 @@
142
142
  /// @return {Number} - Значение в единицах `px`, рассчитанное
143
143
  /// по формуле: `($rem * $base) * 1px`. Возвращает дробное
144
144
  /// или целое число с единицами измерения `px`.
145
- /// @throws {Error} - Может выбросить ошибку при передаче
146
- /// нечисловых значений. Для корректной работы оба аргумента
147
- /// должны быть числами.
145
+ /// @throws {Error} - Выбрасывает ошибку, если в параметр передано
146
+ /// значение, не соответствующее необходимому типу:
147
+ ///
148
+ /// - `$rem` → `number`
149
+ /// - `$base` → `number`
148
150
  @function convert-rem2px($rem, $base: 16px) {
149
151
 
150
152
  // Проверка типа первого параметра: ожидается числовое
@@ -124,10 +124,10 @@
124
124
  /// символы нижнего подчеркивания заменены на дефисы.
125
125
  /// Результат готов к использованию как CSS-класс, часть
126
126
  /// селектора или имя CSS-переменной.
127
- /// @throws {Error} - Может выбросить ошибку при передаче
128
- /// нестроковых значений или если функция `string-replace`
129
- /// не определена. Требуется наличие функции `string-replace`
130
- /// в доступном scope.
127
+ /// @throws {Error} - Выбрасывает ошибку, если в параметр передано
128
+ /// значение, не соответствующее необходимому типу:
129
+ ///
130
+ /// - `$value` → `string`
131
131
  /// @require {function} string-replace - Вспомогательная
132
132
  /// функция замены подстрок в строке из модуля `helpers`.
133
133
  /// Должна быть определена и доступна для корректной работы
@@ -89,6 +89,10 @@
89
89
  /// Черный цвет вернет значение около 0%, белый - 100%,
90
90
  /// серые тона - промежуточные значения в зависимости от
91
91
  /// их светлоты.
92
+ /// @throws {Error} - Выбрасывает ошибку, если в параметр передано
93
+ /// значение, не соответствующее необходимому типу:
94
+ ///
95
+ /// - `$color` → `color`
92
96
  @function get-color-brightness($color) {
93
97
 
94
98
  // Проверка типа входного параметра: ожидается
@@ -104,13 +104,17 @@
104
104
  /// @throws {Error} - Может выбросить ошибку, если в списке
105
105
  /// встречаются элементы, не являющиеся цветами, при
106
106
  /// попытке вызова `color.channel()`.
107
+ /// @throws {Error} - Выбрасывает ошибку, если в параметр передано
108
+ /// значение, не соответствующее необходимому типу:
109
+ ///
110
+ /// - `$color-list` → `list`
107
111
  @function get-color-darkest($color-list) {
108
112
 
109
113
  // Инициализация переменных для хранения результата поиска.
110
114
  // - $-result: будет содержать самый темный цвет из списка
111
115
  // - $-min-lightness: будет содержать минимальное значение
112
116
  // яркости (наименьшая яркость = самый темный)
113
- $-result: '';
117
+ $-result: null;
114
118
  $-min-lightness: null;
115
119
 
116
120
  // Проверка типа входного параметра: ожидается список
@@ -82,8 +82,10 @@
82
82
  /// извлечь последний элемент
83
83
  /// @return {*} - Последний элемент списка. Возвращает
84
84
  /// `null`, если список пустой.
85
- /// @throws Не выбрасывает ошибок, возвращает
86
- /// `null` для пустых списков
85
+ /// @throws {Error} - Выбрасывает ошибку, если в параметр передано
86
+ /// значение, не соответствующее необходимому типу:
87
+ ///
88
+ /// - `$list` → `list`
87
89
  @function get-list-item-end($list) {
88
90
 
89
91
  @if not is-list($list) {
@@ -77,8 +77,10 @@
77
77
  /// первый элемент.
78
78
  /// @return {*} - Первый элемент списка. Возвращает `null`,
79
79
  /// если список пустой.
80
- /// @throws Не выбрасывает ошибки, но возвращает
81
- /// `null` для пустых списков.
80
+ /// @throws {Error} - Выбрасывает ошибку, если в параметр передано
81
+ /// значение, не соответствующее необходимому типу:
82
+ ///
83
+ /// - `$list` → `list`
82
84
  @function get-list-item-start($list) {
83
85
 
84
86
  @if not is-list($list) {
@@ -90,15 +90,17 @@
90
90
  /// `null` для пустых списков, некорректных значений
91
91
  /// `$direction` или если список не содержит элементов
92
92
  /// в указанной позиции.
93
- /// @throws Не выбрасывает ошибок, безопасно обрабатывает
94
- /// некорректные входные данные. Для пустых списков и
95
- /// некорректных значений `$direction` возвращает `null`.
93
+ /// @throws {Error} - Выбрасывает ошибку, если в параметр передано
94
+ /// значение, не соответствующее необходимому типу:
95
+ ///
96
+ /// - `$list` → `list`
97
+ /// - `$direction` → `string`
96
98
  @function get-list-item($list, $direction: 'start') {
97
99
 
98
100
  // Переменная для хранения результата функции
99
101
  // Инициализируем пустой строкой, но тип может
100
102
  // измениться в зависимости от функций get-list-item-start/end
101
- $-result: '';
103
+ $-result: null;
102
104
 
103
105
  // ВАЛИДАЦИЯ ПАРАМЕТРА $direction
104
106