18.12.2016
>> СКАЧАТЬ <<
v1.1.1 от 9.06.2018
Посмотреть самую последнюю версию в репозитории.
Также можно подключать файл, содержащий в себе всю библиотеку: http://libs.nekochan.ru/KozUtils-AIO.js.
Ну и можно установить через Bower: bower install kozutils
.
Во время написания кода на JavaScript часто приходится сталкиваться с необходимостью написания рутинного кода. Например, из-за слаботипизированности языка и отсутствия возможности явно указывать параметры по умолчанию приходится дополнительно проверять входные параметры в функциях. Собственно, от этого и начала строиться эта небольшая библиотечка. Может кому ещё понадобится...
Несмотря на то, что это уже вроде как релиз, на данный момент в библиотеке всего 8 полноценных функций да набор из 4 исключений. Всё ещё будет дополняться и расширяться в будущих версиях.
Ну и надо понимать, что здесь я буду обновлять версию не так часто, как будут пушиться коммиты в репозиторий. Но нормальные, номерные, коммиты с тэгами постараюсь заливать сюда оперативно.
Итак, какие функции есть уже сейчас? Сперва уточним, что библиотека состоит из 4 отдельных файлов:
- KozExceptions.js — содержит набор готовых классов-исключений, которые выбрасываются остальными скриптами (но данный файл можно и не подключать; тогда будут выбрасываться текстовые исключения).
- KozStrUtils.js — расширяет возможности базового строкового класса.
- KozUtils.js — содержит общие вспомогательные функции.
- KozYouTubeUtils.js — состоит из парочки функций, помогающих в работе с YouTube API.
Также есть пятый, all-in-one, файл: KozUtils-AIO.js, который представляет собой сконкатенированную и минифицированную версию всех файлов сразу. Он и хранится на Libs.NekoChan.Ru.
KozUtils
- initOptions(options, defaultOptions) — используйте эту функцию, когда есть функция, которая принимает определённый набор параметров в виде объекта. Данный объект следует передать, как options, а в качестве второго параметра нужно передать объект по умолчанию со всеми возможными параметрами. Функция объединит объекты, давая преимущество значением из пользовательского объекта, и вернёт итоговый объект. Если параметр options не опредён или равен null, просто возвращает объект по умолчанию.
- checkMissingParameters(parameters, funcName, paramNames) — функция предназначена для того, чтобы убедиться, что в функцию передали все необходимые параметры. В качестве первого параметра принимает массив параметров, остальные два (название функции и массив названий параметров) используются для вывода более информационного сообщения об ошибке, если обнаружится отсутствующий параметр. В качестве funcName можно передавать не только строку, но и ссылку на функцию, а parameters и paramNames могут быть не только массивами, но и единственными значениями (для случаев, если функция принимает только один параметр). Если какой-то параметр пропущен, возбуждается либо KozExceptions.missingArgument (если нужная библиотека подключена), либо простое текстовое исключение.
- checkParameters(parameters, types, funcName, paramNames) — расширяет предыдущую функцию. Проверяет не только отсутствие параметров, но и правильность их типов, для чего появляется параметр types, принимающий массив строк с названиями типов ("string", "number", "function" и т. д.), но может быть и одинокой строкой, если параметр один. Соответственно, может возбуждать не только KozExceptions.missingArgument, но и KozExceptions.invalidArgument.
- getActualSize(element) — принимает любой HTMLElement и возвращает реальные размеры элемента после вычисления всех стилей в виде объекта из полей width и height.
KozExceptions
- invalidArgument(argumentName, message) — следует бросать, когда в функцию пришёл аргумент не того типа либо значение недопустимо.
- missingArgument(argumentName, message) — следует бросать, когда в функцию не был передан обязательный параметр.
- notImplementedYet() — простая заглушка для методов и функций, которые только планируются к реализации.
- abstractClass() — следует бросать из функций-конструкторов абстрактных классов.
- unresolvedDependency(library) — следует бросать, когда при проверке наличия объекта нужной библиотеки в области видимости скрипта было выявлено его отсутствие.
KozStrUtils
- matchAll(regExp) — ищет в строке все вхождения заданного регулярного выражения (которое может быть строкой, которую метод сам обернёт с RegExp) и возвращает массив объектов, состоящих из двух полей: index — позиция первого символа из найденной строки, string — всё совпавшее выражение.
- shortenTo(length) — используйте эту функцию, чтобы получить строку не больше указанной длины (+1 символ на троеточие) и сокращённой до ближайшего слова. Например, для строки "очень длинная строка" с параметром 17 (середина слова "строка") вернёт "очень длинная…".
KozYouTubeUtils
- parseId(text) — ищет в строке ссылки на YouTube-видео и возвращает идентификатор первого найденного видео. Если не находит ничего, возвращает false. Например, "Воу, какой крутой урок по C#! https://youtu.be/uI3rZYk2sYk?list=PLWCoo5SF-qAMDIAqikhB2hvIytrMiR5TC" вернёт "uI3rZYk2sYk".
- durationToString(str) — конвертирует время длительности видео из формата YouTube (на самом деле там какой-то стандарт, но я не помню названия) в более читаемое и привычное представление. Например "PT3M54S" станет "03:54".
Вот в общем-то и всё. Все функции нужны были лично мне и использованы в реальных проектах, так что остальное будет добавлено потом, по надобности. Хотя можете оставлять свои предложения в комментариях! Ну и найденные ошибки тоже пишите.
Обновлено 20.12.16:
- исправлено построение минифицированных версий скриптов, чтоб KozStrUtils.js и KozUtils-AIO.js не отваливались;
- добавлено новое исключение: unresolvedDependency.
Обновлено 09.06.18: исправлена ошибка в KozYouTubeUtils, связанная с неправильным парсингом идентификаторов видео, содержащих знак «-», у коротких ссылок.