45 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/**
 | 
						|
 * @dgService extractPathsReader
 | 
						|
 * @description
 | 
						|
 */
 | 
						|
 | 
						|
var path = require('canonical-path');
 | 
						|
 | 
						|
module.exports = function extractPathsReader(log) {
 | 
						|
  // regexs for makeTabs. makeExample and makeJson lines
 | 
						|
  var rx = /\s*\+make(?:=Tabs|Example)\(\s*["'](.*?)["']\s*,\s*["'](.*?)["'].*?\)/g
 | 
						|
  var rxJson = /\s*\+makeJson\(\s*["'](.*?)["']\s*,.*?\)/g
 | 
						|
  return {
 | 
						|
    name: 'extractPathsReader',
 | 
						|
 | 
						|
    // returns the fragment filePath without the _fragments dir on the front or the '.md'
 | 
						|
    getDocs: function (fileInfo) {
 | 
						|
      var content = fileInfo.content;
 | 
						|
      var fragItems = [];
 | 
						|
      var r;
 | 
						|
      while ((r = rx.exec(content)) !== null) {
 | 
						|
        var filePaths = r[1].split(',');
 | 
						|
        var regions = (r.length > 2) ? r[2].split(",") : null;
 | 
						|
        filePaths.forEach(function(filePath, ix) {
 | 
						|
          var region = regions && regions[ix];
 | 
						|
          fragItems.push( { mixinPath: filePath, region: region } );
 | 
						|
        });
 | 
						|
      }
 | 
						|
      while ((r = rxJson.exec(content)) !== null) {
 | 
						|
        var filePaths = r[1].split(',');
 | 
						|
        filePaths.forEach(function(filePath) {
 | 
						|
          fragItems.push( { mixinPath: filePath, region: null } );
 | 
						|
        });
 | 
						|
      }
 | 
						|
      if (fragItems.length) {
 | 
						|
        return [{
 | 
						|
          fragItems: fragItems
 | 
						|
        }];
 | 
						|
      } else {
 | 
						|
        return [];
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
 |