Skip to content

Commit d3e6cf9

Browse files
♻️ refactor: Extract _extend from from.
1 parent 0972944 commit d3e6cf9

File tree

3 files changed

+24
-7
lines changed

3 files changed

+24
-7
lines changed

src/_extend.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import assert from 'assert';
2+
import Node from './Node.js';
3+
import _push from './_push.js';
4+
5+
/**
6+
* Extend a list with an iterable.
7+
*
8+
* @param {Node} z The last node of the list to extend.
9+
* @param {Iterable} iterable The input iterable.
10+
* @return {Node} Last node of the extended list.
11+
*/
12+
export default function _extend(z, iterable) {
13+
assert(z instanceof Node);
14+
let y = z;
15+
16+
for (const value of iterable) {
17+
y = _push(y, value);
18+
}
19+
20+
return y;
21+
}

src/from.js

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import Node from './Node.js';
2-
import _push from './_push.js';
2+
import _extend from './_extend.js';
33

44
/**
55
* Creates a list from an input iterable.
@@ -14,11 +14,6 @@ export default function from(iterable) {
1414
if (event.done) return null;
1515

1616
const first = new Node(event.value, null, null);
17-
let last = first;
18-
19-
for (const value of it) {
20-
last = _push(last, value);
21-
}
22-
17+
_extend(first, it);
2318
return first;
2419
}

src/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
export {default as Node} from './Node.js';
22
export {default as _concat} from './_concat.js';
3+
export {default as _extend} from './_extend.js';
34
export {default as _iter} from './_iter.js';
45
export {default as _iter_fast} from './_iter_fast.js';
56
export {default as _last} from './_last.js';

0 commit comments

Comments
 (0)