seeq
Version:
Search or detect name on some resource (GitHub, NPM, Bower, ...)
88 lines (81 loc) • 3.33 kB
JavaScript
/**
* Module that provides formatter to convert result of {@link module:seeq.search search} into JSON.
*
* @module json
*/
;
var util = require("./util");
/**
* Format/convert result of {@link module:seeq.search search} into JSON.
*
* @param {Object} data
* Result of {@link module:seeq.search search}.
* @param {Object} settings
* Format settings. See {@link module:format format} for details.
* @return {String}
* JSON representing result of search.
* @see {@link module:format format}
*/
module.exports = function(data, settings) {
/*jshint boss:true*/
var getLicenseList = util.getLicenseList,
getRepository = util.getRepository,
bVerbose = settings.verbose,
queryList = settings.queryList,
out = {},
item, nameMap, nameResult, nI, nK, nN, nQ, sName, sResourceName, resourceResult, resourceResultList,
result, resultList, value;
for (nI = 0, nK = queryList.length; nI < nK; nI++) {
sName = queryList[nI];
nameResult = data[sName];
if (nameResult && typeof nameResult === "object") {
out[sName] = nameMap = {};
for (sResourceName in nameResult) {
nameMap[sResourceName] = item = {};
item.result = resultList = [];
resourceResult = nameResult[sResourceName];
resourceResultList = resourceResult.result;
nQ = resourceResultList.length;
if (nQ) {
for (nN = 0; nN < nQ; nN++) {
result = resourceResultList[nN];
item = {
name: result.name
};
if (value = result.description) {
item.description = value;
}
if (value = result.url) {
item.url = value;
}
if ((value = result.keywords) && value.length) {
item.keywords = value;
}
if (bVerbose) {
if (value = result.version) {
item.version = value;
}
if (value = getRepository(result)) {
item.repository = value;
}
if (value = result.language) {
item.language = value;
}
if ((value = getLicenseList(result)) && value.length) {
item.license = value;
}
if (value = result.stars) {
item.stars = value;
}
}
resultList.push(item);
}
}
else if (value = resourceResult.error) {
item.error = value;
}
}
}
}
return JSON.stringify(out, null, 4);
};