If the doc does not already have a `title` tag then use the one captured from the renderedContent in the final JSON output, instead.
		
			
				
	
	
		
			37 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			1.0 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 if it is `undefined` we resort to `vFile.title` and then `name`
 | |
|           if (title === undefined) {
 | |
|             title = (doc.vFile && doc.vFile.title);
 | |
|           }
 | |
| 
 | |
|           if (title === undefined) {
 | |
|             title = doc.name;
 | |
|           }
 | |
| 
 | |
|           // 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);
 | |
|         }
 | |
|       });
 | |
|     }
 | |
|   };
 | |
| 
 | |
| };
 |