seeq
Version:
Search or detect name on some resource (GitHub, NPM, Bower, ...)
396 lines (313 loc) • 9.86 kB
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>seeq Source: format/index.js</title>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/sunlight.default.css">
<link type="text/css" rel="stylesheet" href="styles/site.spacelab.css">
</head>
<body>
<div class="container-fluid">
<div class="navbar navbar-fixed-top ">
<div class="navbar-inner">
<a class="brand" href="index.html">seeq</a>
<ul class="nav">
<li class="dropdown">
<a href="modules.list.html" class="dropdown-toggle" data-toggle="dropdown">Modules<b
class="caret"></b></a>
<ul class="dropdown-menu ">
<li>
<a href="module-bower.html">bower</a>
</li>
<li>
<a href="module-cdn.html">cdn</a>
</li>
<li>
<a href="module-cdnjs.html">cdnjs</a>
</li>
<li>
<a href="module-cli.html">cli</a>
</li>
<li>
<a href="module-component.html">component</a>
</li>
<li>
<a href="module-customelements.html">customelements</a>
</li>
<li>
<a href="module-format.html">format</a>
</li>
<li>
<a href="util.html">format/util</a>
</li>
<li>
<a href="module-github.html">github</a>
</li>
<li>
<a href="module-grunt.html">grunt</a>
</li>
<li>
<a href="module-gulp.html">gulp</a>
</li>
<li>
<a href="module-jam.html">jam</a>
</li>
<li>
<a href="module-jsdelivr.html">jsdelivr</a>
</li>
<li>
<a href="module-json.html">json</a>
</li>
<li>
<a href="module-jster.html">jster</a>
</li>
<li>
<a href="module-markdown.html">markdown</a>
</li>
<li>
<a href="module-microjs.html">microjs</a>
</li>
<li>
<a href="module-npm.html">npm</a>
</li>
<li>
<a href="module-raw.html">raw</a>
</li>
<li>
<a href="module-resource.html">resource</a>
</li>
<li>
<a href="util_.html">resource/util</a>
</li>
<li>
<a href="module-seeq.html">seeq</a>
</li>
<li>
<a href="module-spm.html">spm</a>
</li>
<li>
<a href="module-text.html">text</a>
</li>
</ul>
</li>
<li class="dropdown">
<a href="classes.list.html" class="dropdown-toggle" data-toggle="dropdown">Classes<b
class="caret"></b></a>
<ul class="dropdown-menu ">
<li>
<a href="util-FailedHttpRequestError.html">FailedHttpRequestError</a>
</li>
<li>
<a href="util-IncorrectResponseError.html">IncorrectResponseError</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
<div class="row-fluid">
<div class="span12">
<div id="main">
<h1 class="page-title">Source: format/index.js</h1>
<section>
<article>
<pre class="sunlight-highlight-javascript linenums">/**
* API to work with formatters that can be used to format result of {@link module:seeq.search search}.
* <br>
* Each formatter is a function that should return string representing result of search.
* The following parameters are passed to the format function:
<ul>
<li>object that is result of {@link module:seeq.search search}
<li>object that represents format settings; the following settings can be used (name - type - description):
<ul>
<li><code>queryList</code> - <code>Array</code> - list of names/strings that were checked/searched
<li><code>verbose</code> - <code>boolean</code> - whether basic or detailed result should be returned
</ul>
</ul>
*
* @module format
*/
"use strict";
var formatMap = {};
/**
* Format result of search by using specified formatter.
*
* @param {Object} data
* Result of {@link module:seeq.search search}.
* @param {String} name
* Name of formatter that should be used.
* @param {Object} [settings]
* Format settings. Default values for settings are the following:
<ul>
<li><code>queryList</code> - extracted from <code>data</code> parameter
<li><code>verbose</code> - <code>false</code>
</ul>
* @return {String}
* Result returned by specified formatter or empty string if no one of formatters has the specified name.
* @alias module:format.format
*/
function format(data, name, settings) {
var fmt = formatMap[name];
if (! settings) {
settings = {};
}
if (! settings.queryList) {
settings.queryList = Object.keys(data);
}
else if (! Array.isArray(settings.queryList)) {
settings.queryList = [settings.queryList];
}
if (! ("verbose" in settings)) {
settings.verbose = false;
}
return fmt ? fmt(data, settings) : "";
}
/**
* Return formatter with specified name.
*
* @param {String} name
* Name of formatter that should be returned.
* @return {Function | null}
* Function that represents formatter
* or <code>null</code> if no one of formatters has the specified name.
* @alias module:format.get
*/
function get(name) {
return formatMap[name] || null;
}
/**
* Check whether formatter with specified name exists.
*
* @param {String} name
* Name that should be checked.
* @return {Boolean}
* <code>true</code> if there is a formatter with the specified name,
* <code>false</code> if no one of formatters has the specified name.
* @alias module:format.exists
* @see {@link module:format.get get}
*/
function exists(name) {
return get(name) !== null;
}
/**
* Return object that represents all available formatters.
*
* @return {Object}
* Object that represents all available formatters.
* Fields are names of formatters, values are corresponding formatters.
* @alias module:format.getMap
*/
function getMap() {
return formatMap;
}
/**
* Return list containing names of all available formatters.
*
* @return {Array}
* List containing names of all available formatters.
* @alias module:format.getNameList
*/
function getNameList() {
var result = [],
sName;
for (sName in formatMap) {
result.push(sName);
}
return result;
}
/**
* Set formatter with specified name.
*
* @param {String} name
* Name of formatter.
* @param {Function | null} format
* Function that represents formatter.
* @return {Object}
* Object that represents module <code>exports</code>.
* @throws Will throw an error if format is not a function.
* @alias module:format.set
*/
function set(name, format) {
/*jshint newcap:false*/
if (typeof format !== "function") {
throw Error("Format should be a function");
}
formatMap[name] = format;
return exports;
}
/**
* Remove formatter with specified name.
*
* @param {String} name
* Name of formatter.
* @return {Function | null}
* Function that represents formatter
* or <code>null</code> if no one of formatters has the specified name.
* @alias module:format.remove
*/
function remove(name) {
var format = formatMap[name] || null;
if (format) {
delete formatMap[name];
}
return format;
}
// Set predefined formatters
set("text", require("./text"));
set("json", require("./json"));
set("markdown", require("./markdown"));
set("raw", require("./raw"));
//Exports
exports.format = format;
exports.get = get;
exports.exists = exists;
exports.getMap = getMap;
exports.getNameList = getNameList;
exports.set = set;
exports.remove = remove;
</pre>
</article>
</section>
</div>
<div class="clearfix"></div>
<footer>
<span class="copyright">
Copyright (c) 2014 Denis Sikuler
</span>
<br />
<span class="jsdoc-message">
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a>
on Thu Aug 21 2014 23:46:51 GMT+0400 (MSK) using the <a href="https://github.com/terryweiss/docstrap">DocStrap template</a>.
</span>
</footer>
</div>
<br clear="both">
</div>
</div>
<script src="scripts/sunlight.js"></script>
<script src="scripts/sunlight.javascript.js"></script>
<script src="scripts/sunlight-plugin.doclinks.js"></script>
<script src="scripts/sunlight-plugin.linenumbers.js"></script>
<script src="scripts/sunlight-plugin.menu.js"></script>
<script src="scripts/jquery.min.js"></script>
<script src="scripts/jquery.scrollTo.js"></script>
<script src="scripts/jquery.localScroll.js"></script>
<script src="scripts/bootstrap-dropdown.js"></script>
<script src="scripts/toc.js"></script>
<script> Sunlight.highlightAll({lineNumbers:true, showMenu: true, enableDoclinks :true}); </script>
<script>
$( function () {
$( "#toc" ).toc( {
selectors : "h1,h2,h3,h4",
showAndHide : false,
scrollTo : 60
} );
$( "#toc>ul" ).addClass( "nav nav-pills nav-stacked" );
$( "#main span[id^='toc']" ).addClass( "toc-shim" );
} );
</script>
</body>
</html>