Skip to content

Commit

Permalink
Added exjs.range to create an enumeration of ranges.
Browse files Browse the repository at this point in the history
  • Loading branch information
BSick7 committed Apr 22, 2014
1 parent 654fa05 commit 682aced
Show file tree
Hide file tree
Showing 8 changed files with 99 additions and 5 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,5 @@ src/packages
node_modules/**/*
.idea*
test/*.js
test/*.js.map
dist/*.js.map
6 changes: 4 additions & 2 deletions Gruntfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,15 @@
dest: 'dist/ex.js',
options: {
target: 'es5',
declaration: true
declaration: true,
sourceMap: true
}
},
test: {
src: ['test/**/*.ts'],
options: {
target: 'es5'
target: 'es5',
sourceMap: true
}
}
},
Expand Down
2 changes: 1 addition & 1 deletion bower.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "exjs",
"version": "0.1.1",
"version": "0.1.2",
"homepage": "https://github.com/BSick7/exjs",
"authors": [
"BSick7 <brad.sickles@gmail.com>"
Expand Down
3 changes: 3 additions & 0 deletions dist/ex.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,9 @@ declare module exjs {
}
declare module exjs {
}
declare module exjs {
function range(start: number, end: number, increment?: number): IEnumerable<number>;
}
declare module exjs {
}
declare module exjs {
Expand Down
35 changes: 34 additions & 1 deletion dist/ex.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "exjs",
"version": "0.1.1",
"version": "0.1.2",
"description": "Extension library",
"main": "Gruntfile.js",
"directories": {
Expand Down
30 changes: 30 additions & 0 deletions src/range.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
/// <reference path="enumerable.ts" />

module exjs {
function rangeEnumerator (start: number, end: number, increment: number): IEnumerator<number> {
var i = start - increment;
var e = {
current: undefined,
moveNext: function (): boolean {
i += increment;
if (i >= end)
return false;
e.current = i;
return true;
}
};
return e;
}

export function range (start: number, end: number, increment?: number): IEnumerable<number> {
start = start || 0;
end = end || 0;
if (start > end)
throw new Error("Start cannot be greater than end.");
if (increment == null)
increment = 1;
var e = new Enumerable<number>();
e.getEnumerator = () => rangeEnumerator(start, end, increment);
return e;
}
}
24 changes: 24 additions & 0 deletions test/enum.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,30 @@ test("array", () => {
strictEqual(arr2[4], 5);
});

test("range", () => {
var arr = exjs.range(0, 1).toArray();
strictEqual(arr.length, 1, "#1");
strictEqual(arr[0], 0, "#1");

arr = exjs.range(5, 10).toArray();
strictEqual(arr.length, 5, "#2");
strictEqual(arr[0], 5, "#2");
strictEqual(arr[1], 6, "#2");
strictEqual(arr[2], 7, "#2");
strictEqual(arr[3], 8, "#2");
strictEqual(arr[4], 9, "#2");

arr = exjs.range(1, 36, 5).toArray();
strictEqual(arr.length, 7);
strictEqual(arr[0], 1, "#3");
strictEqual(arr[1], 6, "#3");
strictEqual(arr[2], 11, "#3");
strictEqual(arr[3], 16, "#3");
strictEqual(arr[4], 21, "#3");
strictEqual(arr[5], 26, "#3");
strictEqual(arr[6], 31, "#3");
});

test("aggregate", () => {
var arr = [1, 2, 3, 4, 5, 6, 7, 8];
strictEqual(arr.en().aggregate(0, (acc, cur) => acc + cur), 36);
Expand Down

0 comments on commit 682aced

Please sign in to comment.