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 [];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|