Skip to content

Commit fd8d282

Browse files
committedApr 16, 2025
Fix
1 parent d129c7c commit fd8d282

File tree

3 files changed

+24
-23
lines changed

3 files changed

+24
-23
lines changed
 

‎packages/compiler/src/ml_parser/html_parser.ts

-4
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,4 @@ export class HtmlParser extends Parser {
3232
getTagContentType,
3333
);
3434
}
35-
36-
// override parse(source: string, url: string, options?: TokenizeOptions): ParseTreeResult {
37-
// return super.parse(source, url, options);
38-
// }
3935
}

‎packages/compiler/src/ml_parser/parser.ts

+23-18
Original file line numberDiff line numberDiff line change
@@ -76,11 +76,18 @@ export class Parser {
7676
constructor(public getTagDefinition: (tagName: string) => TagDefinition) {}
7777

7878
parse(
79-
source: string, url: string, options?: TokenizeOptions, isTagNameCaseSensitive = false,
79+
source: string,
80+
url: string,
81+
options?: TokenizeOptions,
82+
isTagNameCaseSensitive = false,
8083
getTagContentType?:
81-
(tagName: string, prefix: string, hasParent: boolean,
82-
attrs: Array<{prefix: string, name: string, value?: string}>) => void|
83-
TagContentType): ParseTreeResult {
84+
(
85+
tagName: string,
86+
prefix: string,
87+
hasParent: boolean,
88+
attrs: Array<{prefix: string, name: string, value?: string}>
89+
) => void | TagContentType
90+
): ParseTreeResult {
8491
const lowercasify = <T, U extends any[]>(fn: (x: string, ...args: U) => T) =>
8592
(x: string, ...args: U): T => fn(x.toLowerCase(), ...args);
8693
const getTagDefinition =
@@ -104,8 +111,12 @@ export class Parser {
104111
const canSelfClose = (options && options.canSelfClose) || false;
105112
const allowHtmComponentClosingTags = (options && options.allowHtmComponentClosingTags) || false;
106113
const parser = new _TreeBuilder(
107-
tokenizeResult.tokens, getTagDefinition, canSelfClose, allowHtmComponentClosingTags,
108-
isTagNameCaseSensitive);
114+
tokenizeResult.tokens,
115+
getTagDefinition,
116+
canSelfClose,
117+
allowHtmComponentClosingTags,
118+
isTagNameCaseSensitive
119+
);
109120
parser.build();
110121
return new ParseTreeResult(
111122
parser.rootNodes,
@@ -126,9 +137,9 @@ class _TreeBuilder {
126137
constructor(
127138
private tokens: Token[],
128139
private tagDefinitionResolver: (tagName: string) => TagDefinition,
129-
private getTagDefinition: (tagName: string) => TagDefinition,
130140
private canSelfClose: boolean,
131141
private allowHtmComponentClosingTags: boolean,
142+
private isTagNameCaseSensitive: boolean,
132143
) {
133144
this._advance();
134145
}
@@ -142,7 +153,7 @@ class _TreeBuilder {
142153
this._consumeElementStartTag(this._advance());
143154
} else if (this._peek.type === TokenType.TAG_CLOSE) {
144155
this._closeVoidElement();
145-
this._consumeEndTag(this._advance());
156+
this._consumeElementEndTag(this._advance());
146157
} else if (this._peek.type === TokenType.CDATA_START) {
147158
this._closeVoidElement();
148159
this._consumeCdata(this._advance());
@@ -314,7 +325,6 @@ class _TreeBuilder {
314325
const expansionCaseParser = new _TreeBuilder(
315326
exp,
316327
this.tagDefinitionResolver,
317-
this.getTagDefinition,
318328
this.canSelfClose,
319329
this.allowHtmComponentClosingTags
320330
);
@@ -392,9 +402,9 @@ class _TreeBuilder {
392402
private _getText(token: InterpolatedTextToken) {
393403
let text = token.parts[0];
394404
if (text.length > 0 && text[0] == '\n') {
395-
const parent = this._getClosestParentElement();
405+
const parent = this._getClosestElementLikeParent();
396406
if (parent != null && parent.children.length == 0 &&
397-
this.getTagDefinition(parent.name).ignoreFirstLf) {
407+
this._getTagDefinition(parent)?.ignoreFirstLf) {
398408
text = text.substring(1);
399409
}
400410
}
@@ -628,15 +638,10 @@ class _TreeBuilder {
628638
}
629639

630640
private _consumeElementEndTag(endTagToken: TagCloseToken) {
631-
// @ts-expect-error -- in angular-html-parser endTagToken.parts.length can be 0 (HTM component
632-
// end-tags)
641+
// @ts-expect-error -- in angular-html-parser endTagToken.parts.length can be 0 (HTM component end-tags)
633642
const fullName = this.allowHtmComponentClosingTags && endTagToken.parts.length === 0 ?
634643
null :
635-
this._getElementFullName(
636-
endTagToken.parts[0],
637-
endTagToken.parts[1],
638-
this._getClosestParentElement(),
639-
);
644+
this._getElementFullName(endTagToken, this._getClosestElementLikeParent());;
640645

641646
if (fullName && this._getTagDefinition(fullName)?.isVoid) {
642647
this.errors.push(

‎packages/compiler/test/ml_parser/html_parser_spec.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ describe('HtmlParser', () => {
186186
});
187187

188188
// angular-html-parser: isTagNameCaseSensitive
189-
// `isTagNameCaseSensitive: true` not implmemented
189+
// `isTagNameCaseSensitive: true` not implemented
190190
it('should match closing tags incasesensitive', () => {
191191
expect(humanizeDom(parser.parse('<DiV><P></p></dIv>', 'TestComp'))).toEqual([
192192
[html.Element, 'DiV', 0],

0 commit comments

Comments
 (0)