This is to tidy up the `author-packagse`, which currently duplicates a lot of the configuration in the main packages. We need to DRY this up so that we don't fall foul of a change in one being missed in the other.
		
			
				
	
	
		
			41 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| module.exports = function convertToJsonProcessor(log, createDocMessage) {
 | |
| 
 | |
|   return {
 | |
|     $runAfter: ['checkUnbalancedBackTicks'],
 | |
|     $runBefore: ['writeFilesProcessor'],
 | |
|     docTypes: [],
 | |
|     $process: function(docs) {
 | |
|       const docTypes = this.docTypes;
 | |
|       docs.forEach((doc) => {
 | |
|         if (docTypes.indexOf(doc.docType) !== -1) {
 | |
|           let contents = doc.renderedContent || '';
 | |
| 
 | |
|           let title = doc.title;
 | |
| 
 | |
|           // We do allow an empty `title` but resort to `name` if it is not even defined
 | |
|           if (title === undefined) {
 | |
|             title = doc.name;
 | |
|           }
 | |
| 
 | |
|           // If there is no title then try to extract it from the first h1 in the renderedContent
 | |
|           if (title === undefined) {
 | |
|             const match = /<h1[^>]*>(.+?)<\/h1>/.exec(contents);
 | |
|             if (match) {
 | |
|               title = match[1];
 | |
|             }
 | |
|           }
 | |
| 
 | |
|           // If there is still no title then log a warning
 | |
|           if (title === undefined) {
 | |
|             title = '';
 | |
|             log.warn(createDocMessage('Title property expected', doc));
 | |
|           }
 | |
| 
 | |
|           doc.renderedContent = JSON.stringify({ id: doc.path, title, contents }, null, 2);
 | |
|         }
 | |
|       });
 | |
|     }
 | |
|   };
 | |
| 
 | |
| };
 |