aboutsummaryrefslogtreecommitdiff
path: root/deno/base/lib.ts
diff options
context:
space:
mode:
authorYuqian Yang <crupest@crupest.life>2025-06-21 23:00:56 +0800
committerYuqian Yang <crupest@crupest.life>2025-06-21 23:00:56 +0800
commitd0ccb5d6183cf4b7188258cdb605c727b499d284 (patch)
tree2039a8c88fced4a0ed3188b9c01c29c22d050627 /deno/base/lib.ts
parent89c414326a195d71d1f993af661f94798101e065 (diff)
downloadcrupest-mail.tar.gz
crupest-mail.tar.bz2
crupest-mail.zip
mail: organize utils in namespace-like object. no logging cause.HEADmainmaildev
Diffstat (limited to 'deno/base/lib.ts')
-rw-r--r--deno/base/lib.ts24
1 files changed, 22 insertions, 2 deletions
diff --git a/deno/base/lib.ts b/deno/base/lib.ts
index a5e4a6a..3c69e0a 100644
--- a/deno/base/lib.ts
+++ b/deno/base/lib.ts
@@ -1,10 +1,30 @@
-export function camelCaseToKebabCase(str: string): string {
+function camelCaseToKebabCase(str: string): string {
return str.replace(/[A-Z]/g, (m) => "-" + m.toLowerCase());
}
-export function toFileNameString(date: Date, dateOnly?: boolean): string {
+function prependNonEmpty<T>(
+ object: T,
+ prefix: string = " ",
+): string {
+ if (object == null) return "";
+ const string = typeof object === "string" ? object : String(object);
+ return string.length === 0 ? "" : prefix + string;
+}
+
+export const StringUtils = Object.freeze({
+ camelCaseToKebabCase,
+ prependNonEmpty,
+});
+
+function toFileNameString(date: Date, dateOnly?: boolean): string {
const str = date.toISOString();
return dateOnly === true
? str.slice(0, str.indexOf("T"))
: str.replaceAll(/:|\./g, "-");
}
+
+export const DateUtils = Object.freeze(
+ {
+ toFileNameString,
+ } as const,
+);