| 
									
										
										
										
											2020-11-17 02:22:48 +01:00
										 |  |  | import * as fs from "fs"; | 
					
						
							|  |  |  | import {Utils} from "../Utils"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function isTranslation(tr: any): boolean { | 
					
						
							|  |  |  |     for (const key in tr) { | 
					
						
							|  |  |  |         if (typeof tr[key] !== "string") { | 
					
						
							|  |  |  |             return false; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     return true; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function transformTranslation(obj: any, depth = 1) { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if (isTranslation(obj)) { | 
					
						
							|  |  |  |         return `new Translation( ${JSON.stringify(obj)} )` | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     let values = "" | 
					
						
							|  |  |  |     for (const key in obj) { | 
					
						
							| 
									
										
										
										
											2021-01-18 02:51:42 +01:00
										 |  |  |         if(key === "#"){ | 
					
						
							|  |  |  |             continue; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         if(key.match("^[a-zA-Z0-9_]*$") === null){ | 
					
						
							|  |  |  |             throw "Invalid character in key: "+key | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2020-11-17 02:22:48 +01:00
										 |  |  |         values += (Utils.Times((_) => "  ", depth)) + key + ": " + transformTranslation(obj[key], depth + 1) + ",\n" | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     return `{${values}}`; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function genTranslations() { | 
					
						
							|  |  |  |     const translations = JSON.parse(fs.readFileSync("./assets/translations.json", "utf-8")) | 
					
						
							|  |  |  |     const transformed = transformTranslation(translations); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-10 23:43:30 +02:00
										 |  |  |     let module = `import {Translation} from "../../UI/i18n/Translation"\n\nexport default class CompiledTranslations {\n\n`; | 
					
						
							| 
									
										
										
										
											2020-11-17 02:22:48 +01:00
										 |  |  |     module += " public static t = " + transformed; | 
					
						
							|  |  |  |     module += "}" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-10 23:43:30 +02:00
										 |  |  |     fs.writeFileSync("./assets/generated/CompiledTranslations.ts", module); | 
					
						
							| 
									
										
										
										
											2020-11-17 02:22:48 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | genTranslations() |