This commit is contained in:
parent
6adca178f7
commit
41c83c7da9
@ -1,33 +1,63 @@
|
||||
/**
|
||||
* 创建一个路径检查工具,用于精确匹配和前缀匹配路径。
|
||||
* @param {string} url - 要检查的基础 URL。
|
||||
* @param {string} [prefix] - 可选的路径前缀。
|
||||
* @returns {object} 包含路径检查方法的对象。
|
||||
* PathCheckTool 类,用于精确匹配和前缀匹配路径,并支持更换前缀和创建子工具。
|
||||
*/
|
||||
export const makeCheckPathTool = (url: string, prefix?: string) => {
|
||||
const { pathname } = new URL(url)
|
||||
const makePath = (path: string) => `${prefix || ""}${path}`
|
||||
return {
|
||||
/**
|
||||
* 检查路径是否与基础 URL 的路径精确匹配。
|
||||
* @param {string} path - 要检查的路径。
|
||||
* @returns {boolean} 如果路径精确匹配则返回 true,否则返回 false。
|
||||
*/
|
||||
exactCheck: (path: string) => {
|
||||
return pathname === makePath(path)
|
||||
},
|
||||
/**
|
||||
* 检查路径是否以基础 URL 的路径为前缀。
|
||||
* @param {string} path - 要检查的路径。
|
||||
* @returns {boolean} 如果路径以基础 URL 的路径为前缀则返回 true,否则返回 false。
|
||||
*/
|
||||
startsWithCheck: (path: string) => pathname.startsWith(makePath(path)),
|
||||
/**
|
||||
* 检查完整路径是否与基础 URL 的路径精确匹配。
|
||||
* @param {string} path - 要检查的路径。
|
||||
* @returns {boolean} 如果完整路径与基础 URL 的路径精确匹配则返回 true,否则返回 false。
|
||||
*/
|
||||
fullCheck: (path: string) => pathname === path,
|
||||
export class PathCheckTool {
|
||||
private url: string
|
||||
private prefix?: string
|
||||
private pathname: string
|
||||
|
||||
constructor(url: string, prefix?: string) {
|
||||
this.url = url
|
||||
this.prefix = prefix
|
||||
this.pathname = new URL(url).pathname
|
||||
}
|
||||
|
||||
private makePath(path: string): string {
|
||||
return `${this.prefix || ""}${path}`
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查路径是否与基础 URL 的路径精确匹配。
|
||||
* @param {string} path - 要检查的路径。
|
||||
* @returns {boolean} 如果路径精确匹配则返回 true,否则返回 false。
|
||||
*/
|
||||
exactCheck(path: string): boolean {
|
||||
return this.pathname === this.makePath(path)
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查路径是否以基础 URL 的路径为前缀。
|
||||
* @param {string} path - 要检查的路径。
|
||||
* @returns {boolean} 如果路径以基础 URL 的路径为前缀则返回 true,否则返回 false。
|
||||
*/
|
||||
startsWithCheck(path: string): boolean {
|
||||
return this.pathname.startsWith(this.makePath(path))
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查完整路径是否与基础 URL 的路径精确匹配。
|
||||
* @param {string} path - 要检查的路径。
|
||||
* @returns {boolean} 如果完整路径与基础 URL 的路径精确匹配则返回 true,否则返回 false。
|
||||
*/
|
||||
fullCheck(path: string): boolean {
|
||||
return this.pathname === path
|
||||
}
|
||||
|
||||
/**
|
||||
* 更换路径前缀。
|
||||
* @param {string} newPrefix - 新的路径前缀。
|
||||
*/
|
||||
changePrefix(newPrefix: string): void {
|
||||
this.prefix = newPrefix
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建一个子工具,继承当前工具的 URL 和前缀。
|
||||
* @param {string} [childPrefix] - 子工具的路径前缀。
|
||||
* @returns {PathCheckTool} 新的子工具实例。
|
||||
*/
|
||||
child(childPrefix?: string): PathCheckTool {
|
||||
return new PathCheckTool(this.url, childPrefix || this.prefix)
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user