// todo: add support for chinese characters?? export class TermSplitter { private static allPattern = /(? = new Set(); uniqueTerms.add(match_.toLowerCase()); let terms = []; let camelCaseSplits = match_.split(this.camelCasePattern); if(camelCaseSplits.length > 1) { terms.push(...camelCaseSplits); } let underscoreSplit = match_.split('_'); if (underscoreSplit.length > 1) { terms.push(...underscoreSplit); } let numberSuffixMatch = match_.match(this.numericPattern); numberSuffixMatch && terms.push(numberSuffixMatch[1]); for (let term of terms) { if (term.length > 2 && /[\p{Alphabetic}_$]{3,}/gu.test(term)) { uniqueTerms.add(term.toLowerCase()); } } yield* uniqueTerms; } } static syncSplitTerms(input: string) : string[] { const terms = TermSplitter.splitTerms(input); const result = []; for (let term of terms) { result.push(term); } return result; } }