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