50 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			50 lines
		
	
	
		
			1.6 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
 | ||
|  |  */ | ||
|  | 
 | ||
|  | const headerStart = | ||
|  |     '/****************************************************************************************************\n' + | ||
|  |     ' * PARTIAL FILE: '; | ||
|  | 
 | ||
|  | const headerEnd = | ||
|  |     '\n ****************************************************************************************************/'; | ||
|  | 
 | ||
|  | /** | ||
|  |  * Render the partially compiled files into a single golden partial output string. | ||
|  |  * | ||
|  |  * @param files The partially compiled files to be rendered. | ||
|  |  */ | ||
|  | export function renderGoldenPartial(files: PartiallyCompiledFile[]): string { | ||
|  |   return files.map(file => `${headerStart + file.path + headerEnd}\n${file.content}`).join('\n'); | ||
|  | } | ||
|  | 
 | ||
|  | /** | ||
|  |  * Parse the `partialContent` into a set of partially compiled files. | ||
|  |  * | ||
|  |  * The `partialContent` is a single string that can contains multiple files. | ||
|  |  * Each file is delimited by a header comment that also contains its original path. | ||
|  |  * | ||
|  |  * @param partialContent The partial content to parse. | ||
|  |  */ | ||
|  | export function parseGoldenPartial(partialContent: string): PartiallyCompiledFile[] { | ||
|  |   const files: PartiallyCompiledFile[] = []; | ||
|  |   const partials = partialContent.split(headerStart); | ||
|  |   for (const partial of partials) { | ||
|  |     const [path, content] = partial.split(headerEnd); | ||
|  |     files.push({path, content}); | ||
|  |   } | ||
|  |   return files; | ||
|  | } | ||
|  | 
 | ||
|  | /** | ||
|  |  * Represents the path and contents of a partially compiled file. | ||
|  |  */ | ||
|  | export interface PartiallyCompiledFile { | ||
|  |   path: string; | ||
|  |   content: string; | ||
|  | } |