-
-
Notifications
You must be signed in to change notification settings - Fork 207
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
- Loading branch information
1 parent
afd256b
commit 33a72ca
Showing
314 changed files
with
41,236 additions
and
2,286 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,57 @@ | ||
const ASCII_LOWER_CASE_CACHE: Map<string, string> = new Map(); | ||
const ASCII_UPPER_CASE_CACHE: Map<string, string> = new Map(); | ||
|
||
/** | ||
* String utility. | ||
*/ | ||
export default class StringUtility { | ||
/** | ||
* ASCII lowercase. | ||
* | ||
* @see https://infra.spec.whatwg.org/#ascii-lowercase | ||
* @param text Text. | ||
* @returns Lowercase text. | ||
*/ | ||
public static asciiLowerCase(text: string): string { | ||
const cached = ASCII_LOWER_CASE_CACHE.get(text); | ||
if (cached) { | ||
return cached; | ||
} | ||
let newText = ''; | ||
for (const char of text) { | ||
const value = char.charCodeAt(0); | ||
if (value >= 65 && value <= 90) { | ||
newText += String.fromCharCode(value + 32); | ||
} else { | ||
newText += char; | ||
} | ||
} | ||
ASCII_LOWER_CASE_CACHE.set(text, newText); | ||
return newText; | ||
} | ||
|
||
/** | ||
* ASCII uppercase. | ||
* | ||
* @see https://infra.spec.whatwg.org/#ascii-uppercase | ||
* @param text Text. | ||
* @returns Uppercase text. | ||
*/ | ||
public static asciiUpperCase(text: string): string { | ||
const cached = ASCII_UPPER_CASE_CACHE.get(text); | ||
if (cached) { | ||
return cached; | ||
} | ||
let newText = ''; | ||
for (const char of text) { | ||
const value = char.charCodeAt(0); | ||
if (value >= 97 && value <= 122) { | ||
newText += String.fromCharCode(value - 32); | ||
} else { | ||
newText += char; | ||
} | ||
} | ||
ASCII_UPPER_CASE_CACHE.set(text, newText); | ||
return newText; | ||
} | ||
} |
Oops, something went wrong.