Skip to content

Commit

Permalink
Merge pull request #32 from lengfangbing/feat-update
Browse files Browse the repository at this point in the history
feat: update Router initRoute
  • Loading branch information
冷方冰 authored Sep 7, 2020
2 parents 00b6409 + 85884ba commit 533e683
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 109 deletions.
49 changes: 13 additions & 36 deletions decorator/router.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import {parseUrlQuery, splitPath, splitUrl} from "../utils/parse/url.ts";

export class Router {
#tree: Record<string, Record<string, NewRoute>>;
#initRoute: () => NewRoute;

constructor() {
this.#tree = {
Expand All @@ -16,6 +17,12 @@ export class Router {
trace: {},
patch: {},
};
this.#initRoute = () => ({
next: null,
handler: null,
middleware: [],
paramsNames: {}
});
}

#forEachBackMap = (map: Array<() => SingleRoute | null>): SingleRoute | null => {
Expand Down Expand Up @@ -46,35 +53,20 @@ export class Router {
if (p.next[value]) {
p = p.next[value];
} else {
p.next[value] = {
handler: null,
next: null,
middleware: [],
paramsNames: {}
}
p.next[value] = this.#initRoute();
p = p.next[value];
}
} else {
p.next = {
[value]: {
handler: null,
next: null,
middleware: [],
paramsNames: {}
}
[value]: this.#initRoute()
};
p = p.next[value];
}
} else {
if (fM[value]) {
p = fM[value];
} else {
fM[value] = {
handler: null,
next: null,
middleware: [],
paramsNames: {}
};
fM[value] = this.#initRoute();
p = fM[value];
}
}
Expand All @@ -83,12 +75,7 @@ export class Router {
if (fM['']) {
p = fM[''];
} else {
fM[''] = {
handler: null,
next: null,
middleware: [],
paramsNames: {}
}
fM[''] = this.#initRoute();
p = fM[''];
}
pm[index] = value.paramsName;
Expand All @@ -97,23 +84,13 @@ export class Router {
if (p.next['']) {
p = p.next[''];
} else {
p.next[''] = {
handler: null,
next: null,
middleware: [],
paramsNames: {}
}
p.next[''] = this.#initRoute();
p = p.next[''];
}
pm[index] = value.paramsName;
} else {
p.next = {
'': {
handler: null,
next: null,
middleware: [],
paramsNames: {}
}
'': this.#initRoute()
}
p = p.next[''];
pm[index] = value.paramsName;
Expand Down
49 changes: 13 additions & 36 deletions router.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import {

export class Router {
#tree: Record<string, Record<string, NewRoute>>;
#initRoute: () => NewRoute;
middleware: Middleware

constructor() {
Expand All @@ -29,6 +30,12 @@ export class Router {
patch: {},
};
this.middleware = new Middleware();
this.#initRoute = () => ({
next: null,
handler: null,
middleware: [],
paramsNames: {}
});
}

#forEachBackMap = (map: Array<() => SingleRoute | null>): SingleRoute | null => {
Expand Down Expand Up @@ -59,35 +66,20 @@ export class Router {
if (p.next[value]) {
p = p.next[value];
} else {
p.next[value] = {
handler: null,
next: null,
middleware: [],
paramsNames: {}
}
p.next[value] = this.#initRoute();
p = p.next[value];
}
} else {
p.next = {
[value]: {
handler: null,
next: null,
middleware: [],
paramsNames: {}
}
[value]: this.#initRoute()
};
p = p.next[value];
}
} else {
if (fM[value]) {
p = fM[value];
} else {
fM[value] = {
handler: null,
next: null,
middleware: [],
paramsNames: {}
};
fM[value] = this.#initRoute();
p = fM[value];
}
}
Expand All @@ -96,12 +88,7 @@ export class Router {
if (fM['']) {
p = fM[''];
} else {
fM[''] = {
handler: null,
next: null,
middleware: [],
paramsNames: {}
}
fM[''] = this.#initRoute();
p = fM[''];
}
pm[index] = value.paramsName;
Expand All @@ -110,23 +97,13 @@ export class Router {
if (p.next['']) {
p = p.next[''];
} else {
p.next[''] = {
handler: null,
next: null,
middleware: [],
paramsNames: {}
}
p.next[''] = this.#initRoute();
p = p.next[''];
}
pm[index] = value.paramsName;
} else {
p.next = {
'': {
handler: null,
next: null,
middleware: [],
paramsNames: {}
}
'': this.#initRoute()
}
p = p.next[''];
pm[index] = value.paramsName;
Expand Down
50 changes: 13 additions & 37 deletions router_test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ export interface NewRoute {

export class Router {
#tree: Record<string, Record<string, NewRoute>>;

#initRoute: () => NewRoute;
constructor() {
this.#tree = {
get: {},
Expand All @@ -42,6 +42,12 @@ export class Router {
head: {},
patch: {},
};
this.#initRoute = () => ({
next: null,
handler: null,
middleware: [],
paramsNames: {}
});
}

#forEachBackMap = (map: Array<() => SingleRoute | null>): SingleRoute | null => {
Expand Down Expand Up @@ -144,36 +150,21 @@ export class Router {
if (p.next[value]) {
p = p.next[value];
} else {
p.next[value] = {
handler: null,
next: null,
middleware: [],
paramsNames: {}
}
p.next[value] = this.#initRoute();
p = p.next[value];
}
} else {
// 如果没有next, 表示没有下一节点, 这是个新节点
p.next = {
[value]: {
handler: null,
next: null,
middleware: [],
paramsNames: {}
}
[value]: this.#initRoute()
};
p = p.next[value];
}
} else {
if (funcMap[value]) {
p = funcMap[value];
} else {
funcMap[value] = {
handler: null,
next: null,
middleware: [],
paramsNames: {}
};
funcMap[value] = this.#initRoute();
p = funcMap[value];
}
}
Expand All @@ -185,12 +176,7 @@ export class Router {
if (funcMap['']) {
p = funcMap[''];
} else {
funcMap[''] = {
handler: null,
next: null,
middleware: [],
paramsNames: {}
}
funcMap[''] = this.#initRoute();
p = funcMap[''];
}
params[index] = value.paramsName;
Expand All @@ -199,23 +185,13 @@ export class Router {
if (p.next['']) {
p = p.next[''];
} else {
p.next[''] = {
handler: null,
next: null,
middleware: [],
paramsNames: {}
}
p.next[''] = this.#initRoute();
p = p.next[''];
}
params[index] = value.paramsName;
} else {
p.next = {
'': {
handler: null,
next: null,
middleware: [],
paramsNames: {}
}
'': this.#initRoute()
}
p = p.next[''];
params[index] = value.paramsName;
Expand Down

0 comments on commit 533e683

Please sign in to comment.