Source: format/markdown.js

/**
 * Module that provides formatter to convert result of {@link module:seeq.search search} 
 * into {@link http://daringfireball.net/projects/markdown/ Markdown}.
 * 
 * @module markdown
 */


"use strict";

var sEol = require("os").EOL,
    util = require("./util");

/**
 * Format/convert result of {@link module:seeq.search search} into {@link http://daringfireball.net/projects/markdown/ Markdown}.
 * 
 * @param {Object} data
 *      Result of {@link module:seeq.search search}.
 * @param {Object} settings
 *      Format settings. See {@link module:format format} for details.
 * @return {String}
 *      Markdown text representing result of search.
 * @see {@link module:format format}
 */
module.exports = function(data, settings) {
    /*jshint boss:true, expr:true*/
    var getLicenseList = util.getLicenseList,
        getRepository = util.getRepository,
        bVerbose = settings.verbose,
        queryList = settings.queryList,
        out = [],
        sBr = "  " + sEol,
        sIndent = "    ",
        sIndentTwice = "        ",
        nameResult, nI, nK, nN, nQ, sName, sResourceName, resourceResult, resourceResultList, result, value;
    
    for (nI = 0, nK = queryList.length; nI < nK; nI++) {
        sName = queryList[nI];
        nameResult = data[sName];
        if (nameResult && typeof nameResult === "object") {
            nI &&
                out.push(sEol);
            out.push(nI + 1, ". ", sName);
            for (sResourceName in nameResult) {
                out.push(sEol, sIndent, "* ", sResourceName);
                resourceResult = nameResult[sResourceName];
                resourceResultList = resourceResult.result;
                nQ = resourceResultList.length;
                if (nQ) {
                    out.push(" - ", nQ);
                    for (nN = 0; nN < nQ; nN++) {
                        result = resourceResultList[nN];
                        
                        out.push(sEol, sIndentTwice, "+ ");
                        if (value = result.url) {
                            out.push("[", result.name, "](", value, ")");
                        }
                        else {
                            out.push("**", result.name, "**");
                        }
                        if (value = result.description) {
                            out.push(" - ", 
                                        value.replace(/\r\n\r\n|\n\n/g, sBr)
                                            .replace(/</g, "<")
                                            .replace(/>/g, ">"));
                        }
                        (value = result.keywords) && value.length &&
                            out.push(sBr, sIndentTwice, "  _keywords_: ", value.join(" "));
                        
                        if (bVerbose) {
                            result.version &&
                                out.push(sBr, sIndentTwice, "  _version_: ", result.version);
                            (value = getRepository(result)) &&
                                out.push(sBr, sIndentTwice, "  _repository_: [", value, "](", value, ")");
                            result.language &&
                                out.push(sBr, sIndentTwice, "  _language_: ", result.language);
                            (value = getLicenseList(result)) && value.length &&
                                out.push(sBr, sIndentTwice, "  _license_: ", value.join(", "));
                            result.stars &&
                                out.push(sBr, sIndentTwice, "  _stars_: ", result.stars);
                        }
                    }
                }
                else {
                    out.push(sBr, sIndentTwice, sName, " is not found.");
                    resourceResult.error &&
                        out.push(sBr, sIndentTwice, "Error of checking '", sName, "' at '", sResourceName, "': ", resourceResult.error);
                }
            }
        }
    }
    return out.join("");
};
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.