Skip to content

Commit 516690e

Browse files
author
Steve Thompson
committed
Updated to be ecmascript module.
Committing version 1.0.0
1 parent bcd77eb commit 516690e

File tree

9 files changed

+238
-187
lines changed

9 files changed

+238
-187
lines changed

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
/node_modules
1010

1111
# IDEs and editors
12-
/.idea
12+
.idea/
1313
.project
1414
.classpath
1515
.c9/

.npmignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
lib/
22
.idea/
33
dist/tests.js
4+
tsconfig.json

README.md

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ Paginates the data in `array`.
44
`array` is never modified.
55

66
## Examples
7-
```ts
7+
```js
88
let arr = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20];
99

1010
console.log(getPage(1, 5, arr));
@@ -35,11 +35,8 @@ console.log(getPage(2, 19, arr));
3535
`npm i @writetome51/array-get-page`
3636

3737
## Loading
38-
```ts
39-
// if using TypeScript:
38+
```js
4039
import { getPage } from '@writetome51/array-get-page';
41-
// if using ES5 JavaScript:
42-
var getPage = require('@writetome51/array-get-page').getPage;
4340
```
4441

4542

dist/index.js

Lines changed: 40 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,41 @@
1-
"use strict";
2-
Object.defineProperty(exports, "__esModule", { value: true });
3-
const array_get_adjacent_at_1 = require("@writetome51/array-get-adjacent-at");
4-
const get_rounded_up_down_1 = require("@writetome51/get-rounded-up-down");
5-
const array_get_head_tail_1 = require("@writetome51/array-get-head-tail");
6-
const in_range_1 = require("@writetome51/in-range");
7-
const not_1 = require("@writetome51/not");
8-
function getPage(pageNumber, itemsPerPage, array) {
9-
errorIfRequestedPageDoesNotExist(pageNumber);
10-
const firstIndexToGet = (itemsPerPage * (pageNumber - 1));
11-
if (isLastPage(pageNumber))
12-
return getRemainingItems(firstIndexToGet);
13-
else
14-
return array_get_adjacent_at_1.getAdjacentAt(firstIndexToGet, itemsPerPage, array);
15-
function errorIfRequestedPageDoesNotExist(pageNumber) {
16-
let totalPages = getTotalPages();
17-
if (totalPages === 0 || not_1.not(in_range_1.inRange([1, totalPages], pageNumber))) {
18-
throw new Error('The requested page does not exist');
19-
}
20-
}
21-
function getTotalPages() {
22-
return get_rounded_up_down_1.getRoundedUp(array.length / itemsPerPage);
23-
}
24-
function isLastPage(pageNumber) {
25-
return (pageNumber === getTotalPages());
26-
}
27-
function getRemainingItems(firstIndexToGet) {
28-
let numItemsToGet = (array.length - firstIndexToGet);
29-
return array_get_head_tail_1.getTail(numItemsToGet, array);
30-
}
1+
import {getAdjacentAt} from '@writetome51/array-get-adjacent-at';
2+
import {getRoundedUp} from '@writetome51/get-rounded-up-down';
3+
import {getTail} from '@writetome51/array-get-head-tail';
4+
import {inRange} from '@writetome51/in-range';
5+
import {not} from '@writetome51/not';
6+
7+
8+
export function getPage(pageNumber, itemsPerPage, array) {
9+
10+
errorIfRequestedPageDoesNotExist(pageNumber);
11+
12+
const firstIndexToGet = (itemsPerPage * (pageNumber - 1));
13+
14+
if (isLastPage(pageNumber)) return getRemainingItems(firstIndexToGet);
15+
else return getAdjacentAt(firstIndexToGet, itemsPerPage, array);
16+
17+
18+
function errorIfRequestedPageDoesNotExist(pageNumber) {
19+
let totalPages = getTotalPages();
20+
if (totalPages === 0 || not(inRange([1, totalPages], pageNumber))) {
21+
throw new Error('The requested page does not exist');
22+
}
23+
}
24+
25+
26+
function getTotalPages() {
27+
return getRoundedUp(array.length / itemsPerPage);
28+
}
29+
30+
31+
function isLastPage(pageNumber) {
32+
return (pageNumber === getTotalPages());
33+
}
34+
35+
36+
function getRemainingItems(firstIndexToGet) {
37+
let numItemsToGet = (array.length - firstIndexToGet);
38+
return getTail(numItemsToGet, array);
39+
}
40+
3141
}
32-
exports.getPage = getPage;

dist/tests.js

Lines changed: 98 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,99 @@
1-
"use strict";
2-
Object.defineProperty(exports, "__esModule", { value: true });
3-
const index_1 = require("./index");
1+
import {getPage} from './index.js';
2+
import {arraysMatch} from '@writetome51/arrays-match';
3+
4+
5+
let result = getPage(1, 1, [1]);
6+
if (arraysMatch(result, [1])) console.log('test 1 passed');
7+
else console.log('test 1 FAILED');
8+
9+
410
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20];
5-
console.log(index_1.getPage(1, 5, arr));
6-
// --> [1,2,3,4,5]
7-
console.log(index_1.getPage(2, 5, arr));
8-
// --> [6,7,8,9,10]
9-
console.log(index_1.getPage(1, 7, arr));
10-
// --> [1,2,3,4,5,6,7]
11-
console.log(index_1.getPage(3, 7, arr));
12-
// --> [15,16,17,18,19,20]
13-
console.log(index_1.getPage(1, 19, arr));
14-
// --> [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]
15-
console.log(index_1.getPage(2, 19, arr));
16-
// --> [20]
17-
// console.log(getPage(4, 7, arr));
18-
// --> 'Error: The requested page does not exist'
19-
// console.log(getPage(4, 7, 'abcdefghijklmnopqrstuvwxyz'));
20-
// --> 'Error: Input must be array.'
11+
result = getPage(1, 5, arr);
12+
if (arraysMatch(result, [1, 2, 3, 4, 5])) console.log('test 2 passed');
13+
else console.log('test 2 FAILED');
14+
15+
16+
result = getPage(2, 5, arr);
17+
if (arraysMatch(result, [6, 7, 8, 9, 10])) console.log('test 3 passed');
18+
else console.log('test 3 FAILED');
19+
20+
21+
result = getPage(1, 7, arr);
22+
if (arraysMatch(result, [1, 2, 3, 4, 5, 6, 7])) console.log('test 4 passed');
23+
else console.log('test 4 FAILED');
24+
25+
26+
result = getPage(3, 7, arr);
27+
if (arraysMatch(result, [15, 16, 17, 18, 19, 20])) console.log('test 5 passed');
28+
else console.log('test 5 FAILED');
29+
30+
31+
result = getPage(1, 19, arr);
32+
if (arraysMatch(result, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]))
33+
console.log('test 6 passed');
34+
else console.log('test 6 FAILED');
35+
36+
37+
result = getPage(2, 19, arr);
38+
if (arraysMatch(result, [20])) console.log('test 7 passed');
39+
else console.log('test 7 FAILED');
40+
41+
42+
let errTriggered = false;
43+
try {
44+
getPage(4, 7, arr);
45+
} catch (e) {
46+
errTriggered = true;
47+
}
48+
if (errTriggered) console.log('test 8 passed');
49+
else console.log('test 8 FAILED');
50+
51+
52+
errTriggered = false;
53+
try {
54+
getPage(1, 5, 'abcdefghijklmnopqrstuvwxyz');
55+
} catch (e) {
56+
errTriggered = true;
57+
}
58+
if (errTriggered) console.log('test 9 passed');
59+
else console.log('test 9 FAILED');
60+
61+
62+
errTriggered = false;
63+
try {
64+
getPage(1, 1, []);
65+
} catch (e) {
66+
errTriggered = true;
67+
}
68+
if (errTriggered) console.log('test 10 passed');
69+
else console.log('test 10 FAILED');
70+
71+
72+
errTriggered = false;
73+
try {
74+
getPage(-1, 1, [1]);
75+
} catch (e) {
76+
errTriggered = true;
77+
}
78+
if (errTriggered) console.log('test 11 passed');
79+
else console.log('test 11 FAILED');
80+
81+
82+
errTriggered = false;
83+
try {
84+
getPage(1, 0, [1]);
85+
} catch (e) {
86+
errTriggered = true;
87+
}
88+
if (errTriggered) console.log('test 12 passed');
89+
else console.log('test 12 FAILED');
90+
91+
92+
errTriggered = false;
93+
try {
94+
getPage(1, -1, [1]);
95+
} catch (e) {
96+
errTriggered = true;
97+
}
98+
if (errTriggered) console.log('test 13 passed');
99+
else console.log('test 13 FAILED');

lib/tests.ts

Lines changed: 0 additions & 29 deletions
This file was deleted.

0 commit comments

Comments
 (0)