apidoc
Version:
RESTful web API Documentation Generator
89 lines (86 loc) • 2.65 kB
JavaScript
/**
* PreProcess.
*
* @param {Object[]} parsedFiles
* @param {String[]} filenames
* @returns {Object}
*/
function preProcess(parsedFiles, filenames, defineStructureName)
{
var result = {};
defineStructureName = defineStructureName || "paramTitle";
result[defineStructureName] = [];
for(var fileIndex = 0; fileIndex < parsedFiles.length; fileIndex += 1)
{
var parsedFile = parsedFiles[fileIndex];
for(var blockIndex = 0; blockIndex < parsedFile.length; blockIndex += 1)
{
var block = parsedFile[blockIndex];
if(block["global"][defineStructureName])
{
var entries = block["global"][defineStructureName];
// Simple append, same Codes too.
for(var entryIndex = 0; entryIndex < entries.length; entryIndex += 1)
{
result[defineStructureName].push(entries[entryIndex]);
} // for entryIndex
// Unset
delete(block["global"][defineStructureName]);
}
} // for blockIndex
} // for fileIndex
return result;
} // preProcess
/**
* PostProcess.
*
* @param {Object[]} parsedFiles
* @param {String[]} filenames
* @param {Object[]} preProcessResults
*/
function postProcess(parsedFiles, filenames, preProcessResults, structureName, defineStructureName)
{
structureName = structureName || "parameter";
defineStructureName = defineStructureName || "paramTitle";
for(var fileIndex = 0; fileIndex < parsedFiles.length; fileIndex += 1)
{
var parsedFile = parsedFiles[fileIndex];
for(var blockIndex = 0; blockIndex < parsedFile.length; blockIndex += 1)
{
var block = parsedFile[blockIndex];
if(block["local"][structureName] && block["local"][structureName]["fields"])
{
var fields = block["local"][structureName]["fields"];
var newBlock = {}; // preserve sorting
var blockKeys = Object.keys(fields);
for(var blockKeyIndex = 0; blockKeyIndex < blockKeys.length; blockKeyIndex += 1)
{
var blockKey = blockKeys[blockKeyIndex];
var blockEntries = block["local"][structureName]["fields"][blockKey];
var found = false;
for(var preIndex = 0; preIndex < preProcessResults[defineStructureName].length; preIndex += 1)
{
var preEntry = preProcessResults[defineStructureName][preIndex];
if(preEntry.group === blockKey)
{
found = true;
newBlock[preEntry.title] = blockEntries;
}
} // for preIndex
if( ! found)
{
newBlock[blockKey] = blockEntries;
}
} // for blockKey
block["local"][structureName]["fields"] = newBlock;
}
} // for blockIndex
} // for fileIndex
} // postProcess
/**
* Exports.
*/
module.exports = {
preProcess: preProcess,
postProcess: postProcess
};