build(aio): left align code regions
This commit is contained in:
		
							parent
							
								
									5e3ef775d5
								
							
						
					
					
						commit
						52ea193638
					
				| @ -103,7 +103,7 @@ function regionParserImpl(contents, fileType) { | |||||||
|     } |     } | ||||||
|     return { |     return { | ||||||
|       contents: lines.join('\n'), |       contents: lines.join('\n'), | ||||||
|       regions: mapObject(regionMap, (regionName, region) => region.lines.join('\n')) |       regions: mapObject(regionMap, (regionName, region) => leftAlign(region.lines).join('\n')) | ||||||
|     }; |     }; | ||||||
|   } else { |   } else { | ||||||
|     return {contents, regions: {}}; |     return {contents, regions: {}}; | ||||||
| @ -119,6 +119,17 @@ function removeLast(array, item) { | |||||||
|   array.splice(index, 1); |   array.splice(index, 1); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | function leftAlign(lines) { | ||||||
|  |   let indent = Number.MAX_VALUE; | ||||||
|  |   lines.forEach(line => { | ||||||
|  |     const lineIndent = line.search(/\S/); | ||||||
|  |     if (lineIndent !== -1) { | ||||||
|  |       indent = Math.min(lineIndent, indent); | ||||||
|  |     } | ||||||
|  |   }); | ||||||
|  |   return lines.map(line => line.substr(indent)); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| function RegionParserError(message, index) { | function RegionParserError(message, index) { | ||||||
|   const lineNum = index + 1; |   const lineNum = index + 1; | ||||||
|   this.message = `regionParser: ${message} (at line ${lineNum}).`; |   this.message = `regionParser: ${message} (at line ${lineNum}).`; | ||||||
|  | |||||||
| @ -43,6 +43,17 @@ describe('regionParser service', () => { | |||||||
|     expect(output.contents).toEqual(t('abc', 'def', 'ghi')); |     expect(output.contents).toEqual(t('abc', 'def', 'ghi')); | ||||||
|   }); |   }); | ||||||
| 
 | 
 | ||||||
|  |   it('should left align the text of the region', () => { | ||||||
|  |     const output = regionParser( | ||||||
|  |       t( | ||||||
|  |         '/* #docregion X */', '  all', '    indented', '    by', '  two', '  spaces', '/* #enddocregion X */', | ||||||
|  |         '/* #docregion Y */', '    first', '  line', '  indented', '    more', '  than', '  later', '  lines', '/* #enddocregion Y */', | ||||||
|  |         '/* #docregion Z */', '  ignore', '  ', '  empty', '', '  lines', '/* #enddocregion Z */' | ||||||
|  |       ), 'test-type'); | ||||||
|  |     expect(output.regions['X']).toEqual(t('all', '  indented', '  by', 'two', 'spaces')); | ||||||
|  |     expect(output.regions['Y']).toEqual(t('  first', 'line', 'indented', '  more', 'than', 'later', 'lines')); | ||||||
|  |     expect(output.regions['Z']).toEqual(t('ignore', '', 'empty', '', 'lines')); | ||||||
|  |   }); | ||||||
| 
 | 
 | ||||||
|   it('should remove doc plaster annotations from the contents', () => { |   it('should remove doc plaster annotations from the contents', () => { | ||||||
|     const output = |     const output = | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user