Библиотека стандартных классов для кофескрипта/яваскрипта

Оглавление

  1. Оглавление
  2. Введение
  3. Общее описание классов
    1. Легенда
    2. Атомы
    3. Контейнеры
    4. Даты
    5. События
    6. Кэш
    7. Ошибки

Введение

Библиотека реализует набор примитивов, которые могут быть полезны. Примитивы создаются аналогично библиотеке STL для C++, но аналогичность не означает идиентичность.

Некоторые контейнеры могут уступать по скорости нативному массиву (например Stack), но гарантируют отсутствие утечек и странных скачков потребления памяти (в отличии от Array). Так же следует понимать зачем какой тип вы используете т.к. в противном случае получить просадку по скорости и памяти проще простого. Методы, использование которых не желательно, зачастую имеют простор для оптимизации, но она отложена. О нежелательном использовании можно узнать из документации.

В библиотеке предусматриватся обратная совместимость поведения, без обратной совместимости отбрасывания ошибок. Это значит, что если метод в одной версии может обрабатывать 2 аргумента, а в следущей 3, то в первой версии он бросит исключение при работе с 3 аргументами, а во второй версии -- нет.

Библиотека полностью покрывается тестами, которые так же будут учавствовать в тестах на обратную совместимость. Естественно тесты исключений в обратной совместимости будут пропущены.

Общее описание классов:

Легенда:

Атомы

Атомами являются классы, котрые не наследуют никакой другой класс и не имплементируют в себе никакой класс вовсе. Типичными атомами являются:

Контейнеры

Контейнерами являются классы, объекты которых хранят, обрабатывают, представляют и удаляют другие сущности (примитивы и объекты) по определённым для данного класса правилам. Контейнеры оперируют с узлами (Node) и обычно класс контейнера имеет метод (fromArray) создания кобъекта на основе представления массива. Реализованны:

Даты

Для возможности наследовать класс Date был создан промежуточный класс CSDate. В нём все методы дублируют оригинальный Date и есть гарантия наличия некоторых методов (напрмер now).

События

Для событий существует абстрактный класс CSEmitter объекта, создающего события и сам класс события CSEvent.

Кэш

Для кеширования по количеству объектов существует абстрактный класс BaseCache, работающий на NodeQueue представлениях с примитивнейшим механизмом вытеснения. Реализован полноценный LRU кэш (LRUCache) с алгоритмической сложностью доступа, посика, вставки О(1). Для всех кэшей публичны методы get, set, clear, а так же read-only свойства length и maxSize

Ошибки

Для создания "своих" классов ошибок есть CSError, который сам так же может быть использован для бросания исключения.

    Quickly fuzzy find classes, mixins, methods, file:

    Control the navigation frame:

    You can focus and blur the search input: