28 lines
778 B
TypeScript
28 lines
778 B
TypeScript
|
|
/**
|
||
|
|
* Shared string utility functions.
|
||
|
|
* Extracted from repeated patterns across api.js, docBlock.js, proAccept.js, proBlock.js, webSearch.js.
|
||
|
|
*/
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Normalize line endings to Unix-style (\n).
|
||
|
|
* Handles \r\n (Windows), \r (old Mac), and \n (Unix).
|
||
|
|
*/
|
||
|
|
export function normalizeNewlines(value: string = ''): string {
|
||
|
|
return String(value || '').replace(/\r\n?/g, '\n')
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Safely coerce any value to a non-null string.
|
||
|
|
* Replaces the common `String(x || '')` pattern scattered across 20+ locations.
|
||
|
|
*/
|
||
|
|
export function safeString(value: unknown): string {
|
||
|
|
return String(value ?? '')
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Remove trailing slashes from a URL/path string.
|
||
|
|
*/
|
||
|
|
export function stripTrailingSlashes(value: string = ''): string {
|
||
|
|
return safeString(value).replace(/\/+$/, '')
|
||
|
|
}
|