| 
									
										
										
										
											2021-09-26 18:21:29 +02:00
										 |  |  | import ScriptUtils from "./ScriptUtils" | 
					
						
							| 
									
										
										
										
											2022-08-22 14:46:55 +02:00
										 |  |  | import { writeFileSync } from "fs" | 
					
						
							| 
									
										
										
										
											2022-01-27 01:23:04 +01:00
										 |  |  | import { | 
					
						
							|  |  |  |     FixLegacyTheme, | 
					
						
							|  |  |  |     UpdateLegacyLayer, | 
					
						
							|  |  |  | } from "../Models/ThemeConfig/Conversion/LegacyJsonConvert" | 
					
						
							| 
									
										
										
										
											2022-03-29 21:55:49 +02:00
										 |  |  | import Translations from "../UI/i18n/Translations" | 
					
						
							|  |  |  | import { Translation } from "../UI/i18n/Translation" | 
					
						
							|  |  |  | import { LayerConfigJson } from "../Models/ThemeConfig/Json/LayerConfigJson" | 
					
						
							| 
									
										
										
										
											2021-09-26 18:21:29 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-29 01:41:37 +02:00
										 |  |  | /* | 
					
						
							|  |  |  |  * This script reads all theme and layer files and reformats them inplace | 
					
						
							|  |  |  |  * Use with caution, make a commit beforehand! | 
					
						
							| 
									
										
										
										
											2021-09-26 19:56:40 +02:00
										 |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-03-29 21:55:49 +02:00
										 |  |  | const t: Translation = Translations.t.general.add.addNew | 
					
						
							|  |  |  | t.OnEveryLanguage((txt, ln) => { | 
					
						
							|  |  |  |     console.log(ln, txt) | 
					
						
							|  |  |  |     return txt | 
					
						
							|  |  |  | }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const articles = { | 
					
						
							| 
									
										
										
										
											2022-04-03 03:10:06 +02:00
										 |  |  |     /*  de: "eine", | 
					
						
							| 
									
										
										
										
											2022-03-29 21:55:49 +02:00
										 |  |  |     es: 'una', | 
					
						
							|  |  |  |     fr: 'une', | 
					
						
							|  |  |  |     it: 'una', | 
					
						
							|  |  |  |     nb_NO: 'en', | 
					
						
							|  |  |  |     nl: 'een', | 
					
						
							|  |  |  |     pt: 'uma', | 
					
						
							| 
									
										
										
										
											2022-04-03 03:10:06 +02:00
										 |  |  |     pt_BR : 'uma',//*/
 | 
					
						
							| 
									
										
										
										
											2022-03-29 21:55:49 +02:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function addArticleToPresets(layerConfig: { presets?: { title: any }[] }) { | 
					
						
							| 
									
										
										
										
											2022-06-19 22:17:51 +02:00
										 |  |  |     /* | 
					
						
							| 
									
										
										
										
											2022-03-29 21:55:49 +02:00
										 |  |  |     if(layerConfig.presets === undefined){ | 
					
						
							|  |  |  |         return  | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     for (const preset of layerConfig.presets) { | 
					
						
							|  |  |  |         preset.title = new Translation(preset.title, "autofix") | 
					
						
							|  |  |  |             .OnEveryLanguage((txt, lang) => { | 
					
						
							| 
									
										
										
										
											2022-04-03 03:10:06 +02:00
										 |  |  |                 let article = articles[lang] | 
					
						
							|  |  |  |                 if(lang === "en"){ | 
					
						
							|  |  |  |                    if(["a","e","u","o","i"].some(vowel => txt.toLowerCase().startsWith(vowel))) { | 
					
						
							|  |  |  |                         article = "an" | 
					
						
							|  |  |  |                    }else{ | 
					
						
							|  |  |  |                        article = "a" | 
					
						
							|  |  |  |                    } | 
					
						
							|  |  |  |                 } | 
					
						
							| 
									
										
										
										
											2022-03-29 21:55:49 +02:00
										 |  |  |                 if(article === undefined){ | 
					
						
							|  |  |  |                     return txt; | 
					
						
							|  |  |  |                 } | 
					
						
							| 
									
										
										
										
											2022-04-03 03:10:06 +02:00
										 |  |  |                 if(txt.startsWith(article+" ")){ | 
					
						
							| 
									
										
										
										
											2022-03-29 21:55:49 +02:00
										 |  |  |                     return txt; | 
					
						
							|  |  |  |                 } | 
					
						
							| 
									
										
										
										
											2022-06-07 14:01:27 +02:00
										 |  |  |                 if(txt.startsWith("an ")){ | 
					
						
							|  |  |  |                     return txt; | 
					
						
							|  |  |  |                 } | 
					
						
							| 
									
										
										
										
											2022-03-29 21:55:49 +02:00
										 |  |  |                 return article +" " +  txt.toLowerCase(); | 
					
						
							|  |  |  |             }) | 
					
						
							|  |  |  |             .translations | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     //*/
 | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2022-03-31 03:13:07 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-26 19:56:40 +02:00
										 |  |  | const layerFiles = ScriptUtils.getLayerFiles() | 
					
						
							|  |  |  | for (const layerFile of layerFiles) { | 
					
						
							| 
									
										
										
										
											2021-11-21 03:48:05 +01:00
										 |  |  |     try { | 
					
						
							| 
									
										
										
										
											2022-03-29 21:55:49 +02:00
										 |  |  |         const fixed = <LayerConfigJson>( | 
					
						
							|  |  |  |             new UpdateLegacyLayer().convertStrict( | 
					
						
							|  |  |  |                 layerFile.parsed, | 
					
						
							|  |  |  |                 "While linting " + layerFile.path | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |             ) | 
					
						
							|  |  |  |         ) | 
					
						
							| 
									
										
										
										
											2022-03-31 03:13:07 +02:00
										 |  |  |         addArticleToPresets(fixed) | 
					
						
							| 
									
										
										
										
											2021-12-21 18:35:31 +01:00
										 |  |  |         writeFileSync(layerFile.path, JSON.stringify(fixed, null, "  ")) | 
					
						
							| 
									
										
										
										
											2021-11-21 03:48:05 +01:00
										 |  |  |     } catch (e) { | 
					
						
							|  |  |  |         console.error("COULD NOT LINT LAYER" + layerFile.path + ":\n\t" + e) | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2021-09-26 19:56:40 +02:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2021-09-26 19:59:51 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-26 19:56:40 +02:00
										 |  |  | const themeFiles = ScriptUtils.getThemeFiles() | 
					
						
							|  |  |  | for (const themeFile of themeFiles) { | 
					
						
							| 
									
										
										
										
											2021-11-21 03:48:05 +01:00
										 |  |  |     try { | 
					
						
							| 
									
										
										
										
											2022-02-09 03:48:55 +01:00
										 |  |  |         const fixed = new FixLegacyTheme().convertStrict( | 
					
						
							|  |  |  |             themeFile.parsed, | 
					
						
							|  |  |  |             "While linting " + themeFile.path | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |         ) | 
					
						
							| 
									
										
										
										
											2022-03-29 21:55:49 +02:00
										 |  |  |         for (const layer of fixed.layers) { | 
					
						
							|  |  |  |             if (layer["presets"] !== undefined) { | 
					
						
							|  |  |  |                 addArticleToPresets(<any>layer) | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2022-03-31 03:13:07 +02:00
										 |  |  |         // extractInlineLayer(fixed)
 | 
					
						
							| 
									
										
										
										
											2021-12-21 18:35:31 +01:00
										 |  |  |         writeFileSync(themeFile.path, JSON.stringify(fixed, null, "  ")) | 
					
						
							| 
									
										
										
										
											2021-11-21 03:48:05 +01:00
										 |  |  |     } catch (e) { | 
					
						
							|  |  |  |         console.error("COULD NOT LINT THEME" + themeFile.path + ":\n\t" + e) | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2021-09-26 19:58:11 +02:00
										 |  |  | } |