2017-07-06 07:17:57 -04:00
|
|
|
module.exports = function getExampleRegion(exampleMap, createDocMessage, collectExamples) {
|
2017-03-23 08:54:29 -04:00
|
|
|
return function getExampleRegionImpl(doc, relativePath, regionName) {
|
|
|
|
const EXAMPLES_FOLDERS = collectExamples.exampleFolders;
|
|
|
|
|
|
|
|
// Find the example in the folders
|
|
|
|
var exampleFile;
|
|
|
|
// Try an "annotated" version first
|
|
|
|
EXAMPLES_FOLDERS.some(EXAMPLES_FOLDER => { return exampleFile = exampleMap[EXAMPLES_FOLDER][relativePath + '.annotated']; });
|
|
|
|
|
|
|
|
// If no annotated version is available then try the actual file
|
|
|
|
if (!exampleFile) {
|
|
|
|
EXAMPLES_FOLDERS.some(EXAMPLES_FOLDER => { return exampleFile = exampleMap[EXAMPLES_FOLDER][relativePath]; });
|
|
|
|
}
|
|
|
|
|
|
|
|
// If still no file then we error
|
|
|
|
if (!exampleFile) {
|
2017-07-06 07:17:57 -04:00
|
|
|
const message = createDocMessage('Missing example file... relativePath: "' + relativePath + '".', doc) + '\n' +
|
|
|
|
'Example files can be found in: ' + EXAMPLES_FOLDERS.join(', ');
|
|
|
|
throw new Error(message);
|
2017-03-23 08:54:29 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
var sourceCodeDoc = exampleFile.regions[regionName || ''];
|
|
|
|
if (!sourceCodeDoc) {
|
2017-07-06 07:17:57 -04:00
|
|
|
const message = createDocMessage('Missing example region... relativePath: "' + relativePath + '", region: "' + regionName + '".', doc) + '\n' +
|
|
|
|
'Regions available are:' + Object.keys[exampleFile.regions];
|
|
|
|
throw new Error(message);
|
2017-03-23 08:54:29 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
return sourceCodeDoc.renderedContent;
|
|
|
|
};
|
|
|
|
};
|