32 lines
1.1 KiB
TypeScript
32 lines
1.1 KiB
TypeScript
export const splitRangeWithinString = (string: string, start: number, end: number) => {
|
|
const isStartOutOfBounds = start > string.length || start < 0
|
|
const isEndOutOfBounds = end > string.length || end < 0
|
|
const isInvalidRange = start > end
|
|
|
|
if (isStartOutOfBounds || isEndOutOfBounds || isInvalidRange) {
|
|
return [string]
|
|
} else {
|
|
return [string.slice(0, start), string.slice(start, end), string.slice(end)].filter((slice) => slice.length > 0)
|
|
}
|
|
}
|
|
|
|
export const getIndexOfQueryInString = (string: string, query: string) => {
|
|
const lowercasedTitle = string.toLowerCase()
|
|
const lowercasedQuery = query.toLowerCase()
|
|
return lowercasedTitle.indexOf(lowercasedQuery)
|
|
}
|
|
|
|
export const splitQueryInString = (string: string, query: string) => {
|
|
const indexOfQueryInTitle = getIndexOfQueryInString(string, query)
|
|
|
|
if (indexOfQueryInTitle < 0) {
|
|
return [string]
|
|
}
|
|
|
|
return splitRangeWithinString(string, indexOfQueryInTitle, indexOfQueryInTitle + query.length)
|
|
}
|
|
|
|
export const capitalizeString = (string: string) => {
|
|
return string.charAt(0).toUpperCase() + string.slice(1)
|
|
}
|