diff --git a/README.md b/README.md index d0aa9cd..e08d3e9 100644 --- a/README.md +++ b/README.md @@ -46,7 +46,7 @@ Notes about the notation: ``` javascript var arr = indexspace( '[:-2]', 5 ); -// returns [ 0, 1 ] +// returns [ 0, 1, 2 ] ``` The function also recognizes the `end` keyword, which refers to the last index; i.e., `len-1`. If specified as the `stop` index, `end` is inclusive. @@ -108,7 +108,7 @@ arr = indexspace( '[:10:3]', 20 ); // returns [ 0, 3, 6, 9 ] arr = indexspace( '[:-2]', 5 ); -// returns [ 0, 1 ] +// returns [ 0, 1, 2 ] arr = indexspace( '[:-1:2]', 5 ); // returns [ 0, 2 ] @@ -117,7 +117,7 @@ arr = indexspace( '[-4:-1:2]', 5 ); // returns [ 0, 2 ] arr = indexspace( '[-5:-1]', 5 ); -// returns [ 0, 1, 2 ] +// returns [ 0, 1, 2, 3 ] arr = indexspace( '[::-1]', 5 ); // returns [ 4, 3, 2, 1, 0 ] diff --git a/examples/index.js b/examples/index.js index aa3d604..52c6914 100644 --- a/examples/index.js +++ b/examples/index.js @@ -40,7 +40,7 @@ console.log( arr ); arr = indexspace( '[:-2]', 5 ); console.log( '\n[:-2]' ); console.log( arr ); -// returns [ 0, 1 ] +// returns [ 0, 1, 2 ] arr = indexspace( '[:-1:2]', 5 ); console.log( '\n[:-1:2]' ); @@ -55,7 +55,7 @@ console.log( arr ); arr = indexspace( '[-5:-1]', 5 ); console.log( '\n[-5:-1]' ); console.log( arr ); -// returns [ 0, 1, 2 ] +// returns [ 0, 1, 2, 3 ] arr = indexspace( '[::-1]', 5 ); console.log( '\n[::-1]' ); diff --git a/lib/index.js b/lib/index.js index f95219e..2fed431 100644 --- a/lib/index.js +++ b/lib/index.js @@ -219,7 +219,7 @@ function indexspace( str, len ) { } // Handle negative index... else if ( x2 < 0 ) { - x2 = len - 2 + x2; // len-1-x2 = (end)-x2 + x2 = len - 1 + x2; // len-1-x2 = (end)-x2 if ( x2 < 0 ) { // WARNING: forgive the user for exceeding index bounds... x2 = 0; diff --git a/test/test.js b/test/test.js index 60446b5..efa41c0 100644 --- a/test/test.js +++ b/test/test.js @@ -119,11 +119,11 @@ describe( 'compute-indexspace', function tests() { assert.deepEqual( actual, expected, '[2::2]' ); actual = indexspace( '[:-1]', 5 ); - expected = [ 0, 1, 2 ]; + expected = [ 0, 1, 2, 3 ]; assert.deepEqual( actual, expected, '[:-1]' ); actual = indexspace( '[:-2]', 5 ); - expected = [ 0, 1 ]; + expected = [ 0, 1, 2 ]; assert.deepEqual( actual, expected, '[:-2]' ); actual = indexspace( '[:-1:2]', 5 ); @@ -135,7 +135,7 @@ describe( 'compute-indexspace', function tests() { assert.deepEqual( actual, expected, '[-4:-1:2]' ); actual = indexspace( '[-5:-1]', 5 ); - expected = [ 0, 1, 2 ]; + expected = [ 0, 1, 2, 3 ]; assert.deepEqual( actual, expected, '[-5:-1]' ); actual = indexspace( '[::-1]', 5 );