mirror of
				https://github.com/monkeytypegame/monkeytype.git
				synced 2025-10-29 10:17:30 +08:00 
			
		
		
		
	fix(wikipedia funbox): word generation returning to random words after the first section
This commit is contained in:
		
							parent
							
								
									b93f14b5cd
								
							
						
					
					
						commit
						22373a751f
					
				
					 2 changed files with 33 additions and 36 deletions
				
			
		|  | @ -415,7 +415,7 @@ let languageBeforeQuoteMode: string | undefined; | |||
| export async function init(): Promise<void> { | ||||
|   console.debug("Initializing test"); | ||||
|   testReinitCount++; | ||||
|   if (testReinitCount >= 5) { | ||||
|   if (testReinitCount >= 4) { | ||||
|     TestUI.setTestRestarting(false); | ||||
|     Notifications.add( | ||||
|       "Too many test reinitialization attempts. Something is going very wrong. Please contact support.", | ||||
|  |  | |||
|  | @ -271,30 +271,24 @@ function getFunboxWordsFrequency(): | |||
|   return undefined; | ||||
| } | ||||
| 
 | ||||
| async function getFunboxSection(limit: number): Promise<string[]> { | ||||
| async function getFunboxSection(): Promise<string[]> { | ||||
|   const ret = []; | ||||
|   const sectionFunbox = FunboxList.get(Config.funbox).find( | ||||
|     (f) => f.functions?.pullSection | ||||
|   ); | ||||
|   if (sectionFunbox?.functions?.pullSection) { | ||||
|     while (ret.length < limit) { | ||||
|       const section = await sectionFunbox.functions.pullSection( | ||||
|         Config.language | ||||
|       ); | ||||
|     const section = await sectionFunbox.functions.pullSection(Config.language); | ||||
| 
 | ||||
|       if (section === false) { | ||||
|         UpdateConfig.toggleFunbox(sectionFunbox.name); | ||||
|         throw new Error("Failed to pull section"); | ||||
|       } | ||||
| 
 | ||||
|       if (section === undefined) continue; | ||||
| 
 | ||||
|       for (const word of section.words) { | ||||
|         if (ret.length >= Config.words && Config.mode === "words") { | ||||
|           break; | ||||
|         } | ||||
|         ret.push(word); | ||||
|     if (section === false || section === undefined) { | ||||
|       UpdateConfig.toggleFunbox(sectionFunbox.name); | ||||
|       throw new Error("Failed to pull section"); | ||||
|     } | ||||
| 
 | ||||
|     for (const word of section.words) { | ||||
|       if (ret.length >= Config.words && Config.mode === "words") { | ||||
|         break; | ||||
|       } | ||||
|       ret.push(word); | ||||
|     } | ||||
|   } | ||||
|   return ret; | ||||
|  | @ -442,6 +436,8 @@ export class WordGenError extends Error { | |||
| 
 | ||||
| let currentQuote: string[] = []; | ||||
| 
 | ||||
| let isCurrentlyUsingFunboxSection = false; | ||||
| 
 | ||||
| export async function generateWords( | ||||
|   language: MonkeyTypes.LanguageObject | ||||
| ): Promise<{ | ||||
|  | @ -459,6 +455,13 @@ export async function generateWords( | |||
|     words: [], | ||||
|     sectionIndexes: [], | ||||
|   }; | ||||
| 
 | ||||
|   const sectionFunbox = FunboxList.get(Config.funbox).find( | ||||
|     (f) => f.functions?.pullSection | ||||
|   ); | ||||
|   isCurrentlyUsingFunboxSection = | ||||
|     sectionFunbox?.functions?.pullSection !== undefined; | ||||
| 
 | ||||
|   const limit = getWordsLimit(); | ||||
| 
 | ||||
|   const wordOrder = getQuoteOrCustomModeWordOrder(); | ||||
|  | @ -488,22 +491,6 @@ export async function generateWords( | |||
|     Config.mode === "words" || | ||||
|     Config.mode === "custom" | ||||
|   ) { | ||||
|     const funboxSection = await getFunboxSection(limit); | ||||
|     if (funboxSection.length > 0) { | ||||
|       const indexes = []; | ||||
|       for (let i = 0; i < funboxSection.length; i++) { | ||||
|         indexes.push(i); | ||||
|       } | ||||
|       const ret = []; | ||||
|       for (const word of funboxSection) { | ||||
|         ret.push(applyLazyModeToWord(applyFunboxesToWord(word), language)); | ||||
|       } | ||||
|       return { | ||||
|         words: ret, | ||||
|         sectionIndexes: indexes, | ||||
|       }; | ||||
|     } | ||||
| 
 | ||||
|     let stop = false; | ||||
|     let i = 0; | ||||
|     while (stop === false) { | ||||
|  | @ -672,7 +659,10 @@ export async function getNextWord( | |||
|   const previousWord2Raw = previousWord2 | ||||
|     .replace(/[.?!":\-,']/g, "") | ||||
|     .toLowerCase(); | ||||
| 
 | ||||
|   if (currentSection.length === 0) { | ||||
|     const funboxSection = await getFunboxSection(); | ||||
| 
 | ||||
|     if (Config.mode === "quote") { | ||||
|       randomWord = currentQuote[wordIndex]; | ||||
|     } else if ( | ||||
|  | @ -704,6 +694,8 @@ export async function getNextWord( | |||
|         regenerationCount++; | ||||
|         randomWord = wordset.randomWord(funboxFrequency); | ||||
|       } | ||||
|     } else if (isCurrentlyUsingFunboxSection) { | ||||
|       randomWord = funboxSection.join(" "); | ||||
|     } else { | ||||
|       let regenarationCount = 0; //infinite loop emergency stop button
 | ||||
|       let firstAfterSplit = randomWord.split(" ")[0].toLowerCase(); | ||||
|  | @ -759,7 +751,8 @@ export async function getNextWord( | |||
|     !Config.punctuation && | ||||
|     !Config.language.startsWith("german") && | ||||
|     !Config.language.startsWith("swiss_german") && | ||||
|     !Config.language.startsWith("code") | ||||
|     !Config.language.startsWith("code") && | ||||
|     !isCurrentlyUsingFunboxSection | ||||
|   ) { | ||||
|     randomWord = randomWord.toLowerCase(); | ||||
|   } | ||||
|  | @ -773,7 +766,11 @@ export async function getNextWord( | |||
|     randomWord = randomWord.replace(/ß/g, "ss"); | ||||
|   } | ||||
| 
 | ||||
|   if (Config.punctuation && !language.originalPunctuation === true) { | ||||
|   if ( | ||||
|     Config.punctuation && | ||||
|     !language.originalPunctuation === true && | ||||
|     !isCurrentlyUsingFunboxSection | ||||
|   ) { | ||||
|     randomWord = await punctuateWord( | ||||
|       previousWord, | ||||
|       randomWord, | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue