fix(ivy): allow empty cases for ICU expressions (#30846)
We used to ignore empty strings for optimization purposes, but it turns out that empty strings are also valid values for ICU cases and we shouldn't ignore those. FW-1290 #resolve PR Close #30846
This commit is contained in:
		
							parent
							
								
									b74df20c2a
								
							
						
					
					
						commit
						0d4f8c7dd9
					
				| @ -123,7 +123,7 @@ function extractParts(pattern: string): (string | IcuExpression)[] { | ||||
|         const block = pattern.substring(prevPos, pos); | ||||
|         if (ICU_BLOCK_REGEXP.test(block)) { | ||||
|           results.push(parseICUBlock(block)); | ||||
|         } else if (block) {  // Don't push empty strings
 | ||||
|         } else { | ||||
|           results.push(block); | ||||
|         } | ||||
| 
 | ||||
| @ -140,10 +140,7 @@ function extractParts(pattern: string): (string | IcuExpression)[] { | ||||
|   } | ||||
| 
 | ||||
|   const substring = pattern.substring(prevPos); | ||||
|   if (substring != '') { | ||||
|     results.push(substring); | ||||
|   } | ||||
| 
 | ||||
|   results.push(substring); | ||||
|   return results; | ||||
| } | ||||
| 
 | ||||
| @ -182,7 +179,7 @@ function parseICUBlock(pattern: string): IcuExpression { | ||||
|     } | ||||
| 
 | ||||
|     const blocks = extractParts(parts[pos++]) as string[]; | ||||
|     if (blocks.length) { | ||||
|     if (cases.length > values.length) { | ||||
|       values.push(blocks); | ||||
|     } | ||||
|   } | ||||
|  | ||||
| @ -618,6 +618,13 @@ onlyInIvy('Ivy i18n logic').describe('runtime i18n', () => { | ||||
| 
 | ||||
|       expect(fixture.nativeElement.innerHTML).toContain('at least'); | ||||
|     }); | ||||
| 
 | ||||
|     it('with empty values', () => { | ||||
|       const fixture = initWithTemplate(AppComp, `{count, select, 10 {} 20 {twenty} other {other}}`); | ||||
| 
 | ||||
|       const element = fixture.nativeElement; | ||||
|       expect(element).toHaveText('other'); | ||||
|     }); | ||||
|   }); | ||||
| 
 | ||||
|   describe('should support attributes', () => { | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user