Skip to content

Commit eac4b7e

Browse files
committed
Extracted interfaces from core classes (v0.3.0).
1 parent 790404b commit eac4b7e

19 files changed

+360
-207
lines changed

.d.ts/doubly-linked-list-node.d.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { DoublyLinkedList } from "./doubly-linked-list";
2-
export declare class DoublyLinkedListNode<E> {
2+
import { IDoublyLinkedListNode } from "./i-doubly-linked-list-node";
3+
export declare class DoublyLinkedListNode<E> implements IDoublyLinkedListNode<E> {
34
private previous;
45
private next;
56
private parentList;

.d.ts/doubly-linked-list.d.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import { AbstractList } from "@jsdsl/abstract-list";
22
import { DoublyLinkedListNode } from "./doubly-linked-list-node";
33
import { AbstractIterator } from "iter-over";
4-
export declare class DoublyLinkedList<E = any> extends AbstractList<E> {
4+
import { IDoublyLinkedList } from "./i-doubly-linked-list";
5+
export declare class DoublyLinkedList<E = any> extends AbstractList<E> implements IDoublyLinkedList<E> {
56
private prologue;
67
private epilogue;
78
constructor(...elements: E[]);

.d.ts/i-doubly-linked-list-node.d.ts

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { IDoublyLinkedList } from "./i-doubly-linked-list";
2+
export interface IDoublyLinkedListNode<E> {
3+
getElement(): E;
4+
getParentList(): IDoublyLinkedList<E>;
5+
hasPreviousNode(): boolean;
6+
getPreviousNode(): IDoublyLinkedListNode<E> | undefined;
7+
setPreviousNode(previousNode: IDoublyLinkedListNode<E> | undefined): IDoublyLinkedListNode<E> | undefined;
8+
hasNextNode(): boolean;
9+
getNextNode(): IDoublyLinkedListNode<E> | undefined;
10+
setNextNode(nextNode: IDoublyLinkedListNode<E> | undefined): IDoublyLinkedListNode<E> | undefined;
11+
}

.d.ts/i-doubly-linked-list.d.ts

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import { AbstractIterator } from "iter-over";
2+
import { IDoublyLinkedListNode } from "./i-doubly-linked-list-node";
3+
export interface IDoublyLinkedList<E> {
4+
getFirst(): E | undefined;
5+
getFirstNode(): IDoublyLinkedListNode<E> | undefined;
6+
getLast(): E | undefined;
7+
getLastNode(): IDoublyLinkedListNode<E> | undefined;
8+
hasNextNode(node: IDoublyLinkedListNode<E>): boolean;
9+
getNextNode(node: IDoublyLinkedListNode<E>): IDoublyLinkedListNode<E> | undefined;
10+
hasPreviousNode(node: IDoublyLinkedListNode<E>): boolean;
11+
getPreviousNode(node: IDoublyLinkedListNode<E>): IDoublyLinkedListNode<E> | undefined;
12+
insertAfter(element: E, node: IDoublyLinkedListNode<E>): IDoublyLinkedListNode<E>;
13+
insertNodeAfter(node: IDoublyLinkedListNode<E>, afterNode: IDoublyLinkedListNode<E>): IDoublyLinkedListNode<E>;
14+
insertBefore(element: E, node: IDoublyLinkedListNode<E>): IDoublyLinkedListNode<E>;
15+
insertNodeBefore(node: IDoublyLinkedListNode<E>, beforeNode: IDoublyLinkedListNode<E>): IDoublyLinkedListNode<E>;
16+
insertFirst(element: E): IDoublyLinkedListNode<E>;
17+
insertNodeFirst(node: IDoublyLinkedListNode<E>): IDoublyLinkedListNode<E>;
18+
insertLast(element: E): IDoublyLinkedListNode<E>;
19+
insertNodeLast(node: IDoublyLinkedListNode<E>): IDoublyLinkedListNode<E>;
20+
removeFirst(): E | undefined;
21+
removeFirstNode(): IDoublyLinkedListNode<E> | undefined;
22+
removeLast(): E | undefined;
23+
removeLastNode(): IDoublyLinkedListNode<E> | undefined;
24+
removeNode(node: IDoublyLinkedListNode<E>): IDoublyLinkedListNode<E>;
25+
nodeIterator(): AbstractIterator<IDoublyLinkedListNode<E>>;
26+
}

.d.ts/main.d.ts

+2
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
11
export { DoublyLinkedList } from "./doubly-linked-list";
22
export { DoublyLinkedListNode } from "./doubly-linked-list-node";
3+
export { IDoublyLinkedList } from "./i-doubly-linked-list";
4+
export { IDoublyLinkedListNode } from "./i-doubly-linked-list-node";

js/doubly-linked-list-node.js.map

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

js/doubly-linked-list.js.map

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

js/i-doubly-linked-list-node.js

+2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

js/i-doubly-linked-list-node.js.map

+1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

js/i-doubly-linked-list.js

+2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

js/i-doubly-linked-list.js.map

+1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

js/main.js

+7-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

js/main.js.map

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@jsdsl/doubly-linked-list",
3-
"version": "0.2.0",
3+
"version": "0.3.0",
44
"description": "A full-featured doubly-linked list implementation.",
55
"publishConfig": {
66
"access": "public"

ts/doubly-linked-list-node.ts

+2-46
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
*/
66

77
import { DoublyLinkedList } from "./doubly-linked-list";
8+
import { IDoublyLinkedListNode } from "./i-doubly-linked-list-node";
89

910
/**
1011
* A doubly-linked node within a {@link DoublyLinkedList}.
@@ -13,7 +14,7 @@ import { DoublyLinkedList } from "./doubly-linked-list";
1314
* @version v0.2.0
1415
* @since v0.1.0
1516
*/
16-
export class DoublyLinkedListNode<E> {
17+
export class DoublyLinkedListNode<E> implements IDoublyLinkedListNode<E> {
1718

1819
/**
1920
* A reference to the node preceding this node, or undefined if this node has no preceding sibling.
@@ -56,11 +57,6 @@ export class DoublyLinkedListNode<E> {
5657

5758
}
5859

59-
/**
60-
* Returns the element contained in this node.
61-
*
62-
* @return The element contained in this node.
63-
*/
6460
public getElement(): E {
6561

6662
if (this.content !== null) return this.content;
@@ -75,48 +71,25 @@ export class DoublyLinkedListNode<E> {
7571

7672
}
7773

78-
/**
79-
* Returns the {@link DoublyLinkedList} that contains this node.
80-
*
81-
* @return The DoublyLinkedList that contains this node.
82-
*/
8374
public getParentList(): DoublyLinkedList<E> {
8475

8576
return this.parentList;
8677

8778
}
8879

89-
/**
90-
* Returns true if this node has a preceding node.
91-
*
92-
* @return true if this node has a preceding node.
93-
*/
9480
public hasPreviousNode(): boolean {
9581

9682
return (this.previous !== undefined);
9783

9884
}
9985

100-
/**
101-
* Returns this node's preceding node, or undefined if this node has no preceding sibling.
102-
*
103-
* @return This node's preceding node, or undefined if this node has no preceding sibling.
104-
* @see DoublyLinkedListNode#hasPreviousNode
105-
*/
10686
public getPreviousNode(): DoublyLinkedListNode<E> | undefined {
10787

10888
if (!this.hasPreviousNode()) return undefined;
10989
else return this.previous as DoublyLinkedListNode<E>;
11090

11191
}
11292

113-
/**
114-
* Sets the preceding node for this node, returning the node displaced as this node's preceding sibling, or
115-
* undefined if this node had no preceding sibling.
116-
*
117-
* @param previousNode The node to set as this node's preceding sibling.
118-
* @return DOC-ME
119-
*/
12093
public setPreviousNode(previousNode: DoublyLinkedListNode<E> | undefined): DoublyLinkedListNode<E> | undefined {
12194

12295
let displaced: DoublyLinkedListNode<E> | undefined = this.previous;
@@ -125,36 +98,19 @@ export class DoublyLinkedListNode<E> {
12598

12699
}
127100

128-
/**
129-
* Returns true if this node has a successive node.
130-
*
131-
* @return true if this node has a successive node.
132-
*/
133101
public hasNextNode(): boolean {
134102

135103
return (this.next !== undefined);
136104

137105
}
138106

139-
/**
140-
* Returns this node's succeeding node, or undefined if this node has no successive sibling.
141-
*
142-
* @return This node's succeeding node, or undefined if this node has no successive sibling.
143-
* @see DoublyLinkedListNode#hasNextNode
144-
*/
145107
public getNextNode(): DoublyLinkedListNode<E> | undefined {
146108

147109
if (!this.hasNextNode()) return undefined;
148110
else return this.next as DoublyLinkedListNode<E>;
149111

150112
}
151113

152-
/**
153-
* Sets the succeeding node for this node, returning the node displaced as this node's succeeding sibling, or
154-
* undefined if this node had no successive sibling.
155-
*
156-
* @param nextNode The node to set as this node's successive sibling.
157-
*/
158114
public setNextNode(nextNode: DoublyLinkedListNode<E> | undefined): DoublyLinkedListNode<E> | undefined {
159115

160116
let displaced: DoublyLinkedListNode<E> | undefined = this.next;

0 commit comments

Comments
 (0)