/** * 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(""); };