import type { IsLowerCase, IsUpperCase } from "./letter.js"; import type { IsDigit } from "./numeric.js"; import type { WordSeparators } from "./word-separators.js"; type SkipEmptyWord = Word extends "" ? [] : [Word]; type RemoveLastCharacter = Sentence extends `${infer LeftSide}${Character}` ? SkipEmptyWord : never; export type SplitWords = Sentence extends `${infer FirstCharacter}${infer RemainingCharacters}` ? FirstCharacter extends WordSeparators ? [...SkipEmptyWord, ...SplitWords] : LastCharacter extends "" ? SplitWords : [false, true] extends [IsDigit, IsDigit] ? [...SkipEmptyWord, ...SplitWords] : [true, false] extends [IsDigit, IsDigit] ? [...SkipEmptyWord, ...SplitWords] : [true, true] extends [IsDigit, IsDigit] ? SplitWords : [true, true] extends [IsLowerCase, IsUpperCase] ? [...SkipEmptyWord, ...SplitWords] : [true, true] extends [IsUpperCase, IsLowerCase] ? [...RemoveLastCharacter, ...SplitWords] : SplitWords : [...SkipEmptyWord]; /** * Split a string into words. * Words are separated by spaces, underscores, dashes, or changes in casing. */ export declare function splitWords(string: T): SplitWords; export {}; //# sourceMappingURL=split-words.d.ts.map