Библиотеки: KozUtils-JS
18.12.2016


>>  СКАЧАТЬ  <<
v1.1.1 от 9.06.2018

Посмотреть самую последнюю версию в репозитории.
Также можно подключать файл, содержащий в себе всю библиотеку: http://libs.nekochan.ru/KozUtils-AIO.js.
Ну и можно установить через Bower: bower install kozutils.

Во время написания кода на JavaScript часто приходится сталкиваться с необходимостью написания рутинного кода. Например, из-за слаботипизированности языка и отсутствия возможности явно указывать параметры по умолчанию приходится дополнительно проверять входные параметры в функциях. Собственно, от этого и начала строиться эта небольшая библиотечка. Может кому ещё понадобится...

Несмотря на то, что это уже вроде как релиз, на данный момент в библиотеке всего 8 полноценных функций да набор из 4 исключений. Всё ещё будет дополняться и расширяться в будущих версиях.
Ну и надо понимать, что здесь я буду обновлять версию не так часто, как будут пушиться коммиты в репозиторий. Но нормальные, номерные, коммиты с тэгами постараюсь заливать сюда оперативно.

Итак, какие функции есть уже сейчас? Сперва уточним, что библиотека состоит из 4 отдельных файлов:

  1. KozExceptions.js — содержит набор готовых классов-исключений, которые выбрасываются остальными скриптами (но данный файл можно и не подключать; тогда будут выбрасываться текстовые исключения).
  2. KozStrUtils.js — расширяет возможности базового строкового класса.
  3. KozUtils.js — содержит общие вспомогательные функции.
  4. 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, связанная с неправильным парсингом идентификаторов видео, содержащих знак «-», у коротких ссылок.