| @@ -15,10 +15,10 @@ export class PipeParser extends AbstractTemplateParser implements ParserInterfac | ||||
| 	protected _parseTemplate(template: string): TranslationCollection { | ||||
| 		let collection: TranslationCollection = new TranslationCollection(); | ||||
|  | ||||
| 		const regExp: RegExp = /(['"`])([^>\1\r\n]*?)\1\s*\|\s*translate/g; | ||||
| 		const regExp: RegExp = /(['"`])((?:(?!\1).|\\\1)+)\1\s*\|\s*translate/g; | ||||
| 		let matches: RegExpExecArray; | ||||
| 		while (matches = regExp.exec(template)) { | ||||
| 			collection = collection.add(matches[2]); | ||||
| 			collection = collection.add(matches[2].replace('\\\'', '\'')); | ||||
| 		} | ||||
|  | ||||
| 		return collection; | ||||
|   | ||||
| @@ -18,6 +18,12 @@ describe('PipeParser', () => { | ||||
| 		expect(keys).to.deep.equal(['SomeKey_NotWorking']); | ||||
| 	}); | ||||
|  | ||||
| 	it('should extract string using pipe, but between quotes only', () => { | ||||
| 		const contents = `<input class="form-control" type="text" placeholder="{{'user.settings.form.phone.placeholder' | translate}}" [formControl]="settingsForm.controls['phone']">`; | ||||
| 		const keys = parser.extract(contents, templateFilename).keys(); | ||||
| 		expect(keys).to.deep.equal(['user.settings.form.phone.placeholder']); | ||||
| 	}); | ||||
|  | ||||
| 	it('should extract interpolated strings using translate pipe', () => { | ||||
| 		const contents = `Hello {{ 'World' | translate }}`; | ||||
| 		const keys = parser.extract(contents, templateFilename).keys(); | ||||
| @@ -25,7 +31,7 @@ describe('PipeParser', () => { | ||||
| 	}); | ||||
|  | ||||
| 	it('should extract strings with escaped quotes', () => { | ||||
| 		const contents = `Hello {{ 'World\'s largest potato' | translate }}`; | ||||
| 		const contents = `Hello {{ 'World\\'s largest potato' | translate }}`; | ||||
| 		const keys = parser.extract(contents, templateFilename).keys(); | ||||
| 		expect(keys).to.deep.equal([`World's largest potato`]); | ||||
| 	}); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user