UNPKG

ecol

Version:
94 lines (72 loc) 3.37 kB
# **E**vent **Col**lections [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/samchon/ecol/blob/master/LICENSE) [![npm version](https://badge.fury.io/js/ecol.svg)](https://www.npmjs.com/package/ecol) [![Downloads](https://img.shields.io/npm/dm/ecol.svg)](https://www.npmjs.com/package/ecol) [![Build Status](https://github.com/samchon/ecol/workflows/build/badge.svg)](https://github.com/samchon/ecol/actions?query=workflow%3Abuild) [![Chat on Gitter](https://badges.gitter.im/samchon/ecol.svg)](https://gitter.im/samchon/ecol?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) Extension of [TypeScript-STL](https://github.com/samchon/tstl) **Con**tainers dispatching **E**vents. **TSTL** is an open-source project providing features of STL, migrated from *C++* to *TypeScript*. You can enjoy the STL's own specific *containers*, *algorithms* and *functors* in the JavaScript. If TypeScript, you also can take advantage of type restrictions and generic programming with the TypeScript. **ECOL** is an extension module of such **TSTL**, providing special collections dispatching events. The special collections are almost similar with the original STL Containers, but you also can observe elements' I/O events with the special collections. Types of the event dispatched by the special collections are `"insert"`, `"erase"` and `"refresh"`. ## Features ### Linear Collections - ArrayCollection - DequeCollection - ListCollection ### Set Containers - *Tree-based Collections* - TreeSetCollection - TreeMultiSetCollection - *Hash-buckets based Collections* - HashSetCollection - HashMultiSetCollection ### Map Collections - *Tree-based Collections* - TreeMapCollection - TreeMultiMapCollection - *Hash-buckets based Collections* - HashMapCollection - HashMultiMapCollection ## Installation ### NPM Module Installing **ECOL** in *NodeJS* is very easy. Just install with the `npm`. ```bash # Install TSTL from the NPM module npm install --save ecol ``` ### Usage ``` typescript import {TreeMapCollection} from "ecol"; function listener(event: TreeMapCollection.Event<number, string>): void { console.log("Event type is: " + event.type); for (let it = event.first; !it.equals(event.last); it = it.next()) console.log("\t", "An element by that event:", it.value); } function main(): void { // CONSTRUCT EVENT TREE-MAP let map: TreeMapCollection<number, string> = new TreeMapCollection(); map.addEventListener("insert", listener); map.addEventListener("erase", listener); // DISPATCHES INSERT EVENT map.set(1, "One"); map.set(2, "Two"); map.set(3, "Three"); // DISPATCHES ERASE EVENT map.erase(2); map.erase(3); // DISPATCHES REFRESH EVENT map.set(2, "Second"); // AUTOMATIC map.refresh(); // BY USER } main(); ``` ## References - **Repositories** - [GitHub Repository](https://github.com/samchon/ecol) - [NPM Repository](https://www.npmjs.com/package/ecol) - **Documents** - [**Guide Documents**](https://github.com/samchon/ecol/wiki) - [API Documents](http://samchon.github.io/ecol/api) - **Dependency** - [TypeScript-STL](https://github.com/samchon/tstl)