GithubHelp home page GithubHelp logo

jsenumerator's Introduction

JSEnumerator

A light-weight library for list or enumeration.

Download

License

MIT. See header of https://raw.github.com/cho45/jsenumerator/master/jsenumerator.js

Concept

  • Do not taint global.
  • Infinite list functions like MochiKit.
  • Enumeration method chain like Ruby 1.9.

Using method chain for generating sequence has advantages over nesting function call for writing as you think.

Sample

FizzBuzz

// normal
fizzbuzz  = E(1).countup().imap(function (i) {
	return (i % 3 == 0) ? (i % 5 == 0) ? "FizzBuzz" : "Fizz" :
						  (i % 5 == 0) ? "Buzz"     :      i ;
}).take(20);

// take some values from pre-defined sequence
fizzbuzz = E(1)
	.countup()
	.izip(
		E(["", "", "Fizz"]).cycle(),
		E(["", "", "", "", "Buzz"]).cycle())
	.imap(function (num, fizz, buzz) {
		return fizz + buzz || num;
	})
	.take(20);

with JSDeferred

function fib () {
	var p = 0, i = 1;
	return E([0, 1]).chain(E(function () {
		var ret = p + i;
		p = i;
		i = ret;
		return ret;
	}));
}

Enumerator.prototype.dloop = function (fun, n) {
	var enum = this;
	if (!n) n = 1;
	return next(function () {
		for (var  i = 0; i < n; i++) {
			fun.call(enum, enum.next());
		}
		return call(arguments.callee);
	}).error(function (e) {
		if (e != Enumerator.StopIteration) throw e;
	});
};

fib().itake(100).dloop(function (i) {
	log(i);
});

jsenumerator's People

Contributors

cho45 avatar

Stargazers

 avatar  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.