forked from MapComplete/MapComplete
		
	Better error message for invalid rewrites
This commit is contained in:
		
							parent
							
								
									1c418e5a49
								
							
						
					
					
						commit
						776387a640
					
				
					 1 changed files with 18 additions and 5 deletions
				
			
		| 
						 | 
				
			
			@ -157,7 +157,7 @@ class ExpandGroupRewrite extends Conversion<{
 | 
			
		|||
        {
 | 
			
		||||
            rewrite:
 | 
			
		||||
                { sourceString: string; into: string[] }[]; renderings: (string | { builtin: string; override: any } | TagRenderingConfigJson)[]
 | 
			
		||||
        } | TagRenderingConfigJson, context: string): { result: TagRenderingConfigJson[]; errors: string[]; warnings: string[] } {
 | 
			
		||||
        } | TagRenderingConfigJson, context: string): { result: TagRenderingConfigJson[]; errors: string[]; warnings?: string[] } {
 | 
			
		||||
 | 
			
		||||
        if (json["rewrite"] === undefined) {
 | 
			
		||||
            return {result: [<TagRenderingConfigJson>json], errors: [], warnings: []}
 | 
			
		||||
| 
						 | 
				
			
			@ -168,20 +168,33 @@ class ExpandGroupRewrite extends Conversion<{
 | 
			
		|||
            renderings: (string | { builtin: string; override: any } | TagRenderingConfigJson)[]
 | 
			
		||||
        }>json;
 | 
			
		||||
       
 | 
			
		||||
 | 
			
		||||
        {
 | 
			
		||||
            const errors = []
 | 
			
		||||
 | 
			
		||||
            if(!Array.isArray(config.rewrite.sourceString)){
 | 
			
		||||
                let extra = "";
 | 
			
		||||
                if(typeof config.rewrite.sourceString === "string"){
 | 
			
		||||
                    extra=`<br/>Try <span class='literal-code'>"sourceString": [ "${config.rewrite.sourceString}" ] </span> instead (note the [ and ])`
 | 
			
		||||
                }
 | 
			
		||||
                const msg = context+"<br/>Invalid format: a rewrite block is defined, but the 'sourceString' should be an array of strings, but it is a "+typeof  config.rewrite.sourceString + extra
 | 
			
		||||
                errors.push(msg)
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            const expectedLength = config.rewrite.sourceString.length
 | 
			
		||||
            for (let i = 0; i < config.rewrite.into.length; i++){
 | 
			
		||||
                const targets = config.rewrite.into[i];
 | 
			
		||||
                if(targets.length !== expectedLength){
 | 
			
		||||
                    errors.push(context+".rewrite.into["+i+"]: expected "+expectedLength+" values, but got "+targets.length)
 | 
			
		||||
                }
 | 
			
		||||
                if(!Array.isArray(targets)){
 | 
			
		||||
                    errors.push(`${context}.rewrite.into[${i}] should be an array of values, but it is a `+typeof targets)
 | 
			
		||||
                } else                if(targets.length !== expectedLength){
 | 
			
		||||
                    errors.push(`${context}.rewrite.into[${i}]:<br/>The rewrite specified ${config.rewrite.sourceString} as sourcestring, which consists of ${expectedLength} values. The target ${JSON.stringify(targets)} has ${targets.length} items`)
 | 
			
		||||
                if(typeof targets[0] !== "string"){
 | 
			
		||||
                    errors.push(context+".rewrite.into["+i+"]: expected a string as first rewrite value values, but got "+targets[0])
 | 
			
		||||
 | 
			
		||||
                }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (errors.length > 0) {
 | 
			
		||||
                return {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue