Source: format/json.js

/**
 * Module that provides formatter to convert result of {@link module:seeq.search search} into JSON.
 * 
 * @module json
 */


"use strict";

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);
};
Copyright (c) 2014 Denis Sikuler
Documentation generated by JSDoc 3.2.2 on Sun Jul 13 2014 23:52:09 GMT+0400 (MSK) using the DocStrap template.