feat(path-tool): 修改工具至类模式,更方便使用
All checks were successful
/ release (push) Successful in 27s

This commit is contained in:
zhaoyingbo 2024-09-26 03:28:14 +00:00
parent 6adca178f7
commit 41c83c7da9

View File

@ -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)
}
}