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: |             rewrite: | ||||||
|                 { sourceString: string; into: string[] }[]; renderings: (string | { builtin: string; override: any } | TagRenderingConfigJson)[] |                 { 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) { |         if (json["rewrite"] === undefined) { | ||||||
|             return {result: [<TagRenderingConfigJson>json], errors: [], warnings: []} |             return {result: [<TagRenderingConfigJson>json], errors: [], warnings: []} | ||||||
|  | @ -167,20 +167,33 @@ class ExpandGroupRewrite extends Conversion<{ | ||||||
|                 { sourceString: string[]; into: (string | any)[][] }; |                 { sourceString: string[]; into: (string | any)[][] }; | ||||||
|             renderings: (string | { builtin: string; override: any } | TagRenderingConfigJson)[] |             renderings: (string | { builtin: string; override: any } | TagRenderingConfigJson)[] | ||||||
|         }>json; |         }>json; | ||||||
|  |         | ||||||
| 
 | 
 | ||||||
|         { |         { | ||||||
|             const errors = [] |             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 |             const expectedLength = config.rewrite.sourceString.length | ||||||
|             for (let i = 0; i < config.rewrite.into.length; i++){ |             for (let i = 0; i < config.rewrite.into.length; i++){ | ||||||
|                 const targets = config.rewrite.into[i]; |                 const targets = config.rewrite.into[i]; | ||||||
|                 if(targets.length !== expectedLength){ |                 if(!Array.isArray(targets)){ | ||||||
|                     errors.push(context+".rewrite.into["+i+"]: expected "+expectedLength+" values, but got "+targets.length) |                     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"){ |                 if(typeof targets[0] !== "string"){ | ||||||
|                     errors.push(context+".rewrite.into["+i+"]: expected a string as first rewrite value values, but got "+targets[0]) |                     errors.push(context+".rewrite.into["+i+"]: expected a string as first rewrite value values, but got "+targets[0]) | ||||||
| 
 | 
 | ||||||
|                 } |                 } | ||||||
|  |                 } | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|             if (errors.length > 0) { |             if (errors.length > 0) { | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue