GithubHelp home page GithubHelp logo

smhoekstra / highland Goto Github PK

View Code? Open in Web Editor NEW

This project forked from caolan/highland

0.0 2.0 0.0 4.99 MB

High-level streams library for Node.js and the browser

Home Page: http://highlandjs.org

License: Apache License 2.0

JavaScript 99.89% HTML 0.11%

highland's Introduction

Highland

The high-level streams library for Node.js and the browser. View the Highland website for more in-depth documentation.

build status Join the chat at https://gitter.im/caolan/highland

Introduction

Re-thinking the JavaScript utility belt, Highland manages synchronous and asynchronous code easily, using nothing more than standard JavaScript and Node-like Streams. You may be familiar with Promises, EventEmitters and callbacks, but moving between them is far from seamless. Thankfully, there exists a deeper abstraction which can free our code. By updating the tools we use on Arrays, and applying them to values distributed in time instead of space, we can discard plumbing and focus on the important things. With Highland, you can switch between synchronous and asynchronous data sources at will, without having to re-write your code. Time to dive in!

Made by @caolan, with help and patience from friends - Leave a tip or fork this :)

Highland v3

This branch tracks the ongoing development of version 3.0, which will feature a rewritten Highland core implementation, extensibility support, limited stream lifecycle, and some breaking changes to certain transforms. See #179 and the 3.x label for more details. New features will only be added to this branch. However, until 3.0 is released, we will still be doing bug fixes for the 2.x releases. See the 2.x branch for those files.

Currently, the code is in a semi-stable state. The only major missing feature is onDestroy for higher-level transforms. To try out the new goodness, install the next tag from NPM.

npm install --save highland@next

Examples

Usage as a Node.js module

var _ = require('highland');

Converting to/from Highland Streams

_([1,2,3,4]).toArray(function (xs) {
    // xs is [1,2,3,4]
});

Mapping over a Stream

var doubled = _([1,2,3,4]).map(function (x) {
    return x * 2;
});

Reading files in parallel (4 at once)

var data = _(filenames).map(readFile).parallel(4);

Handling errors

data.errors(function (err, rethrow) {
    // handle or rethrow error
});

Piping to a Node Stream

data.pipe(output);

Piping in data from Node Streams

var output = fs.createWriteStream('output');
var docs = db.createReadStream();

// wrap a node stream and pipe to file
_(docs).filter(isBlogpost).pipe(output);

// or, pipe in a node stream directly:
var through = _.pipeline(_.filter(isBlogpost));
docs.pipe(through).pipe(output);

Handling events

var clicks = _('click', btn).map(1);
var counter = clicks.scan(0, _.add);

counter.each(function (n) {
    $('#count').text(n);
});

Learn more at highlandjs.org

highland's People

Contributors

0chroma avatar adamyanalunas avatar alexbeletsky avatar amsross avatar apaleslimghost avatar brentpayne avatar c089 avatar dayoadeyemi avatar eshao avatar evansolomon avatar gitter-badger avatar glenjamin avatar greelgorke avatar greenkeeperio-bot avatar ibash avatar janriemer avatar jeromew avatar kkirsche avatar lewiscowper avatar lewisjellis avatar lpww avatar megawac avatar pdehaan avatar pjeby avatar pspeter3 avatar rhendric avatar svozza avatar theefer avatar tschaub avatar vqvu avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.