mirror of
https://github.com/hay-kot/homebox.git
synced 2025-08-03 16:20:27 +00:00
implement string utilities lib
This commit is contained in:
parent
12dee6fcc5
commit
257457a2d8
2 changed files with 70 additions and 0 deletions
56
frontend/lib/strings/index.test.ts
Normal file
56
frontend/lib/strings/index.test.ts
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
import { describe, it, expect } from "vitest";
|
||||||
|
import { titlecase, capitalize, truncate } from ".";
|
||||||
|
|
||||||
|
describe("title case tests", () => {
|
||||||
|
it("should return the same string if it's already title case", () => {
|
||||||
|
expect(titlecase("Hello World")).toBe("Hello World");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should title case a lower case word", () => {
|
||||||
|
expect(titlecase("hello")).toBe("Hello");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should title case a sentence", () => {
|
||||||
|
expect(titlecase("hello world")).toBe("Hello World");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should title case a sentence with multiple words", () => {
|
||||||
|
expect(titlecase("hello world this is a test")).toBe("Hello World This Is A Test");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("capitilize tests", () => {
|
||||||
|
it("should return the same string if it's already capitalized", () => {
|
||||||
|
expect(capitalize("Hello")).toBe("Hello");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should capitalize a lower case word", () => {
|
||||||
|
expect(capitalize("hello")).toBe("Hello");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should capitalize a sentence", () => {
|
||||||
|
expect(capitalize("hello world")).toBe("Hello world");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should capitalize a sentence with multiple words", () => {
|
||||||
|
expect(capitalize("hello world this is a test")).toBe("Hello world this is a test");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("truncase tests", () => {
|
||||||
|
it("should return the same string if it's already truncated", () => {
|
||||||
|
expect(truncate("Hello", 5)).toBe("Hello");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should truncate a lower case word", () => {
|
||||||
|
expect(truncate("hello", 3)).toBe("hel...");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should truncate a sentence", () => {
|
||||||
|
expect(truncate("hello world", 5)).toBe("hello...");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should truncate a sentence with multiple words", () => {
|
||||||
|
expect(truncate("hello world this is a test", 10)).toBe("hello worl...");
|
||||||
|
});
|
||||||
|
});
|
14
frontend/lib/strings/index.ts
Normal file
14
frontend/lib/strings/index.ts
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
export function titlecase(str: string) {
|
||||||
|
return str
|
||||||
|
.split(" ")
|
||||||
|
.map(word => word[0].toUpperCase() + word.slice(1))
|
||||||
|
.join(" ");
|
||||||
|
}
|
||||||
|
|
||||||
|
export function capitalize(str: string) {
|
||||||
|
return str[0].toUpperCase() + str.slice(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function truncate(str: string, length: number) {
|
||||||
|
return str.length > length ? str.substring(0, length) + "..." : str;
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue