Compare commits
3 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
5cef383f3b | ||
|
677d2a35ca | ||
|
262a89206d |
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@biesbjerg/ngx-translate-extract",
|
||||
"version": "2.2.1",
|
||||
"version": "2.2.3",
|
||||
"description": "Extract strings from projects using ngx-translate",
|
||||
"main": "dist/index.js",
|
||||
"typings": "dist/index.d.ts",
|
||||
@@ -58,8 +58,8 @@
|
||||
"chai": "3.5.0",
|
||||
"mocha": "3.2.0",
|
||||
"ts-node": "3.0.2",
|
||||
"tslint": "4.5.1",
|
||||
"tslint-eslint-rules": "3.5.1",
|
||||
"tslint": "5.0.0",
|
||||
"tslint-eslint-rules": "4.0.0",
|
||||
"typescript": "2.2.2"
|
||||
},
|
||||
"dependencies": {
|
||||
|
@@ -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;
|
||||
|
@@ -1,6 +1,6 @@
|
||||
export interface TranslationType {
|
||||
[key: string]: string
|
||||
};
|
||||
}
|
||||
|
||||
export class TranslationCollection {
|
||||
|
||||
|
@@ -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