diff --git a/frontend/src/ts/test/test-logic.ts b/frontend/src/ts/test/test-logic.ts index 53721bb27..322558c86 100644 --- a/frontend/src/ts/test/test-logic.ts +++ b/frontend/src/ts/test/test-logic.ts @@ -450,10 +450,14 @@ export async function init(): Promise { let generatedWords: string[]; let generatedSectionIndexes: number[]; + let wordsHaveTab = false; + let wordsHaveNewline = false; try { const gen = await WordsGenerator.generateWords(language); generatedWords = gen.words; generatedSectionIndexes = gen.sectionIndexes; + wordsHaveTab = gen.hasTab; + wordsHaveNewline = gen.hasNewline; } catch (e) { console.error(e); if (e instanceof WordsGenerator.WordGenError) { @@ -476,25 +480,17 @@ export async function init(): Promise { const beforeHasNumbers = TestWords.hasNumbers ? true : false; - let hasTab = false; let hasNumbers = false; - let hasNewline = false; for (const word of generatedWords) { - if (/\t/g.test(word) && !hasTab) { - hasTab = true; - } if (/\d/g.test(word) && !hasNumbers) { hasNumbers = true; } - if (/\n/g.test(word) && !hasNewline) { - hasNewline = true; - } } - TestWords.setHasTab(hasTab); TestWords.setHasNumbers(hasNumbers); - TestWords.setHasNewline(hasNewline); + TestWords.setHasTab(wordsHaveTab); + TestWords.setHasNewline(wordsHaveNewline); if (beforeHasNumbers !== hasNumbers) { void Keymap.refresh(); diff --git a/frontend/src/ts/test/words-generator.ts b/frontend/src/ts/test/words-generator.ts index 1129a5046..3e664e9b3 100644 --- a/frontend/src/ts/test/words-generator.ts +++ b/frontend/src/ts/test/words-generator.ts @@ -556,12 +556,16 @@ let currentWordset: Wordset.Wordset | null = null; let currentLanguage: MonkeyTypes.LanguageObject | null = null; let isCurrentlyUsingFunboxSection = false; -export async function generateWords( - language: MonkeyTypes.LanguageObject -): Promise<{ +type GenerateWordsReturn = { words: string[]; sectionIndexes: number[]; -}> { + hasTab: boolean; + hasNewline: boolean; +}; + +export async function generateWords( + language: MonkeyTypes.LanguageObject +): Promise { if (!TestState.isRepeated) { previousGetNextWordReturns = []; } @@ -570,12 +574,11 @@ export async function generateWords( sectionIndex = 0; sectionHistory = []; currentLanguage = language; - const ret: { - words: string[]; - sectionIndexes: number[]; - } = { + const ret: GenerateWordsReturn = { words: [], sectionIndexes: [], + hasTab: false, + hasNewline: false, }; const sectionFunbox = FunboxList.get(Config.funbox).find( @@ -627,6 +630,16 @@ export async function generateWords( } i++; } + + ret.hasTab = + ret.words.some((w) => /\t/.test(w)) || + currentWordset.words.some((w) => /\t/.test(w)) || + (Config.mode === "quote" && currentQuote.some((w) => /\t/.test(w))); + ret.hasNewline = + ret.words.some((w) => /\n/.test(w)) || + currentWordset.words.some((w) => /\n/.test(w)) || + (Config.mode === "quote" && currentQuote.some((w) => /\n/.test(w))); + sectionHistory = []; //free up a bit of memory? is that even a thing? return ret; }