mirror of
https://github.com/monkeytypegame/monkeytype.git
synced 2025-10-18 19:45:58 +08:00
fix(word generation): hasTab / hasNewline state sometimes being incorrect when using plus n funbox
closes #4698
This commit is contained in:
parent
6579f68955
commit
a57b6c272f
2 changed files with 27 additions and 18 deletions
|
@ -450,10 +450,14 @@ export async function init(): Promise<void> {
|
|||
|
||||
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<void> {
|
|||
|
||||
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();
|
||||
|
|
|
@ -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<GenerateWordsReturn> {
|
||||
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;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue