feat(I18nExtractor): Add file paths to error messages (#9177)
* feat(I18nExtractor): Add file paths to error messages relates to #9071 * feat(i18n): allow i18n start comments without meaning * refactor(i18n): cleanup * test(HtmlParser): Add depth to expansion forms
This commit is contained in:
@ -42,38 +42,34 @@ class _Humanizer implements HtmlAstVisitor {
|
||||
htmlVisitAll(this, ast.attrs);
|
||||
htmlVisitAll(this, ast.children);
|
||||
this.elDepth--;
|
||||
return null;
|
||||
}
|
||||
|
||||
visitAttr(ast: HtmlAttrAst, context: any): any {
|
||||
var res = this._appendContext(ast, [HtmlAttrAst, ast.name, ast.value]);
|
||||
this.result.push(res);
|
||||
return null;
|
||||
}
|
||||
|
||||
visitText(ast: HtmlTextAst, context: any): any {
|
||||
var res = this._appendContext(ast, [HtmlTextAst, ast.value, this.elDepth]);
|
||||
this.result.push(res);
|
||||
return null;
|
||||
}
|
||||
|
||||
visitComment(ast: HtmlCommentAst, context: any): any {
|
||||
var res = this._appendContext(ast, [HtmlCommentAst, ast.value, this.elDepth]);
|
||||
this.result.push(res);
|
||||
return null;
|
||||
}
|
||||
|
||||
visitExpansion(ast: HtmlExpansionAst, context: any): any {
|
||||
var res = this._appendContext(ast, [HtmlExpansionAst, ast.switchValue, ast.type]);
|
||||
var res =
|
||||
this._appendContext(ast, [HtmlExpansionAst, ast.switchValue, ast.type, this.elDepth++]);
|
||||
this.result.push(res);
|
||||
htmlVisitAll(this, ast.cases);
|
||||
return null;
|
||||
this.elDepth--;
|
||||
}
|
||||
|
||||
visitExpansionCase(ast: HtmlExpansionCaseAst, context: any): any {
|
||||
var res = this._appendContext(ast, [HtmlExpansionCaseAst, ast.value]);
|
||||
var res = this._appendContext(ast, [HtmlExpansionCaseAst, ast.value, this.elDepth]);
|
||||
this.result.push(res);
|
||||
return null;
|
||||
}
|
||||
|
||||
private _appendContext(ast: HtmlAst, input: any[]): any[] {
|
||||
|
@ -234,9 +234,9 @@ export function main() {
|
||||
expect(humanizeDom(parsed)).toEqual([
|
||||
[HtmlElementAst, 'div', 0],
|
||||
[HtmlTextAst, 'before', 1],
|
||||
[HtmlExpansionAst, 'messages.length', 'plural'],
|
||||
[HtmlExpansionCaseAst, '=0'],
|
||||
[HtmlExpansionCaseAst, '=1'],
|
||||
[HtmlExpansionAst, 'messages.length', 'plural', 1],
|
||||
[HtmlExpansionCaseAst, '=0', 2],
|
||||
[HtmlExpansionCaseAst, '=1', 2],
|
||||
[HtmlTextAst, 'after', 1],
|
||||
]);
|
||||
let cases = (<any>parsed.rootNodes[0]).children[1].cases;
|
||||
@ -256,15 +256,15 @@ export function main() {
|
||||
let parsed = parser.parse(
|
||||
`{messages.length, plural, =0 { {p.gender, gender, =m {m}} }}`, 'TestComp', true);
|
||||
expect(humanizeDom(parsed)).toEqual([
|
||||
[HtmlExpansionAst, 'messages.length', 'plural'],
|
||||
[HtmlExpansionCaseAst, '=0'],
|
||||
[HtmlExpansionAst, 'messages.length', 'plural', 0],
|
||||
[HtmlExpansionCaseAst, '=0', 1],
|
||||
]);
|
||||
|
||||
let firstCase = (<any>parsed.rootNodes[0]).cases[0];
|
||||
|
||||
expect(humanizeDom(new HtmlParseTreeResult(firstCase.expression, []))).toEqual([
|
||||
[HtmlExpansionAst, 'p.gender', 'gender'],
|
||||
[HtmlExpansionCaseAst, '=m'],
|
||||
[HtmlExpansionAst, 'p.gender', 'gender', 0],
|
||||
[HtmlExpansionCaseAst, '=m', 1],
|
||||
[HtmlTextAst, ' ', 0],
|
||||
]);
|
||||
});
|
||||
|
@ -49,11 +49,14 @@ export function main() {
|
||||
let res = extractor.extract(
|
||||
`
|
||||
<!-- i18n: meaning1|desc1 -->message1<!-- /i18n -->
|
||||
<!-- i18n: meaning2|desc2 -->message2<!-- /i18n -->`,
|
||||
<!-- i18n: meaning2 -->message2<!-- /i18n -->
|
||||
<!-- i18n -->message3<!-- /i18n -->`,
|
||||
'someUrl');
|
||||
|
||||
expect(res.messages).toEqual([
|
||||
new Message('message1', 'meaning1', 'desc1'), new Message('message2', 'meaning2', 'desc2')
|
||||
new Message('message1', 'meaning1', 'desc1'),
|
||||
new Message('message2', 'meaning2'),
|
||||
new Message('message3', null),
|
||||
]);
|
||||
});
|
||||
|
||||
@ -212,8 +215,7 @@ export function main() {
|
||||
`
|
||||
<div
|
||||
title1='message1' i18n-title1='meaning1|desc1' i18n-title2='meaning2|desc2'>
|
||||
</div>
|
||||
`,
|
||||
</div>`,
|
||||
'someurl');
|
||||
|
||||
expect(res.errors.length).toEqual(1);
|
||||
|
Reference in New Issue
Block a user