From a429ff630fe184b29db14f24cd1f01fe7a78e763 Mon Sep 17 00:00:00 2001 From: Aidan Bleser Date: Wed, 9 Apr 2025 06:54:44 -0500 Subject: [PATCH] feat: Add `iEqual` to `ts/strings` --- package.json | 5 +---- src/ts/strings.test.ts | 11 +++++++++++ src/ts/strings.ts | 15 +++++++++++++++ 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 61be3ef..5ebe8df 100644 --- a/package.json +++ b/package.json @@ -26,9 +26,6 @@ "typedoc-material-theme": "^1.3.0" }, "pnpm": { - "onlyBuiltDependencies": [ - "@biomejs/biome", - "esbuild" - ] + "onlyBuiltDependencies": ["@biomejs/biome", "esbuild"] } } diff --git a/src/ts/strings.test.ts b/src/ts/strings.test.ts index 318605a..fc59197 100644 --- a/src/ts/strings.test.ts +++ b/src/ts/strings.test.ts @@ -14,3 +14,14 @@ describe('endsWithOneOf', () => { expect(strings.endsWithOneOf('baa', ['ab', 'ac'])).toBe(false); }); }); + +describe('iEqual', () => { + it('returns true when strings are equal', () => { + expect(strings.iEqual('A', 'a')).toBe(true); + expect(strings.iEqual('Hello, World!', 'hello, world!')).toBe(true); + }); + + it('returns false when strings are not equal', () => { + expect(strings.iEqual('a', 'b')).toBe(false); + }); +}); diff --git a/src/ts/strings.ts b/src/ts/strings.ts index ef680c1..1a00e51 100644 --- a/src/ts/strings.ts +++ b/src/ts/strings.ts @@ -37,3 +37,18 @@ export function endsWithOneOf(str: string, strings: string[]): boolean { return false; } + +/** Case insensitive equality. Returns true if `left.toLowerCase()` and `right.toLowerCase()` are equal. + * + * @param left + * @param right + * @returns + * + * ## Usage + * ```ts + * iEqual('Hello, World!', 'hello, World!'); // true + * ``` + */ +export function iEqual(left: string, right: string): boolean { + return left.toLowerCase() === right.toLowerCase(); +}