| @@ -15,10 +15,10 @@ 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: RegExp = /(['"`])([^>\1\r\n]*?)\1\s*\|\s*translate/g; | 		const regExp: RegExp = /(['"`])((?:(?!\1).|\\\1)+)\1\s*\|\s*translate/g; | ||||||
| 		let matches: RegExpExecArray; | 		let matches: RegExpExecArray; | ||||||
| 		while (matches = regExp.exec(template)) { | 		while (matches = regExp.exec(template)) { | ||||||
| 			collection = collection.add(matches[2]); | 			collection = collection.add(matches[2].replace('\\\'', '\'')); | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 		return collection; | 		return collection; | ||||||
|   | |||||||
| @@ -18,6 +18,12 @@ describe('PipeParser', () => { | |||||||
| 		expect(keys).to.deep.equal(['SomeKey_NotWorking']); | 		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', () => { | 	it('should extract interpolated strings using translate pipe', () => { | ||||||
| 		const contents = `Hello {{ 'World' | translate }}`; | 		const contents = `Hello {{ 'World' | translate }}`; | ||||||
| 		const keys = parser.extract(contents, templateFilename).keys(); | 		const keys = parser.extract(contents, templateFilename).keys(); | ||||||
| @@ -25,7 +31,7 @@ describe('PipeParser', () => { | |||||||
| 	}); | 	}); | ||||||
|  |  | ||||||
| 	it('should extract strings with escaped quotes', () => { | 	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(); | 		const keys = parser.extract(contents, templateFilename).keys(); | ||||||
| 		expect(keys).to.deep.equal([`World's largest potato`]); | 		expect(keys).to.deep.equal([`World's largest potato`]); | ||||||
| 	}); | 	}); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user