Adds a `collectCommentNodes` option on `ParseTemplateOptions` which will cause the returned `ParsedTemplate` to include an array of all html comments found in the template. PR Close #41251
		
			
				
	
	
		
			48 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| /**
 | |
|  * @license
 | |
|  * Copyright Google LLC All Rights Reserved.
 | |
|  *
 | |
|  * Use of this source code is governed by an MIT-style license that can be
 | |
|  * found in the LICENSE file at https://angular.io/license
 | |
|  */
 | |
| 
 | |
| import {ParseSourceSpan} from '../../../src/parse_util';
 | |
| import {Comment} from '../../../src/render3/r3_ast';
 | |
| import {parseTemplate} from '../../../src/render3/view/template';
 | |
| 
 | |
| describe('collectCommentNodes', () => {
 | |
|   it('should include an array of HTML comment nodes on the returned R3 AST', () => {
 | |
|     const html = `
 | |
|       <!-- eslint-disable-next-line -->
 | |
|       <div *ngFor="let item of items">
 | |
|         {{item.name}}
 | |
|       </div>
 | |
| 
 | |
|       <div>
 | |
|         <p>
 | |
|           <!-- some nested comment -->
 | |
|           <span>Text</span>
 | |
|         </p>
 | |
|       </div>
 | |
|     `;
 | |
| 
 | |
|     const templateNoCommentsOption = parseTemplate(html, '', {});
 | |
|     expect(templateNoCommentsOption.commentNodes).toBeUndefined();
 | |
| 
 | |
|     const templateCommentsOptionDisabled = parseTemplate(html, '', {collectCommentNodes: false});
 | |
|     expect(templateCommentsOptionDisabled.commentNodes).toBeUndefined();
 | |
| 
 | |
|     const templateCommentsOptionEnabled = parseTemplate(html, '', {collectCommentNodes: true});
 | |
|     expect(templateCommentsOptionEnabled.commentNodes!.length).toEqual(2);
 | |
|     expect(templateCommentsOptionEnabled.commentNodes![0]).toBeInstanceOf(Comment);
 | |
|     expect(templateCommentsOptionEnabled.commentNodes![0].value)
 | |
|         .toEqual('eslint-disable-next-line');
 | |
|     expect(templateCommentsOptionEnabled.commentNodes![0].sourceSpan)
 | |
|         .toBeInstanceOf(ParseSourceSpan);
 | |
|     expect(templateCommentsOptionEnabled.commentNodes![1]).toBeInstanceOf(Comment);
 | |
|     expect(templateCommentsOptionEnabled.commentNodes![1].value).toEqual('some nested comment');
 | |
|     expect(templateCommentsOptionEnabled.commentNodes![1].sourceSpan)
 | |
|         .toBeInstanceOf(ParseSourceSpan);
 | |
|   });
 | |
| });
 |