forked from MapComplete/MapComplete
		
	
		
			
				
	
	
		
			85 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import ScriptUtils from "./ScriptUtils";
 | |
| import {mkdirSync, writeFileSync} from "fs";
 | |
| import {FixLegacyTheme, UpdateLegacyLayer} from "../Models/ThemeConfig/Conversion/LegacyJsonConvert";
 | |
| import Translations from "../UI/i18n/Translations";
 | |
| import {Translation} from "../UI/i18n/Translation";
 | |
| import {LayerConfigJson} from "../Models/ThemeConfig/Json/LayerConfigJson";
 | |
| import {LayoutConfigJson} from "../Models/ThemeConfig/Json/LayoutConfigJson";
 | |
| 
 | |
| /*
 | |
|  * This script reads all theme and layer files and reformats them inplace
 | |
|  * Use with caution, make a commit beforehand!
 | |
|  */
 | |
| 
 | |
| const t : Translation = Translations.t.general.add.addNew
 | |
| t.OnEveryLanguage((txt, ln) => {
 | |
|     console.log(ln, txt)
 | |
|     return txt
 | |
| })
 | |
| 
 | |
| const articles = {
 | |
|   /*  de: "eine",
 | |
|     es: 'una',
 | |
|     fr: 'une',
 | |
|     it: 'una',
 | |
|     nb_NO: 'en',
 | |
|     nl: 'een',
 | |
|     pt: 'uma',
 | |
|     pt_BR : 'uma',//*/
 | |
| }
 | |
| 
 | |
| function addArticleToPresets(layerConfig: {presets?: {title: any}[]}){
 | |
|     //*
 | |
|     if(layerConfig.presets === undefined){
 | |
|         return 
 | |
|     }
 | |
|     for (const preset of layerConfig.presets) {
 | |
|         preset.title = new Translation(preset.title, "autofix")
 | |
|             .OnEveryLanguage((txt, lang) => {
 | |
|                 let article = articles[lang]
 | |
|                 if(lang === "en"){
 | |
|                    if(["a","e","u","o","i"].some(vowel => txt.toLowerCase().startsWith(vowel))) {
 | |
|                         article = "an"
 | |
|                    }else{
 | |
|                        article = "a"
 | |
|                    }
 | |
|                 }
 | |
|                 if(article === undefined){
 | |
|                     return txt;
 | |
|                 }
 | |
|                 if(txt.startsWith(article+" ")){
 | |
|                     return txt;
 | |
|                 }
 | |
|                 return article +" " +  txt.toLowerCase();
 | |
|             })
 | |
|             .translations
 | |
|     }
 | |
|     //*/
 | |
| }
 | |
| 
 | |
| const layerFiles = ScriptUtils.getLayerFiles();
 | |
| for (const layerFile of layerFiles) {
 | |
|     try {
 | |
|         const fixed =<LayerConfigJson> new UpdateLegacyLayer().convertStrict(layerFile.parsed, "While linting " + layerFile.path);
 | |
|         addArticleToPresets(fixed)
 | |
|         writeFileSync(layerFile.path, JSON.stringify(fixed, null, "  "))
 | |
|     } catch (e) {
 | |
|         console.error("COULD NOT LINT LAYER" + layerFile.path + ":\n\t" + e)
 | |
|     }
 | |
| }
 | |
| 
 | |
| const themeFiles = ScriptUtils.getThemeFiles()
 | |
| for (const themeFile of themeFiles) {
 | |
|     try {
 | |
|         const fixed = new FixLegacyTheme().convertStrict(themeFile.parsed, "While linting " + themeFile.path);
 | |
|         for (const layer of fixed.layers) {
 | |
|             if(layer["presets"] !== undefined){
 | |
|                 addArticleToPresets(<any> layer)
 | |
|             }
 | |
|         }
 | |
|        // extractInlineLayer(fixed)
 | |
|         writeFileSync(themeFile.path, JSON.stringify(fixed, null, "  "))
 | |
|     } catch (e) {
 | |
|         console.error("COULD NOT LINT THEME" + themeFile.path + ":\n\t" + e)
 | |
|     }
 | |
| }
 |