UNPKG

cstd

Version:

CoffeeScript Standart Library

194 lines (193 loc) 9.51 kB
<!DOCTYPE html> <html> <head> <meta charset='UTF-8'> <title>CoffeeScript standarts</title> <script src='../javascript/application.js'></script> <script src='../javascript/search.js'></script> <link rel='stylesheet' href='../stylesheets/application.css' type='text/css'> </head> <body> <div id='base' data-path='../'></div> <div id='header'> <div id='menu'> <a href='../extra/README.md.html' title='CSTD'> CSTD </a> &raquo; <a href='../alphabetical_index.html' title='Index'> Index </a> &raquo; <span class='title'>README.md</span> </div> </div> <div id='content'> <nav class='toc'> <p class='title'> <a class='hide_toc' href='#'> <strong>Table of Contents</strong> </a> <small> (<a class='float_toc' href='#'>left</a>) </small> </p> </nav> <div id='filecontents'> <h1 id="-">Библиотека стандартных классов для кофескрипта/яваскрипта</h1> <h2 id="-">Оглавление</h2> <ol> <li><a href="#оглавление">Оглавление</a></li> <li><a href="#введение">Введение</a></li> <li><a href="#общее-описание-классов">Общее описание классов</a><ol> <li><a href="#легенда">Легенда</a></li> <li><a href="#атомы">Атомы</a></li> <li><a href="#контейнеры">Контейнеры</a></li> <li><a href="#даты">Даты</a></li> <li><a href="#события">События</a></li> <li><a href="#кэш">Кэш</a></li> <li><a href="#ошибки">Ошибки</a></li> </ol> </li> </ol> <h2 id="-">Введение</h2><p>Библиотека реализует набор примитивов, которые могут быть полезны. Примитивы создаются аналогично библиотеке STL для C++, но аналогичность не означает идиентичность.</p><p>Некоторые контейнеры могут уступать по скорости нативному массиву (например <code>Stack</code>), но гарантируют отсутствие утечек и странных скачков потребления памяти (в отличии от <code>Array</code>). Так же следует понимать зачем какой тип вы используете т.к. в противном случае получить просадку по скорости и памяти проще простого. Методы, использование которых не желательно, зачастую имеют простор для оптимизации, но она отложена. О нежелательном использовании можно узнать из документации.</p><p>В библиотеке предусматриватся обратная совместимость поведения, без обратной совместимости отбрасывания ошибок. Это значит, что если метод в одной версии может обрабатывать 2 аргумента, а в следущей 3, то в первой версии он бросит исключение при работе с 3 аргументами, а во второй версии -- нет.</p><p>Библиотека полностью покрывается тестами, которые так же будут учавствовать в тестах на обратную совместимость. Естественно тесты исключений в обратной совместимости будут пропущены.</p><h2 id="-">Общее описание классов:</h2> <h3 id="-">Легенда:</h3> <ul> <li>&#39;&lt;-&#39; = extends (означает что класс слева унаследован от класса справа)</li> <li>&#39;(abstract)&#39; = класс абстрактный, если создавать объект на его основе, то будет брошено исключение</li> <li>&#39;(inner)&#39; = класс не доступен через мостик <code>cstd</code>, для доступа надо подключать самостоятельно</li> <li>&#39;(native)&#39; = уточнение, что речь идёт от встроенном классе, чтобы не путать</li> </ul> <h3 id="-">Атомы</h3><p>Атомами являются классы, котрые не наследуют никакой другой класс и не имплементируют в себе никакой класс вовсе. Типичными атомами являются:</p><ul> <li><code>CSObject</code> (abstract) &lt;- <code>Object</code></li> <li><code>Node</code> &lt;- <code>CSObject</code></li> </ul> <h3 id="-">Контейнеры</h3><p>Контейнерами являются классы, объекты которых хранят, обрабатывают, представляют и удаляют другие сущности (примитивы и объекты) по определённым для данного класса правилам. Контейнеры оперируют с узлами (<code>Node</code>) и обычно класс контейнера имеет метод (<code>fromArray</code>) создания кобъекта на основе представления массива. Реализованны:</p><ul> <li><code>Container</code> (abstract) &lt;- <code>CSObject</code></li> <li><code>Stack</code> &lt;- <code>Container</code></li> <li><code>Queue</code> &lt;- <code>Container</code></li> <li><code>Deque</code> &lt;- <code>Container</code></li> <li><code>List</code> &lt;- <code>CSObject</code></li> <li><code>CircularList</code> &lt;- <code>CSObject</code></li> <li><code>NodeQueue</code> (inner) &lt;- <code>CSObject</code></li> </ul> <h3 id="-">Даты</h3><p>Для возможности наследовать класс <code>Date</code> был создан промежуточный класс <code>CSDate</code>. В нём все методы дублируют оригинальный <code>Date</code> и есть гарантия наличия некоторых методов (напрмер <code>now</code>).</p><ul> <li><code>CSDate</code> &lt;- <code>Date</code> (native)</li> </ul> <h3 id="-">События</h3><p>Для событий существует абстрактный класс <code>CSEmitter</code> объекта, создающего события и сам класс события <code>CSEvent</code>.</p><ul> <li><code>CSEmitter</code> &lt;- <code>CSObject</code></li> <li><code>CSEvent</code> &lt;- <code>CSObject</code></li> </ul> <h3 id="-">Кэш</h3><p>Для кеширования по количеству объектов существует абстрактный класс <code>BaseCache</code>, работающий на <code>NodeQueue</code> представлениях с примитивнейшим механизмом вытеснения. Реализован полноценный LRU кэш (<code>LRUCache</code>) с алгоритмической сложностью доступа, посика, вставки О(1). Для всех кэшей публичны методы <code>get</code>, <code>set</code>, <code>clear</code>, а так же read-only свойства <code>length</code> и <code>maxSize</code></p><ul> <li><code>BaseCache</code> (abstract) &lt;- <code>CSObject</code></li> <li><code>LRUCache</code> &lt;- <code>BaseCache</code></li> </ul> <h3 id="-">Ошибки</h3><p>Для создания &quot;своих&quot; классов ошибок есть <code>CSError</code>, который сам так же может быть использован для бросания исключения. </p><ul> <li><code>CSError</code> &lt;- <code>Error</code> (native)</li> </ul> </div> </div> <div id='footer'> By <a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'> Codo </a> 2.1.0 &#10034; Press H to see the keyboard shortcuts &#10034; <a href='http://twitter.com/netzpirat' target='_parent'>@netzpirat</a> &#10034; <a href='http://twitter.com/_inossidabile' target='_parent'>@_inossidabile</a> </div> <iframe id='search_frame'></iframe> <div id='fuzzySearch'> <input type='text'> <ol></ol> </div> <div id='help'> <p> Quickly fuzzy find classes, mixins, methods, file: </p> <ul> <li> <span>T</span> Open fuzzy finder dialog </li> </ul> <p> Control the navigation frame: </p> <ul> <li> <span>L</span> Toggle list view </li> <li> <span>C</span> Show class list </li> <li> <span>I</span> Show mixin list </li> <li> <span>F</span> Show file list </li> <li> <span>M</span> Show method list </li> <li> <span>E</span> Show extras list </li> </ul> <p> You can focus and blur the search input: </p> <ul> <li> <span>S</span> Focus search input </li> <li> <span>Esc</span> Blur search input </li> </ul> </div> </body> </html>