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);
 | 
						|
  });
 | 
						|
});
 |