Use non-greedy regular expression
This commit is contained in:
		| @@ -15,7 +15,7 @@ export class PipeParser extends AbstractTemplateParser implements ParserInterfac | |||||||
| 	protected _parseTemplate(template: string): TranslationCollection { | 	protected _parseTemplate(template: string): TranslationCollection { | ||||||
| 		let collection: TranslationCollection = new TranslationCollection(); | 		let collection: TranslationCollection = new TranslationCollection(); | ||||||
|  |  | ||||||
| 		const regExp = new RegExp(/(['"`])([^\1]*)\1\s*\|\s*translate/, 'g'); | 		const regExp = new RegExp(/(['"`])([^\1]*?)\1\s*\|\s*translate/, 'g'); | ||||||
|  |  | ||||||
| 		let matches: RegExpExecArray; | 		let matches: RegExpExecArray; | ||||||
| 		while (matches = regExp.exec(template)) { | 		while (matches = regExp.exec(template)) { | ||||||
|   | |||||||
| @@ -36,4 +36,24 @@ describe('PipeParser', () => { | |||||||
| 		expect(keys).to.deep.equal(['Hello World']); | 		expect(keys).to.deep.equal(['Hello World']); | ||||||
| 	}); | 	}); | ||||||
|  |  | ||||||
|  | 	it('should not use a greedy regular expression', () => { | ||||||
|  | 		const contents = ` | ||||||
|  | 			<ion-header> | ||||||
|  | 				<ion-navbar color="brand"> | ||||||
|  | 					<ion-title>{{ 'Info' | translate }}</ion-title> | ||||||
|  | 				</ion-navbar> | ||||||
|  | 			</ion-header> | ||||||
|  |  | ||||||
|  | 			<ion-content> | ||||||
|  |  | ||||||
|  | 				<content-loading *ngIf="isLoading"> | ||||||
|  | 					{{ 'Loading...' | translate }} | ||||||
|  | 				</content-loading> | ||||||
|  |  | ||||||
|  | 			</ion-content> | ||||||
|  | 		`; | ||||||
|  | 		const keys = parser.extract(contents, templateFilename).keys(); | ||||||
|  | 		expect(keys).to.deep.equal(['Info', 'Loading...']); | ||||||
|  | 	}); | ||||||
|  |  | ||||||
| }); | }); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user