cstd
Version:
CoffeeScript Standart Library
194 lines (193 loc) • 9.51 kB
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>
»
<a href='../alphabetical_index.html' title='Index'>
Index
</a>
»
<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>'<-' = extends (означает что класс слева унаследован от класса справа)</li>
<li>'(abstract)' = класс абстрактный, если создавать объект на его основе,
то будет брошено исключение</li>
<li>'(inner)' = класс не доступен через мостик <code>cstd</code>, для доступа надо подключать
самостоятельно</li>
<li>'(native)' = уточнение, что речь идёт от встроенном классе, чтобы не путать</li>
</ul>
<h3 id="-">Атомы</h3><p>Атомами являются классы, котрые не наследуют никакой другой класс
и не имплементируют в себе никакой класс вовсе.
Типичными атомами являются:</p><ul>
<li><code>CSObject</code> (abstract) <- <code>Object</code></li>
<li><code>Node</code> <- <code>CSObject</code></li>
</ul>
<h3 id="-">Контейнеры</h3><p>Контейнерами являются классы, объекты которых хранят, обрабатывают,
представляют и удаляют другие сущности (примитивы и объекты)
по определённым для данного класса правилам. Контейнеры оперируют
с узлами (<code>Node</code>) и обычно класс контейнера имеет метод (<code>fromArray</code>) создания
кобъекта на основе представления массива. Реализованны:</p><ul>
<li><code>Container</code> (abstract) <- <code>CSObject</code></li>
<li><code>Stack</code> <- <code>Container</code></li>
<li><code>Queue</code> <- <code>Container</code></li>
<li><code>Deque</code> <- <code>Container</code></li>
<li><code>List</code> <- <code>CSObject</code></li>
<li><code>CircularList</code> <- <code>CSObject</code></li>
<li><code>NodeQueue</code> (inner) <- <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> <- <code>Date</code> (native)</li>
</ul>
<h3 id="-">События</h3><p>Для событий существует абстрактный класс <code>CSEmitter</code> объекта,
создающего события и сам класс события <code>CSEvent</code>.</p><ul>
<li><code>CSEmitter</code> <- <code>CSObject</code></li>
<li><code>CSEvent</code> <- <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) <- <code>CSObject</code></li>
<li><code>LRUCache</code> <- <code>BaseCache</code></li>
</ul>
<h3 id="-">Ошибки</h3><p>Для создания "своих" классов ошибок есть <code>CSError</code>, который сам так же может
быть использован для бросания исключения. </p><ul>
<li><code>CSError</code> <- <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
✲
Press H to see the keyboard shortcuts
✲
<a href='http://twitter.com/netzpirat' target='_parent'>@netzpirat</a>
✲
<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>