@@ -76,11 +76,18 @@ export class Parser {
76
76
constructor ( public getTagDefinition : ( tagName : string ) => TagDefinition ) { }
77
77
78
78
parse (
79
- source : string , url : string , options ?: TokenizeOptions , isTagNameCaseSensitive = false ,
79
+ source : string ,
80
+ url : string ,
81
+ options ?: TokenizeOptions ,
82
+ isTagNameCaseSensitive = false ,
80
83
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 {
84
91
const lowercasify = < T , U extends any [ ] > ( fn : ( x : string , ...args : U ) => T ) =>
85
92
( x : string , ...args : U ) : T => fn ( x . toLowerCase ( ) , ...args ) ;
86
93
const getTagDefinition =
@@ -104,8 +111,12 @@ export class Parser {
104
111
const canSelfClose = ( options && options . canSelfClose ) || false ;
105
112
const allowHtmComponentClosingTags = ( options && options . allowHtmComponentClosingTags ) || false ;
106
113
const parser = new _TreeBuilder (
107
- tokenizeResult . tokens , getTagDefinition , canSelfClose , allowHtmComponentClosingTags ,
108
- isTagNameCaseSensitive ) ;
114
+ tokenizeResult . tokens ,
115
+ getTagDefinition ,
116
+ canSelfClose ,
117
+ allowHtmComponentClosingTags ,
118
+ isTagNameCaseSensitive
119
+ ) ;
109
120
parser . build ( ) ;
110
121
return new ParseTreeResult (
111
122
parser . rootNodes ,
@@ -126,9 +137,9 @@ class _TreeBuilder {
126
137
constructor (
127
138
private tokens : Token [ ] ,
128
139
private tagDefinitionResolver : ( tagName : string ) => TagDefinition ,
129
- private getTagDefinition : ( tagName : string ) => TagDefinition ,
130
140
private canSelfClose : boolean ,
131
141
private allowHtmComponentClosingTags : boolean ,
142
+ private isTagNameCaseSensitive : boolean ,
132
143
) {
133
144
this . _advance ( ) ;
134
145
}
@@ -142,7 +153,7 @@ class _TreeBuilder {
142
153
this . _consumeElementStartTag ( this . _advance ( ) ) ;
143
154
} else if ( this . _peek . type === TokenType . TAG_CLOSE ) {
144
155
this . _closeVoidElement ( ) ;
145
- this . _consumeEndTag ( this . _advance ( ) ) ;
156
+ this . _consumeElementEndTag ( this . _advance ( ) ) ;
146
157
} else if ( this . _peek . type === TokenType . CDATA_START ) {
147
158
this . _closeVoidElement ( ) ;
148
159
this . _consumeCdata ( this . _advance ( ) ) ;
@@ -314,7 +325,6 @@ class _TreeBuilder {
314
325
const expansionCaseParser = new _TreeBuilder (
315
326
exp ,
316
327
this . tagDefinitionResolver ,
317
- this . getTagDefinition ,
318
328
this . canSelfClose ,
319
329
this . allowHtmComponentClosingTags
320
330
) ;
@@ -392,9 +402,9 @@ class _TreeBuilder {
392
402
private _getText ( token : InterpolatedTextToken ) {
393
403
let text = token . parts [ 0 ] ;
394
404
if ( text . length > 0 && text [ 0 ] == '\n' ) {
395
- const parent = this . _getClosestParentElement ( ) ;
405
+ const parent = this . _getClosestElementLikeParent ( ) ;
396
406
if ( parent != null && parent . children . length == 0 &&
397
- this . getTagDefinition ( parent . name ) . ignoreFirstLf ) {
407
+ this . _getTagDefinition ( parent ) ? .ignoreFirstLf ) {
398
408
text = text . substring ( 1 ) ;
399
409
}
400
410
}
@@ -628,15 +638,10 @@ class _TreeBuilder {
628
638
}
629
639
630
640
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)
633
642
const fullName = this . allowHtmComponentClosingTags && endTagToken . parts . length === 0 ?
634
643
null :
635
- this . _getElementFullName (
636
- endTagToken . parts [ 0 ] ,
637
- endTagToken . parts [ 1 ] ,
638
- this . _getClosestParentElement ( ) ,
639
- ) ;
644
+ this . _getElementFullName ( endTagToken , this . _getClosestElementLikeParent ( ) ) ; ;
640
645
641
646
if ( fullName && this . _getTagDefinition ( fullName ) ?. isVoid ) {
642
647
this . errors . push (
0 commit comments