anitimejs
Version:
Thư viện xử lý chuỗi số và thời gian trong JavaScript/Typescript
81 lines (80 loc) • 3.1 kB
TypeScript
/**
* Tùy chọn cho hàm tạo và xử lý slug
*/
export interface SlugOptions {
/** Ký tự phân cách giữa các từ (mặc định: "-") */
separator?: string;
/** Chuyển đổi sang chữ thường (mặc định: true) */
lowercase?: boolean;
/** Loại bỏ dấu tiếng Việt (mặc định: true) */
removeAccents?: boolean;
/** Giới hạn độ dài slug (mặc định: 0 - không giới hạn) */
maxLength?: number;
/** Loại bỏ các ký tự không phải chữ và số (mặc định: true) */
removeNonAlphanumeric?: boolean;
/** Thay thế ký tự khoảng trắng (mặc định: true - dùng separator) */
replaceWhitespace?: boolean;
/** Xử lý các ký tự đặc biệt (mặc định: {}) */
customReplacements?: Record<string, string>;
}
/**
* Tạo slug từ chuỗi với nhiều tùy chọn
*
* @param input Chuỗi đầu vào cần chuyển thành slug
* @param options Tùy chọn xử lý slug
* @returns Chuỗi slug đã được xử lý
*
* @example
* // Tạo slug cơ bản
* createSlug("Hello World"); // "hello-world"
*
* // Xử lý tiếng Việt
* createSlug("Chào Thế Giới"); // "chao-the-gioi"
*
* // Với tùy chọn
* createSlug("Product Name (Version 2.0)", {
* separator: "_",
* maxLength: 20,
* customReplacements: { "2.0": "2-0" }
* }); // "product_name_version"
*/
export declare function createSlug(input: string, options?: SlugOptions): string;
/**
* Kiểm tra xem một chuỗi có phải slug hợp lệ không
*
* @param slug Chuỗi slug cần kiểm tra
* @param pattern Mẫu regex tùy chỉnh (tùy chọn)
* @returns true nếu là slug hợp lệ, false nếu không
*
* @example
* isValidSlug("hello-world"); // true
* isValidSlug("hello world"); // false
* isValidSlug("product_123", /^[a-z0-9_]+$/); // true
*/
export declare function isValidSlug(slug: string, pattern?: RegExp): boolean;
/**
* Tạo một slug duy nhất từ một chuỗi, thêm hậu tố số nếu cần
*
* @param input Chuỗi đầu vào
* @param existingSlugs Mảng các slug đã tồn tại để kiểm tra trùng lặp
* @param options Tùy chọn xử lý slug
* @returns Slug duy nhất đã được xử lý
*
* @example
* createUniqueSlug("Hello", ["hello", "hello-1"]); // "hello-2"
*/
export declare function createUniqueSlug(input: string, existingSlugs?: string[], options?: SlugOptions): string;
/**
* Lấy một phần của slug, mặc định là phần cuối cùng
*
* @param slug Chuỗi slug cần xử lý
* @param position Vị trí cần lấy (mặc định: 'last')
* @param separator Ký tự phân cách (mặc định: "-")
* @returns Phần của slug đã được xử lý
*
* @example
* getSlugPart("blog/2023/post-title"); // "post-title"
* getSlugPart("blog/2023/post-title", 'first', '/'); // "blog"
* getSlugPart("blog/2023/post-title", 1, '/'); // "2023"
*/
export declare function getSlugPart(slug: string, position?: "first" | "last" | number, separator?: string): string;