First basic working state

This commit is contained in:
Timothy Warren 2014-10-23 10:53:16 -04:00
parent 93870118cf
commit 490ec86bf7
84 changed files with 101947 additions and 3505 deletions

View File

@ -6,7 +6,7 @@ module.exports = function(grunt) {
pkg: grunt.file.readJSON('package.json'), pkg: grunt.file.readJSON('package.json'),
jsdoc: { jsdoc: {
dist: { dist: {
src: ['lib/*.js', 'lib/drivers/*.js', 'README.md'], src: ['lib/*.js', 'README.md'],
options: { options: {
template: 'node_modules/grunt-jsdoc/node_modules/ink-docstrap/template', template: 'node_modules/grunt-jsdoc/node_modules/ink-docstrap/template',
configure: 'node_modules/grunt-jsdoc/node_modules/ink-docstrap/template/jsdoc.conf.json', configure: 'node_modules/grunt-jsdoc/node_modules/ink-docstrap/template/jsdoc.conf.json',
@ -15,7 +15,10 @@ module.exports = function(grunt) {
} }
}, },
nodeunit: { nodeunit: {
all: ['tests/**/*_test.js'] all: ['tests/**/*_test.js'],
options: {
reporter: 'verbose'
}
} }
}); });

View File

@ -2,16 +2,22 @@
A node query builder for various SQL databases, based on CodeIgniter's query builder. A node query builder for various SQL databases, based on CodeIgniter's query builder.
### Probable use ### Basic use
var query = require('node-query'); var nodeQuery = require('node-query');
var mysql = ... // Database module connection
// Three arguments: database type, database connection, database connection library
var query = nodeQuery('mysql', mysql, 'mysql2');
var res = query query.select('foo')
.select('foo')
.from('bar') .from('bar')
.where('x', 3) .where('x', 3)
.orWhere('y', 2) .orWhere('y', 2)
.orderBy('x') .orderBy('x')
.limit(2, 3) .limit(2, 3)
.get(); .get(function(err, result) {
// Database module result handling
});

189
docs/adapter.js.html Normal file
View File

@ -0,0 +1,189 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>DocStrap Source: adapter.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.cosmo.css">
</head>
<body>
<div class="container-fluid">
<div class="navbar navbar-fixed-top navbar-inverse">
<div class="navbar-inner">
<a class="brand" href="index.html">DocStrap</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-adapter.html">adapter</a>
</li>
<li>
<a href="module-driver.html">driver</a>
</li>
<li>
<a href="module-helpers.html">helpers</a>
</li>
<li>
<a href="module-node-query.html">node-query</a>
</li>
<li>
<a href="module-query-builder.html">query-builder</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
<div class="row-fluid">
<div class="span12">
<div id="main">
<h1 class="page-title">Source: adapter.js</h1>
<section>
<article>
<pre
class="sunlight-highlight-javascript linenums">'use strict';
/** @module adapter */
module.exports = {
/**
* Run the sql query as a prepared statement
*
* @param {String} sql - The sql with placeholders
* @param {Array} params - The values to insert into the query
* @param {Function} callback - Callback to run when a response is recieved
* @return void
*/
execute: function(sql, params, callback) {
throw new Error("Correct adapter not defined for query execution");
}
};</pre>
</article>
</section>
</div>
<div class="clearfix"></div>
<footer>
<span class="copyright">
DocStrap Copyright © 2012-2014 The contributors to the JSDoc3 and DocStrap projects.
</span>
<br />
<span class="jsdoc-message">
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.3.0-alpha9</a>
on Thu Oct 23rd 2014 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/docstrap.lib.js"></script>
<script src="scripts/bootstrap-dropdown.js"></script>
<script src="scripts/toc.js"></script>
<script>
$( function () {
$( "[id*='$']" ).each( function () {
var $this = $( this );
$this.attr( "id", $this.attr( "id" ).replace( "$", "__" ) );
} );
$( "#toc" ).toc( {
anchorName : function ( i, heading, prefix ) {
return $( heading ).attr( "id" ) || ( prefix + i );
},
selectors : "h1,h2,h3,h4",
showAndHide : false,
scrollTo : "100px"
} );
$( "#toc>ul" ).addClass( "nav nav-pills nav-stacked" );
$( "#main span[id^='toc']" ).addClass( "toc-shim" );
$( '.dropdown-toggle' ).dropdown();
// $( ".tutorial-section pre, .readme-section pre" ).addClass( "sunlight-highlight-javascript" ).addClass( "linenums" );
$( ".tutorial-section pre, .readme-section pre" ).each( function () {
var $this = $( this );
var example = $this.find( "code" );
exampleText = example.html();
var lang = /{@lang (.*?)}/.exec( exampleText );
if ( lang && lang[1] ) {
exampleText = exampleText.replace( lang[0], "" );
example.html( exampleText );
lang = lang[1];
} else {
lang = "javascript";
}
if ( lang ) {
$this
.addClass( "sunlight-highlight-" + lang )
.addClass( "linenums" )
.html( example.html() );
}
} );
Sunlight.highlightAll( {
lineNumbers : true,
showMenu : true,
enableDoclinks : true
} );
} );
</script>
<!--Navigation and Symbol Display-->
<!--Google Analytics-->
</body>
</html>

190
docs/adapters_mysql.js.html Normal file
View File

@ -0,0 +1,190 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>DocStrap Source: adapters/mysql.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.cosmo.css">
</head>
<body>
<div class="container-fluid">
<div class="navbar navbar-fixed-top navbar-inverse">
<div class="navbar-inner">
<a class="brand" href="index.html">DocStrap</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-adapter.html">adapter</a>
</li>
<li>
<a href="module-adapters_mysql.html">adapters/mysql</a>
</li>
<li>
<a href="module-adapters_mysql2.html">adapters/mysql2</a>
</li>
<li>
<a href="module-driver.html">driver</a>
</li>
<li>
<a href="module-helpers.html">helpers</a>
</li>
<li>
<a href="module-node-query.html">node-query</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
<div class="row-fluid">
<div class="span12">
<div id="main">
<h1 class="page-title">Source: adapters/mysql.js</h1>
<section>
<article>
<pre
class="sunlight-highlight-javascript linenums">/** @module adapters/mysql */
'use strict';
var adapter = require('../lib/adapter.js');
module.exports = function(instance) {
adapter.execute = function(sql, params, callback) {
instance.query(sql, params, callback);
};
return adapter;
}</pre>
</article>
</section>
</div>
<div class="clearfix"></div>
<footer>
<span class="copyright">
DocStrap Copyright © 2012-2014 The contributors to the JSDoc3 and DocStrap projects.
</span>
<br />
<span class="jsdoc-message">
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.3.0-dev</a>
on Tue Oct 21st 2014 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/docstrap.lib.js"></script>
<script src="scripts/bootstrap-dropdown.js"></script>
<script src="scripts/toc.js"></script>
<script>
$( function () {
$( "[id*='$']" ).each( function () {
var $this = $( this );
$this.attr( "id", $this.attr( "id" ).replace( "$", "__" ) );
} );
$( "#toc" ).toc( {
anchorName : function ( i, heading, prefix ) {
return $( heading ).attr( "id" ) || ( prefix + i );
},
selectors : "h1,h2,h3,h4",
showAndHide : false,
scrollTo : "100px"
} );
$( "#toc>ul" ).addClass( "nav nav-pills nav-stacked" );
$( "#main span[id^='toc']" ).addClass( "toc-shim" );
$( '.dropdown-toggle' ).dropdown();
// $( ".tutorial-section pre, .readme-section pre" ).addClass( "sunlight-highlight-javascript" ).addClass( "linenums" );
$( ".tutorial-section pre, .readme-section pre" ).each( function () {
var $this = $( this );
var example = $this.find( "code" );
exampleText = example.html();
var lang = /{@lang (.*?)}/.exec( exampleText );
if ( lang && lang[1] ) {
exampleText = exampleText.replace( lang[0], "" );
example.html( exampleText );
lang = lang[1];
} else {
lang = "javascript";
}
if ( lang ) {
$this
.addClass( "sunlight-highlight-" + lang )
.addClass( "linenums" )
.html( example.html() );
}
} );
Sunlight.highlightAll( {
lineNumbers : true,
showMenu : true,
enableDoclinks : true
} );
} );
</script>
<!--Navigation and Symbol Display-->
<!--Google Analytics-->
</body>
</html>

View File

@ -0,0 +1,190 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>DocStrap Source: adapters/mysql2.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.cosmo.css">
</head>
<body>
<div class="container-fluid">
<div class="navbar navbar-fixed-top navbar-inverse">
<div class="navbar-inner">
<a class="brand" href="index.html">DocStrap</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-adapter.html">adapter</a>
</li>
<li>
<a href="module-adapters_mysql.html">adapters/mysql</a>
</li>
<li>
<a href="module-adapters_mysql2.html">adapters/mysql2</a>
</li>
<li>
<a href="module-driver.html">driver</a>
</li>
<li>
<a href="module-helpers.html">helpers</a>
</li>
<li>
<a href="module-node-query.html">node-query</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
<div class="row-fluid">
<div class="span12">
<div id="main">
<h1 class="page-title">Source: adapters/mysql2.js</h1>
<section>
<article>
<pre
class="sunlight-highlight-javascript linenums">/** @module adapters/mysql2 */
'use strict';
var adapter = require('../lib/adapter.js');
module.exports = function(instance) {
adapter.execute = function(sql, params, callback) {
instance.execute(sql, params, callback);
};
return adapter;
}</pre>
</article>
</section>
</div>
<div class="clearfix"></div>
<footer>
<span class="copyright">
DocStrap Copyright © 2012-2014 The contributors to the JSDoc3 and DocStrap projects.
</span>
<br />
<span class="jsdoc-message">
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.3.0-dev</a>
on Tue Oct 21st 2014 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/docstrap.lib.js"></script>
<script src="scripts/bootstrap-dropdown.js"></script>
<script src="scripts/toc.js"></script>
<script>
$( function () {
$( "[id*='$']" ).each( function () {
var $this = $( this );
$this.attr( "id", $this.attr( "id" ).replace( "$", "__" ) );
} );
$( "#toc" ).toc( {
anchorName : function ( i, heading, prefix ) {
return $( heading ).attr( "id" ) || ( prefix + i );
},
selectors : "h1,h2,h3,h4",
showAndHide : false,
scrollTo : "100px"
} );
$( "#toc>ul" ).addClass( "nav nav-pills nav-stacked" );
$( "#main span[id^='toc']" ).addClass( "toc-shim" );
$( '.dropdown-toggle' ).dropdown();
// $( ".tutorial-section pre, .readme-section pre" ).addClass( "sunlight-highlight-javascript" ).addClass( "linenums" );
$( ".tutorial-section pre, .readme-section pre" ).each( function () {
var $this = $( this );
var example = $this.find( "code" );
exampleText = example.html();
var lang = /{@lang (.*?)}/.exec( exampleText );
if ( lang && lang[1] ) {
exampleText = exampleText.replace( lang[0], "" );
example.html( exampleText );
lang = lang[1];
} else {
lang = "javascript";
}
if ( lang ) {
$this
.addClass( "sunlight-highlight-" + lang )
.addClass( "linenums" )
.html( example.html() );
}
} );
Sunlight.highlightAll( {
lineNumbers : true,
showMenu : true,
enableDoclinks : true
} );
} );
</script>
<!--Navigation and Symbol Display-->
<!--Google Analytics-->
</body>
</html>

View File

@ -1,42 +1,84 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<title>JSDoc: Source: driver.js</title> <title>DocStrap Source: driver.js</title>
<script src="scripts/prettify/prettify.js"> </script> <!--[if lt IE 9]>
<script src="scripts/prettify/lang-css.js"> </script> <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<!--[if lt IE 9]> <![endif]-->
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script> <link type="text/css" rel="stylesheet" href="styles/sunlight.default.css">
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css"> <link type="text/css" rel="stylesheet" href="styles/site.cosmo.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head> </head>
<body> <body>
<div class="container-fluid">
<div class="navbar navbar-fixed-top navbar-inverse">
<div class="navbar-inner">
<a class="brand" href="index.html">DocStrap</a>
<ul class="nav">
<li class="dropdown">
<a href="modules.list.html" class="dropdown-toggle" data-toggle="dropdown">Modules<b
class="caret"></b></a>
<div id="main"> <ul class="dropdown-menu ">
<h1 class="page-title">Source: driver.js</h1> <li>
<a href="module-adapter.html">adapter</a>
</li>
<li>
<a href="module-driver.html">driver</a>
</li>
<li>
<a href="module-helpers.html">helpers</a>
</li>
<li>
<a href="module-node-query.html">node-query</a>
</li>
<li>
<a href="module-query-builder.html">query-builder</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
<div class="row-fluid">
<section>
<article>
<pre class="prettyprint source"><code>/** @module driver */
"use strict";
<div class="span12">
<div id="main">
<h1 class="page-title">Source: driver.js</h1>
<section>
<article>
<pre
class="sunlight-highlight-javascript linenums">'use strict';
var helpers = require('./helpers'); var helpers = require('./helpers');
/** /**
* Base Database Driver * Base Database Driver
* *
* @type {{identifierChar: string, quoteIdentifiers: quoteIdentifiers}} * @module driver
*/ */
module.exports = { var d = {
identifierChar: '"', identifierChar: '"',
tablePrefix: null, tablePrefix: null,
@ -48,8 +90,8 @@ module.exports = {
* @private * @private
*/ */
_quote: function(str) { _quote: function(str) {
return (helpers.isString(str) && ! (str.startsWith(this.identifierChar) || str.endsWith(this.identifierChar))) return (helpers.isString(str) &amp;&amp; ! (str.startsWith(d.identifierChar) || str.endsWith(d.identifierChar)))
? this.identifierChar + str + this.identifierChar ? d.identifierChar + str + d.identifierChar
: str; : str;
}, },
@ -61,12 +103,12 @@ module.exports = {
* @private * @private
*/ */
_prefix: function(str) { _prefix: function(str) {
if (str.startsWith(this.prefix)) if (str.startsWith(d.prefix))
{ {
return str; return str;
} }
return this.prefix + str; return d.prefix + str;
}, },
/** /**
@ -95,7 +137,7 @@ module.exports = {
* @return {String} * @return {String}
*/ */
prefixTable: function(table) { prefixTable: function(table) {
if (this.tablePrefix) if (d.tablePrefix)
{ {
// Split identifier by period, will split into: // Split identifier by period, will split into:
// database.schema.table OR // database.schema.table OR
@ -106,7 +148,7 @@ module.exports = {
var segments = idents.length; var segments = idents.length;
// Add the database prefix // Add the database prefix
idents[segments - 1] = this._prefix(idents[segments - 1]); idents[segments - 1] = d._prefix(idents[segments - 1]);
table = idents.join('.'); table = idents.join('.');
} }
@ -121,10 +163,10 @@ module.exports = {
* @return {String} * @return {String}
*/ */
quoteTable: function(table) { quoteTable: function(table) {
table = this.prefixTable(table); table = d.prefixTable(table);
// Quote after prefix // Quote after prefix
return this.quoteIdentifiers(table); return d.quoteIdentifiers(table);
}, },
/** /**
@ -139,40 +181,121 @@ module.exports = {
// Recurse for arrays of identifiiers // Recurse for arrays of identifiiers
if (Array.isArray(str)) if (Array.isArray(str))
{ {
return str.map(this.quoteIdentifiers); return str.map(d.quoteIdentifiers);
} }
// Handle commas // Handle commas
str = helpers.splitTrim(',', str); str = helpers.splitTrim(',', str);
// Split identifiers by period // Split identifiers by period
hiers = str.split('.').map(String.trim).map(this._quote); hiers = str.split('.').map(d._quote);
raw = hiers.join('.'); raw = hiers.join('.');
// TODO: fix functions // TODO: fix functions
return raw; return raw;
} }
};</code></pre> };
</article>
</section> module.exports = d;</pre>
</article>
</section>
</div>
<div class="clearfix"></div>
<footer>
<span class="copyright">
DocStrap Copyright © 2012-2014 The contributors to the JSDoc3 and DocStrap projects.
</span>
<br />
<span class="jsdoc-message">
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.3.0-alpha9</a>
on Thu Oct 23rd 2014 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/docstrap.lib.js"></script>
<script src="scripts/bootstrap-dropdown.js"></script>
<script src="scripts/toc.js"></script>
<script>
$( function () {
$( "[id*='$']" ).each( function () {
var $this = $( this );
$this.attr( "id", $this.attr( "id" ).replace( "$", "__" ) );
} );
$( "#toc" ).toc( {
anchorName : function ( i, heading, prefix ) {
return $( heading ).attr( "id" ) || ( prefix + i );
},
selectors : "h1,h2,h3,h4",
showAndHide : false,
scrollTo : "100px"
} );
$( "#toc>ul" ).addClass( "nav nav-pills nav-stacked" );
$( "#main span[id^='toc']" ).addClass( "toc-shim" );
$( '.dropdown-toggle' ).dropdown();
// $( ".tutorial-section pre, .readme-section pre" ).addClass( "sunlight-highlight-javascript" ).addClass( "linenums" );
$( ".tutorial-section pre, .readme-section pre" ).each( function () {
var $this = $( this );
var example = $this.find( "code" );
exampleText = example.html();
var lang = /{@lang (.*?)}/.exec( exampleText );
if ( lang && lang[1] ) {
exampleText = exampleText.replace( lang[0], "" );
example.html( exampleText );
lang = lang[1];
} else {
lang = "javascript";
}
if ( lang ) {
$this
.addClass( "sunlight-highlight-" + lang )
.addClass( "linenums" )
.html( example.html() );
}
} );
Sunlight.highlightAll( {
lineNumbers : true,
showMenu : true,
enableDoclinks : true
} );
} );
</script>
<!--Navigation and Symbol Display-->
</div>
<nav> <!--Google Analytics-->
<h2><a href="index.html">Index</a></h2><h3>Modules</h3><ul><li><a href="module-driver.html">driver</a></li><li><a href="module-helpers.html">helpers</a></li><li><a href="module-query-builder.html">query-builder</a></li></ul><h3><a href="global.html">Global</a></h3>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Mon Oct 20 2014 16:34:02 GMT-0400 (EDT)
</footer>
<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body> </body>
</html> </html>

203
docs/drivers_mysql.js.html Normal file
View File

@ -0,0 +1,203 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>DocStrap Source: drivers/mysql.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.cosmo.css">
</head>
<body>
<div class="container-fluid">
<div class="navbar navbar-fixed-top navbar-inverse">
<div class="navbar-inner">
<a class="brand" href="index.html">DocStrap</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-adapter.html">adapter</a>
</li>
<li>
<a href="module-adapters_mysql.html">adapters/mysql</a>
</li>
<li>
<a href="module-adapters_mysql2.html">adapters/mysql2</a>
</li>
<li>
<a href="module-driver.html">driver</a>
</li>
<li>
<a href="module-helpers.html">helpers</a>
</li>
<li>
<a href="module-node-query.html">node-query</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
<div class="row-fluid">
<div class="span12">
<div id="main">
<h1 class="page-title">Source: drivers/mysql.js</h1>
<section>
<article>
<pre
class="sunlight-highlight-javascript linenums">"use strict";
/**
* Driver for MySQL databases
*
* @returns {driver}
*/
module.exports = function() {
var driver = require('../driver'),
helpers = require('../helpers');
driver.identifierChar = '`';
/**
* Override default limit method because mysql likes to be different
*/
driver.limit = function(sql, limit, offset) {
if ( ! helpers.isNumber(offset))
{
return sql += " LIMIT " + limit;
}
return sql += " LIMIT " + offset + "," + limit;
};
return driver;
};</pre>
</article>
</section>
</div>
<div class="clearfix"></div>
<footer>
<span class="copyright">
DocStrap Copyright © 2012-2014 The contributors to the JSDoc3 and DocStrap projects.
</span>
<br />
<span class="jsdoc-message">
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.3.0-dev</a>
on Tue Oct 21st 2014 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/docstrap.lib.js"></script>
<script src="scripts/bootstrap-dropdown.js"></script>
<script src="scripts/toc.js"></script>
<script>
$( function () {
$( "[id*='$']" ).each( function () {
var $this = $( this );
$this.attr( "id", $this.attr( "id" ).replace( "$", "__" ) );
} );
$( "#toc" ).toc( {
anchorName : function ( i, heading, prefix ) {
return $( heading ).attr( "id" ) || ( prefix + i );
},
selectors : "h1,h2,h3,h4",
showAndHide : false,
scrollTo : "100px"
} );
$( "#toc>ul" ).addClass( "nav nav-pills nav-stacked" );
$( "#main span[id^='toc']" ).addClass( "toc-shim" );
$( '.dropdown-toggle' ).dropdown();
// $( ".tutorial-section pre, .readme-section pre" ).addClass( "sunlight-highlight-javascript" ).addClass( "linenums" );
$( ".tutorial-section pre, .readme-section pre" ).each( function () {
var $this = $( this );
var example = $this.find( "code" );
exampleText = example.html();
var lang = /{@lang (.*?)}/.exec( exampleText );
if ( lang && lang[1] ) {
exampleText = exampleText.replace( lang[0], "" );
example.html( exampleText );
lang = lang[1];
} else {
lang = "javascript";
}
if ( lang ) {
$this
.addClass( "sunlight-highlight-" + lang )
.addClass( "linenums" )
.html( example.html() );
}
} );
Sunlight.highlightAll( {
lineNumbers : true,
showMenu : true,
enableDoclinks : true
} );
} );
</script>
<!--Navigation and Symbol Display-->
<!--Google Analytics-->
</body>
</html>

188
docs/drivers_pg.js.html Normal file
View File

@ -0,0 +1,188 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>DocStrap Source: drivers/pg.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.cosmo.css">
</head>
<body>
<div class="container-fluid">
<div class="navbar navbar-fixed-top navbar-inverse">
<div class="navbar-inner">
<a class="brand" href="index.html">DocStrap</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-adapter.html">adapter</a>
</li>
<li>
<a href="module-adapters_mysql.html">adapters/mysql</a>
</li>
<li>
<a href="module-adapters_mysql2.html">adapters/mysql2</a>
</li>
<li>
<a href="module-driver.html">driver</a>
</li>
<li>
<a href="module-helpers.html">helpers</a>
</li>
<li>
<a href="module-node-query.html">node-query</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
<div class="row-fluid">
<div class="span12">
<div id="main">
<h1 class="page-title">Source: drivers/pg.js</h1>
<section>
<article>
<pre
class="sunlight-highlight-javascript linenums">"use strict";
/**
* Driver for PostgreSQL databases
*
* @returns {driver}
*/
module.exports = function() {
var driver = require('../driver');
return driver;
};</pre>
</article>
</section>
</div>
<div class="clearfix"></div>
<footer>
<span class="copyright">
DocStrap Copyright © 2012-2014 The contributors to the JSDoc3 and DocStrap projects.
</span>
<br />
<span class="jsdoc-message">
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.3.0-dev</a>
on Tue Oct 21st 2014 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/docstrap.lib.js"></script>
<script src="scripts/bootstrap-dropdown.js"></script>
<script src="scripts/toc.js"></script>
<script>
$( function () {
$( "[id*='$']" ).each( function () {
var $this = $( this );
$this.attr( "id", $this.attr( "id" ).replace( "$", "__" ) );
} );
$( "#toc" ).toc( {
anchorName : function ( i, heading, prefix ) {
return $( heading ).attr( "id" ) || ( prefix + i );
},
selectors : "h1,h2,h3,h4",
showAndHide : false,
scrollTo : "100px"
} );
$( "#toc>ul" ).addClass( "nav nav-pills nav-stacked" );
$( "#main span[id^='toc']" ).addClass( "toc-shim" );
$( '.dropdown-toggle' ).dropdown();
// $( ".tutorial-section pre, .readme-section pre" ).addClass( "sunlight-highlight-javascript" ).addClass( "linenums" );
$( ".tutorial-section pre, .readme-section pre" ).each( function () {
var $this = $( this );
var example = $this.find( "code" );
exampleText = example.html();
var lang = /{@lang (.*?)}/.exec( exampleText );
if ( lang && lang[1] ) {
exampleText = exampleText.replace( lang[0], "" );
example.html( exampleText );
lang = lang[1];
} else {
lang = "javascript";
}
if ( lang ) {
$this
.addClass( "sunlight-highlight-" + lang )
.addClass( "linenums" )
.html( example.html() );
}
} );
Sunlight.highlightAll( {
lineNumbers : true,
showMenu : true,
enableDoclinks : true
} );
} );
</script>
<!--Navigation and Symbol Display-->
<!--Google Analytics-->
</body>
</html>

250
docs/es6-polyfill.js.html Normal file
View File

@ -0,0 +1,250 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>DocStrap Source: es6-polyfill.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.cosmo.css">
</head>
<body>
<div class="container-fluid">
<div class="navbar navbar-fixed-top navbar-inverse">
<div class="navbar-inner">
<a class="brand" href="index.html">DocStrap</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-adapter.html">adapter</a>
</li>
<li>
<a href="module-driver.html">driver</a>
</li>
<li>
<a href="module-helpers.html">helpers</a>
</li>
<li>
<a href="module-node-query.html">node-query</a>
</li>
<li>
<a href="module-query-builder.html">query-builder</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
<div class="row-fluid">
<div class="span12">
<div id="main">
<h1 class="page-title">Source: es6-polyfill.js</h1>
<section>
<article>
<pre
class="sunlight-highlight-javascript linenums">/**
* Polyfills for very handy methods that are standardized, but not fully implemented in Javascript engines
*/
module.exports = (function() {
if (!Array.prototype.fill) {
Array.prototype.fill = function(value) {
// Steps 1-2.
if (this == null) {
throw new TypeError('this is null or not defined');
}
var O = Object(this);
// Steps 3-5.
var len = O.length >>> 0;
// Steps 6-7.
var start = arguments[1];
var relativeStart = start >> 0;
// Step 8.
var k = relativeStart &lt; 0 ?
Math.max(len + relativeStart, 0) :
Math.min(relativeStart, len);
// Steps 9-10.
var end = arguments[2];
var relativeEnd = end === undefined ?
len : end >> 0;
// Step 11.
var final = relativeEnd &lt; 0 ?
Math.max(len + relativeEnd, 0) :
Math.min(relativeEnd, len);
// Step 12.
while (k &lt; final) {
O[k] = value;
k++;
}
// Step 13.
return O;
};
}
if ( !String.prototype.contains ) {
String.prototype.contains = function() {
return String.prototype.indexOf.apply( this, arguments ) !== -1;
};
}
if (!String.prototype.startsWith) {
Object.defineProperty(String.prototype, 'startsWith', {
enumerable: false,
configurable: false,
writable: false,
value: function (searchString, position) {
position = position || 0;
return this.lastIndexOf(searchString, position) === position;
}
});
}
if (!String.prototype.endsWith) {
Object.defineProperty(String.prototype, 'endsWith', {
value: function (searchString, position) {
var subjectString = this.toString();
if (position === undefined || position > subjectString.length) {
position = subjectString.length;
}
position -= searchString.length;
var lastIndex = subjectString.indexOf(searchString, position);
return lastIndex !== -1 &amp;&amp; lastIndex === position;
}
});
}
}());</pre>
</article>
</section>
</div>
<div class="clearfix"></div>
<footer>
<span class="copyright">
DocStrap Copyright © 2012-2014 The contributors to the JSDoc3 and DocStrap projects.
</span>
<br />
<span class="jsdoc-message">
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.3.0-alpha9</a>
on Thu Oct 23rd 2014 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/docstrap.lib.js"></script>
<script src="scripts/bootstrap-dropdown.js"></script>
<script src="scripts/toc.js"></script>
<script>
$( function () {
$( "[id*='$']" ).each( function () {
var $this = $( this );
$this.attr( "id", $this.attr( "id" ).replace( "$", "__" ) );
} );
$( "#toc" ).toc( {
anchorName : function ( i, heading, prefix ) {
return $( heading ).attr( "id" ) || ( prefix + i );
},
selectors : "h1,h2,h3,h4",
showAndHide : false,
scrollTo : "100px"
} );
$( "#toc>ul" ).addClass( "nav nav-pills nav-stacked" );
$( "#main span[id^='toc']" ).addClass( "toc-shim" );
$( '.dropdown-toggle' ).dropdown();
// $( ".tutorial-section pre, .readme-section pre" ).addClass( "sunlight-highlight-javascript" ).addClass( "linenums" );
$( ".tutorial-section pre, .readme-section pre" ).each( function () {
var $this = $( this );
var example = $this.find( "code" );
exampleText = example.html();
var lang = /{@lang (.*?)}/.exec( exampleText );
if ( lang && lang[1] ) {
exampleText = exampleText.replace( lang[0], "" );
example.html( exampleText );
lang = lang[1];
} else {
lang = "javascript";
}
if ( lang ) {
$this
.addClass( "sunlight-highlight-" + lang )
.addClass( "linenums" )
.html( example.html() );
}
} );
Sunlight.highlightAll( {
lineNumbers : true,
showMenu : true,
enableDoclinks : true
} );
} );
</script>
<!--Navigation and Symbol Display-->
<!--Google Analytics-->
</body>
</html>

View File

@ -1,183 +1,445 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<title>JSDoc: Global</title> <title>DocStrap Global</title>
<script src="scripts/prettify/prettify.js"> </script> <!--[if lt IE 9]>
<script src="scripts/prettify/lang-css.js"> </script> <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<!--[if lt IE 9]> <![endif]-->
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script> <link type="text/css" rel="stylesheet" href="styles/sunlight.default.css">
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css"> <link type="text/css" rel="stylesheet" href="styles/site.cosmo.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head> </head>
<body> <body>
<div class="container-fluid">
<div class="navbar navbar-fixed-top navbar-inverse">
<div class="navbar-inner">
<a class="brand" href="index.html">DocStrap</a>
<ul class="nav">
<li class="dropdown">
<a href="modules.list.html" class="dropdown-toggle" data-toggle="dropdown">Modules<b
class="caret"></b></a>
<div id="main"> <ul class="dropdown-menu ">
<h1 class="page-title">Global</h1> <li>
<a href="module-adapter.html">adapter</a>
</li>
<li>
<a href="module-driver.html">driver</a>
</li>
<li>
<a href="module-helpers.html">helpers</a>
</li>
<li>
<a href="module-query-builder.html">query-builder</a>
</li>
</ul>
</li>
<li class="dropdown">
<a href="global.html" class="dropdown-toggle" data-toggle="dropdown">Global<b
class="caret"></b></a>
<ul class="dropdown-menu ">
<li>
<a href="global.html#init">init</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
<div class="row-fluid">
<div class="span8">
<div id="main">
<h1 class="page-title">Global</h1>
<section>
<header>
<h2>
</h2>
</header>
<article>
<div class="container-overview">
<dl class="details">
</dl>
</div>
<h3 class="subsection-title">Methods</h3>
<dl>
<dt>
<h4 class="name" id="init"><span class="type-signature"></span>init<span class="signature">(drivername, connObject, connLib)</span><span class="type-signature"> &rarr; {queryBuilder}</span></h4>
</dt>
<dd>
<div class="description">
<p>Create a query builder object</p>
</div>
<h5>Parameters:</h5>
<table class="params table table-striped">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>drivername</code></td>
<td class="type">
<span class="param-type">String</span>
</td>
<td class="description last"><p>The name of the database type, eg. mysql or pg</p></td>
</tr>
<tr>
<td class="name"><code>connObject</code></td>
<td class="type">
<span class="param-type">Object</span>
</td>
<td class="description last"><p>A connection object from the database library you are connecting with</p></td>
</tr>
<tr>
<td class="name"><code>connLib</code></td>
<td class="type">
<span class="param-type">String</span>
</td>
<td class="description last"><p>The name of the db connection library you are using, eg. mysql or mysql2</p></td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source">
<ul class="dummy">
<li>
<a href="node-query.js.html">node-query.js</a>,
<a href="node-query.js.html#sunlight-1-line-11">line 11</a>
</li>
</ul>
</dd>
</dl>
<h5>Returns:</h5>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">queryBuilder</span>
</dd>
</dl>
</dd>
</dl>
</article>
</section>
</div>
<div class="clearfix"></div>
<footer>
<span class="copyright">
DocStrap Copyright © 2012-2014 The contributors to the JSDoc3 and DocStrap projects.
</span>
<br />
<span class="jsdoc-message">
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.3.0-alpha9</a>
on Thu Oct 23rd 2014 using the <a
href="https://github.com/terryweiss/docstrap">DocStrap template</a>.
</span>
</footer>
</div>
<div class="span3">
<div id="toc"></div>
</div>
<br clear="both">
</div>
</div>
<!--<script src="scripts/sunlight.js"></script>-->
<script src="scripts/docstrap.lib.js"></script>
<script src="scripts/bootstrap-dropdown.js"></script>
<script src="scripts/toc.js"></script>
<script>
$( function () {
$( "[id*='$']" ).each( function () {
var $this = $( this );
$this.attr( "id", $this.attr( "id" ).replace( "$", "__" ) );
} );
$( "#toc" ).toc( {
anchorName : function ( i, heading, prefix ) {
return $( heading ).attr( "id" ) || ( prefix + i );
},
selectors : "h1,h2,h3,h4",
showAndHide : false,
scrollTo : "100px"
} );
$( "#toc>ul" ).addClass( "nav nav-pills nav-stacked" );
$( "#main span[id^='toc']" ).addClass( "toc-shim" );
$( '.dropdown-toggle' ).dropdown();
// $( ".tutorial-section pre, .readme-section pre" ).addClass( "sunlight-highlight-javascript" ).addClass( "linenums" );
$( ".tutorial-section pre, .readme-section pre" ).each( function () {
var $this = $( this );
var example = $this.find( "code" );
exampleText = example.html();
var lang = /{@lang (.*?)}/.exec( exampleText );
if ( lang && lang[1] ) {
exampleText = exampleText.replace( lang[0], "" );
example.html( exampleText );
lang = lang[1];
} else {
lang = "javascript";
}
if ( lang ) {
$this
.addClass( "sunlight-highlight-" + lang )
.addClass( "linenums" )
.html( example.html() );
}
} );
Sunlight.highlightAll( {
lineNumbers : true,
showMenu : true,
enableDoclinks : true
} );
} );
</script>
<section> <!--Navigation and Symbol Display-->
<header>
<h2>
</h2>
</header>
<article>
<div class="container-overview">
<dl class="details">
</dl>
</div>
<h3 class="subsection-title">Members</h3>
<dl>
<dt>
<h4 class="name" id="module:driver"><span class="type-signature"></span>module:driver<span class="type-signature"> :Object</span></h4>
</dt>
<dd>
<div class="description">
Base Database Driver
</div>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">Object</span>
</li> <!--Google Analytics-->
</ul>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="driver.js.html">driver.js</a>, <a href="driver.js.html#line12">line 12</a>
</li></ul></dd>
</dl>
</dd>
</dl>
</article>
</section>
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Modules</h3><ul><li><a href="module-driver.html">driver</a></li><li><a href="module-helpers.html">helpers</a></li><li><a href="module-query-builder.html">query-builder</a></li></ul><h3><a href="global.html">Global</a></h3>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Mon Oct 20 2014 16:34:02 GMT-0400 (EDT)
</footer>
<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body> </body>
</html> </html>

View File

@ -1,61 +1,90 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<title>JSDoc: Source: helpers.js</title> <title>DocStrap Source: helpers.js</title>
<script src="scripts/prettify/prettify.js"> </script> <!--[if lt IE 9]>
<script src="scripts/prettify/lang-css.js"> </script> <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<!--[if lt IE 9]> <![endif]-->
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script> <link type="text/css" rel="stylesheet" href="styles/sunlight.default.css">
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css"> <link type="text/css" rel="stylesheet" href="styles/site.cosmo.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head> </head>
<body> <body>
<div class="container-fluid">
<div class="navbar navbar-fixed-top navbar-inverse">
<div class="navbar-inner">
<a class="brand" href="index.html">DocStrap</a>
<ul class="nav">
<li class="dropdown">
<a href="modules.list.html" class="dropdown-toggle" data-toggle="dropdown">Modules<b
class="caret"></b></a>
<div id="main"> <ul class="dropdown-menu ">
<h1 class="page-title">Source: helpers.js</h1> <li>
<a href="module-adapter.html">adapter</a>
</li>
<li>
<a href="module-driver.html">driver</a>
</li>
<li>
<a href="module-helpers.html">helpers</a>
</li>
<li>
<a href="module-node-query.html">node-query</a>
</li>
<li>
<a href="module-query-builder.html">query-builder</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
<div class="row-fluid">
<section>
<article>
<pre class="prettyprint source"><code>/** @module helpers */ <div class="span12">
<div id="main">
<h1 class="page-title">Source: helpers.js</h1>
<section>
<article>
<pre
class="sunlight-highlight-javascript linenums">/** @module helpers */
"use strict"; "use strict";
if (!String.prototype.startsWith) { require('./es6-polyfill');
Object.defineProperty(String.prototype, 'startsWith', {
enumerable: false,
configurable: false,
writable: false,
value: function (searchString, position) {
position = position || 0;
return this.lastIndexOf(searchString, position) === position;
}
});
}
if (!String.prototype.endsWith) { var h = {
Object.defineProperty(String.prototype, 'endsWith', { /**
value: function (searchString, position) { * Wrap String.prototype.trim in a way that is easily mappable
var subjectString = this.toString(); *
if (position === undefined || position > subjectString.length) { * @param {String} str - The string to trim
position = subjectString.length; * @return {String} - The trimmed string
} */
position -= searchString.length; stringTrim: function(str) {
var lastIndex = subjectString.indexOf(searchString, position); return str.trim();
return lastIndex !== -1 && lastIndex === position; },
}
});
}
module.exports = {
/** /**
* Split a string by a character, trim the string * Split a string by a character, trim the string
* and rejoin the string * and rejoin the string
@ -65,45 +94,150 @@ module.exports = {
* @return {String} * @return {String}
*/ */
splitTrim: function(char, string) { splitTrim: function(char, string) {
return string.split(char).map(String.trim).join(char); return string.split(char).map(h.stringTrim).join(char);
}, },
/** /**
* Determine whether an object is a string * Get the type of the variable passed
*
* @see https://techblog.badoo.com/blog/2013/11/01/type-checking-in-javascript/
* @see http://toddmotto.com/understanding-javascript-types-and-reliable-type-checking/
* @param {mixed} o
* @return {String}
*/
type: function (o) {
var type = Object.prototype.toString.call(o).slice(8, -1).toLowerCase();
// handle NaN and Infinity
if (type === 'number') {
if (isNaN(o)) {
return 'nan';
}
if (!isFinite(o)) {
return 'infinity';
}
}
return type;
},
/**
* Determine whether an object is scalar
*
* @param {mixed} obj * @param {mixed} obj
* @return {bool} * @return {bool}
*/ */
isString: function(obj) { isScalar: function(obj) {
return (typeof obj === 'string' || obj instanceof String); var scalar = ['string', 'number', 'boolean'];
}, return scalar.indexOf(h.type(obj)) !== -1;
/**
* Determine whether an object is numeric
* @param {mixed} obj
* @return {bool}
*/
isNumber: function(obj) {
return ! isNaN(parseFloat(obj)) && isFinite(obj);
} }
}; };
</code></pre>
</article> // Define an 'is' method for each type
</section> var types = ['Null','Undefined','Object','Array','String','Number','Boolean','Function','RegExp','NaN','Infinite'];
types.forEach(function (t) {
h['is' + t] = function (o) {
return h.type(o) === t.toLowerCase();
};
});
module.exports = h;</pre>
</article>
</section>
</div>
<div class="clearfix"></div>
<footer>
<span class="copyright">
DocStrap Copyright © 2012-2014 The contributors to the JSDoc3 and DocStrap projects.
</span>
<br />
<span class="jsdoc-message">
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.3.0-alpha9</a>
on Thu Oct 23rd 2014 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/docstrap.lib.js"></script>
<script src="scripts/bootstrap-dropdown.js"></script>
<script src="scripts/toc.js"></script>
<script>
$( function () {
$( "[id*='$']" ).each( function () {
var $this = $( this );
$this.attr( "id", $this.attr( "id" ).replace( "$", "__" ) );
} );
$( "#toc" ).toc( {
anchorName : function ( i, heading, prefix ) {
return $( heading ).attr( "id" ) || ( prefix + i );
},
selectors : "h1,h2,h3,h4",
showAndHide : false,
scrollTo : "100px"
} );
$( "#toc>ul" ).addClass( "nav nav-pills nav-stacked" );
$( "#main span[id^='toc']" ).addClass( "toc-shim" );
$( '.dropdown-toggle' ).dropdown();
// $( ".tutorial-section pre, .readme-section pre" ).addClass( "sunlight-highlight-javascript" ).addClass( "linenums" );
$( ".tutorial-section pre, .readme-section pre" ).each( function () {
var $this = $( this );
var example = $this.find( "code" );
exampleText = example.html();
var lang = /{@lang (.*?)}/.exec( exampleText );
if ( lang && lang[1] ) {
exampleText = exampleText.replace( lang[0], "" );
example.html( exampleText );
lang = lang[1];
} else {
lang = "javascript";
}
if ( lang ) {
$this
.addClass( "sunlight-highlight-" + lang )
.addClass( "linenums" )
.html( example.html() );
}
} );
Sunlight.highlightAll( {
lineNumbers : true,
showMenu : true,
enableDoclinks : true
} );
} );
</script>
<!--Navigation and Symbol Display-->
</div>
<nav> <!--Google Analytics-->
<h2><a href="index.html">Index</a></h2><h3>Modules</h3><ul><li><a href="module-driver.html">driver</a></li><li><a href="module-helpers.html">helpers</a></li><li><a href="module-query-builder.html">query-builder</a></li></ul><h3><a href="global.html">Global</a></h3>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Mon Oct 20 2014 16:34:02 GMT-0400 (EDT)
</footer>
<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body> </body>
</html> </html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -1,79 +1,213 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<title>JSDoc: Index</title> <title>DocStrap Index</title>
<script src="scripts/prettify/prettify.js"> </script> <!--[if lt IE 9]>
<script src="scripts/prettify/lang-css.js"> </script> <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<!--[if lt IE 9]> <![endif]-->
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script> <link type="text/css" rel="stylesheet" href="styles/sunlight.default.css">
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css"> <link type="text/css" rel="stylesheet" href="styles/site.cosmo.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head> </head>
<body> <body>
<div class="container-fluid">
<div class="navbar navbar-fixed-top navbar-inverse">
<div class="navbar-inner">
<a class="brand" href="index.html">DocStrap</a>
<ul class="nav">
<li class="dropdown">
<a href="modules.list.html" class="dropdown-toggle" data-toggle="dropdown">Modules<b
class="caret"></b></a>
<div id="main"> <ul class="dropdown-menu ">
<h1 class="page-title">Index</h1> <li>
<a href="module-adapter.html">adapter</a>
</li>
<li>
<a href="module-driver.html">driver</a>
</li>
<li>
<a href="module-helpers.html">helpers</a>
</li>
<li>
<a href="module-node-query.html">node-query</a>
</li>
<li>
<a href="module-query-builder.html">query-builder</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
<div class="row-fluid">
<div class="span8">
<div id="main">
<span class="page-title">Index</span>
<section class="readme-section">
<article><h1>Node-query</h1><p>A node query builder for various SQL databases, based on CodeIgniter's query builder.</p>
<h3>Basic use</h3><pre class="prettyprint source"><code>var nodeQuery = require('node-query');
<h3> </h3> var mysql = ... // Database module connection
// Three arguments: database type, database connection, database connection library
var query = nodeQuery('mysql', mysql, 'mysql2');
query.select('foo')
<section>
<article><h1>Node-query</h1>
<p>A node query builder for various SQL databases, based on CodeIgniter's query builder.</p>
<h3>Probable use</h3>
<pre><code>var query = require('node-query');
var res = query
.select('foo')
.from('bar') .from('bar')
.where('x', 3) .where('x', 3)
.orWhere('y', 2) .orWhere('y', 2)
.orderBy('x') .orderBy('x')
.limit(2, 3) .limit(2, 3)
.get();</code></pre></article> .get(function(err, result) {
</section> // Database module result handling
});</code></pre></article>
</section>
</div>
<div class="clearfix"></div>
<footer>
<span class="copyright">
DocStrap Copyright © 2012-2014 The contributors to the JSDoc3 and DocStrap projects.
</span>
<br />
<span class="jsdoc-message">
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.3.0-alpha9</a>
on Thu Oct 23rd 2014 using the <a
href="https://github.com/terryweiss/docstrap">DocStrap template</a>.
</span>
</footer>
</div>
<div class="span3">
<div id="toc"></div>
</div>
<br clear="both">
</div>
</div>
<!--<script src="scripts/sunlight.js"></script>-->
<script src="scripts/docstrap.lib.js"></script>
<script src="scripts/bootstrap-dropdown.js"></script>
<script src="scripts/toc.js"></script>
<script>
$( function () {
$( "[id*='$']" ).each( function () {
var $this = $( this );
$this.attr( "id", $this.attr( "id" ).replace( "$", "__" ) );
} );
$( "#toc" ).toc( {
anchorName : function ( i, heading, prefix ) {
return $( heading ).attr( "id" ) || ( prefix + i );
},
selectors : "h1,h2,h3,h4",
showAndHide : false,
scrollTo : "100px"
} );
$( "#toc>ul" ).addClass( "nav nav-pills nav-stacked" );
$( "#main span[id^='toc']" ).addClass( "toc-shim" );
$( '.dropdown-toggle' ).dropdown();
// $( ".tutorial-section pre, .readme-section pre" ).addClass( "sunlight-highlight-javascript" ).addClass( "linenums" );
$( ".tutorial-section pre, .readme-section pre" ).each( function () {
var $this = $( this );
var example = $this.find( "code" );
exampleText = example.html();
var lang = /{@lang (.*?)}/.exec( exampleText );
if ( lang && lang[1] ) {
exampleText = exampleText.replace( lang[0], "" );
example.html( exampleText );
lang = lang[1];
} else {
lang = "javascript";
}
if ( lang ) {
$this
.addClass( "sunlight-highlight-" + lang )
.addClass( "linenums" )
.html( example.html() );
}
} );
Sunlight.highlightAll( {
lineNumbers : true,
showMenu : true,
enableDoclinks : true
} );
} );
</script>
<!--Navigation and Symbol Display-->
<!--Google Analytics-->
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Modules</h3><ul><li><a href="module-driver.html">driver</a></li><li><a href="module-helpers.html">helpers</a></li><li><a href="module-query-builder.html">query-builder</a></li></ul><h3><a href="global.html">Global</a></h3>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Mon Oct 20 2014 16:34:02 GMT-0400 (EDT)
</footer>
<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body> </body>
</html> </html>

437
docs/module-adapter.html Normal file
View File

@ -0,0 +1,437 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>DocStrap Module: adapter</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.cosmo.css">
</head>
<body>
<div class="container-fluid">
<div class="navbar navbar-fixed-top navbar-inverse">
<div class="navbar-inner">
<a class="brand" href="index.html">DocStrap</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-adapter.html">adapter</a>
</li>
<li>
<a href="module-driver.html">driver</a>
</li>
<li>
<a href="module-helpers.html">helpers</a>
</li>
<li>
<a href="module-node-query.html">node-query</a>
</li>
<li>
<a href="module-query-builder.html">query-builder</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
<div class="row-fluid">
<div class="span8">
<div id="main">
<h1 class="page-title">Module: adapter</h1>
<section>
<header>
<h2>
adapter
</h2>
</header>
<article>
<div class="container-overview">
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source">
<ul class="dummy">
<li>
<a href="adapter.js.html">adapter.js</a>,
<a href="adapter.js.html#sunlight-1-line-3">line 3</a>
</li>
</ul>
</dd>
</dl>
</div>
<h3 class="subsection-title">Methods</h3>
<dl>
<dt>
<h4 class="name" id="execute"><span class="type-signature">&lt;static> </span>execute<span class="signature">(sql, params, callback)</span><span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
<p>Run the sql query as a prepared statement</p>
</div>
<h5>Parameters:</h5>
<table class="params table table-striped">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>sql</code></td>
<td class="type">
<span class="param-type">String</span>
</td>
<td class="description last"><p>The sql with placeholders</p></td>
</tr>
<tr>
<td class="name"><code>params</code></td>
<td class="type">
<span class="param-type">Array</span>
</td>
<td class="description last"><p>The values to insert into the query</p></td>
</tr>
<tr>
<td class="name"><code>callback</code></td>
<td class="type">
<span class="param-type">function</span>
</td>
<td class="description last"><p>Callback to run when a response is recieved</p></td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source">
<ul class="dummy">
<li>
<a href="adapter.js.html">adapter.js</a>,
<a href="adapter.js.html#sunlight-1-line-14">line 14</a>
</li>
</ul>
</dd>
</dl>
<h5>Returns:</h5>
<div class="param-desc">
<p>void</p>
</div>
</dd>
</dl>
</article>
</section>
</div>
<div class="clearfix"></div>
<footer>
<span class="copyright">
DocStrap Copyright © 2012-2014 The contributors to the JSDoc3 and DocStrap projects.
</span>
<br />
<span class="jsdoc-message">
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.3.0-alpha9</a>
on Thu Oct 23rd 2014 using the <a
href="https://github.com/terryweiss/docstrap">DocStrap template</a>.
</span>
</footer>
</div>
<div class="span3">
<div id="toc"></div>
</div>
<br clear="both">
</div>
</div>
<!--<script src="scripts/sunlight.js"></script>-->
<script src="scripts/docstrap.lib.js"></script>
<script src="scripts/bootstrap-dropdown.js"></script>
<script src="scripts/toc.js"></script>
<script>
$( function () {
$( "[id*='$']" ).each( function () {
var $this = $( this );
$this.attr( "id", $this.attr( "id" ).replace( "$", "__" ) );
} );
$( "#toc" ).toc( {
anchorName : function ( i, heading, prefix ) {
return $( heading ).attr( "id" ) || ( prefix + i );
},
selectors : "h1,h2,h3,h4",
showAndHide : false,
scrollTo : "100px"
} );
$( "#toc>ul" ).addClass( "nav nav-pills nav-stacked" );
$( "#main span[id^='toc']" ).addClass( "toc-shim" );
$( '.dropdown-toggle' ).dropdown();
// $( ".tutorial-section pre, .readme-section pre" ).addClass( "sunlight-highlight-javascript" ).addClass( "linenums" );
$( ".tutorial-section pre, .readme-section pre" ).each( function () {
var $this = $( this );
var example = $this.find( "code" );
exampleText = example.html();
var lang = /{@lang (.*?)}/.exec( exampleText );
if ( lang && lang[1] ) {
exampleText = exampleText.replace( lang[0], "" );
example.html( exampleText );
lang = lang[1];
} else {
lang = "javascript";
}
if ( lang ) {
$this
.addClass( "sunlight-highlight-" + lang )
.addClass( "linenums" )
.html( example.html() );
}
} );
Sunlight.highlightAll( {
lineNumbers : true,
showMenu : true,
enableDoclinks : true
} );
} );
</script>
<!--Navigation and Symbol Display-->
<!--Google Analytics-->
</body>
</html>

View File

@ -0,0 +1,255 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>DocStrap Module: adapters/mysql</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.cosmo.css">
</head>
<body>
<div class="container-fluid">
<div class="navbar navbar-fixed-top navbar-inverse">
<div class="navbar-inner">
<a class="brand" href="index.html">DocStrap</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-adapter.html">adapter</a>
</li>
<li>
<a href="module-adapters_mysql.html">adapters/mysql</a>
</li>
<li>
<a href="module-adapters_mysql2.html">adapters/mysql2</a>
</li>
<li>
<a href="module-driver.html">driver</a>
</li>
<li>
<a href="module-helpers.html">helpers</a>
</li>
<li>
<a href="module-node-query.html">node-query</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
<div class="row-fluid">
<div class="span8">
<div id="main">
<h1 class="page-title">Module: adapters/mysql</h1>
<section>
<header>
<h2>
adapters/mysql
</h2>
</header>
<article>
<div class="container-overview">
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source">
<ul class="dummy">
<li>
<a href="adapters_mysql.js.html">adapters/mysql.js</a>,
<a href="adapters_mysql.js.html#sunlight-1-line-1">line 1</a>
</li>
</ul>
</dd>
</dl>
</div>
</article>
</section>
</div>
<div class="clearfix"></div>
<footer>
<span class="copyright">
DocStrap Copyright © 2012-2014 The contributors to the JSDoc3 and DocStrap projects.
</span>
<br />
<span class="jsdoc-message">
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.3.0-dev</a>
on Tue Oct 21st 2014 using the <a
href="https://github.com/terryweiss/docstrap">DocStrap template</a>.
</span>
</footer>
</div>
<div class="span3">
<div id="toc"></div>
</div>
<br clear="both">
</div>
</div>
<!--<script src="scripts/sunlight.js"></script>-->
<script src="scripts/docstrap.lib.js"></script>
<script src="scripts/bootstrap-dropdown.js"></script>
<script src="scripts/toc.js"></script>
<script>
$( function () {
$( "[id*='$']" ).each( function () {
var $this = $( this );
$this.attr( "id", $this.attr( "id" ).replace( "$", "__" ) );
} );
$( "#toc" ).toc( {
anchorName : function ( i, heading, prefix ) {
return $( heading ).attr( "id" ) || ( prefix + i );
},
selectors : "h1,h2,h3,h4",
showAndHide : false,
scrollTo : "100px"
} );
$( "#toc>ul" ).addClass( "nav nav-pills nav-stacked" );
$( "#main span[id^='toc']" ).addClass( "toc-shim" );
$( '.dropdown-toggle' ).dropdown();
// $( ".tutorial-section pre, .readme-section pre" ).addClass( "sunlight-highlight-javascript" ).addClass( "linenums" );
$( ".tutorial-section pre, .readme-section pre" ).each( function () {
var $this = $( this );
var example = $this.find( "code" );
exampleText = example.html();
var lang = /{@lang (.*?)}/.exec( exampleText );
if ( lang && lang[1] ) {
exampleText = exampleText.replace( lang[0], "" );
example.html( exampleText );
lang = lang[1];
} else {
lang = "javascript";
}
if ( lang ) {
$this
.addClass( "sunlight-highlight-" + lang )
.addClass( "linenums" )
.html( example.html() );
}
} );
Sunlight.highlightAll( {
lineNumbers : true,
showMenu : true,
enableDoclinks : true
} );
} );
</script>
<!--Navigation and Symbol Display-->
<!--Google Analytics-->
</body>
</html>

View File

@ -0,0 +1,255 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>DocStrap Module: adapters/mysql2</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.cosmo.css">
</head>
<body>
<div class="container-fluid">
<div class="navbar navbar-fixed-top navbar-inverse">
<div class="navbar-inner">
<a class="brand" href="index.html">DocStrap</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-adapter.html">adapter</a>
</li>
<li>
<a href="module-adapters_mysql.html">adapters/mysql</a>
</li>
<li>
<a href="module-adapters_mysql2.html">adapters/mysql2</a>
</li>
<li>
<a href="module-driver.html">driver</a>
</li>
<li>
<a href="module-helpers.html">helpers</a>
</li>
<li>
<a href="module-node-query.html">node-query</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
<div class="row-fluid">
<div class="span8">
<div id="main">
<h1 class="page-title">Module: adapters/mysql2</h1>
<section>
<header>
<h2>
adapters/mysql2
</h2>
</header>
<article>
<div class="container-overview">
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source">
<ul class="dummy">
<li>
<a href="adapters_mysql2.js.html">adapters/mysql2.js</a>,
<a href="adapters_mysql2.js.html#sunlight-1-line-1">line 1</a>
</li>
</ul>
</dd>
</dl>
</div>
</article>
</section>
</div>
<div class="clearfix"></div>
<footer>
<span class="copyright">
DocStrap Copyright © 2012-2014 The contributors to the JSDoc3 and DocStrap projects.
</span>
<br />
<span class="jsdoc-message">
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.3.0-dev</a>
on Tue Oct 21st 2014 using the <a
href="https://github.com/terryweiss/docstrap">DocStrap template</a>.
</span>
</footer>
</div>
<div class="span3">
<div id="toc"></div>
</div>
<br clear="both">
</div>
</div>
<!--<script src="scripts/sunlight.js"></script>-->
<script src="scripts/docstrap.lib.js"></script>
<script src="scripts/bootstrap-dropdown.js"></script>
<script src="scripts/toc.js"></script>
<script>
$( function () {
$( "[id*='$']" ).each( function () {
var $this = $( this );
$this.attr( "id", $this.attr( "id" ).replace( "$", "__" ) );
} );
$( "#toc" ).toc( {
anchorName : function ( i, heading, prefix ) {
return $( heading ).attr( "id" ) || ( prefix + i );
},
selectors : "h1,h2,h3,h4",
showAndHide : false,
scrollTo : "100px"
} );
$( "#toc>ul" ).addClass( "nav nav-pills nav-stacked" );
$( "#main span[id^='toc']" ).addClass( "toc-shim" );
$( '.dropdown-toggle' ).dropdown();
// $( ".tutorial-section pre, .readme-section pre" ).addClass( "sunlight-highlight-javascript" ).addClass( "linenums" );
$( ".tutorial-section pre, .readme-section pre" ).each( function () {
var $this = $( this );
var example = $this.find( "code" );
exampleText = example.html();
var lang = /{@lang (.*?)}/.exec( exampleText );
if ( lang && lang[1] ) {
exampleText = exampleText.replace( lang[0], "" );
example.html( exampleText );
lang = lang[1];
} else {
lang = "javascript";
}
if ( lang ) {
$this
.addClass( "sunlight-highlight-" + lang )
.addClass( "linenums" )
.html( example.html() );
}
} );
Sunlight.highlightAll( {
lineNumbers : true,
showMenu : true,
enableDoclinks : true
} );
} );
</script>
<!--Navigation and Symbol Display-->
<!--Google Analytics-->
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@ -1,553 +1,251 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<title>JSDoc: Module: helpers</title> <title>DocStrap Module: helpers</title>
<script src="scripts/prettify/prettify.js"> </script> <!--[if lt IE 9]>
<script src="scripts/prettify/lang-css.js"> </script> <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<!--[if lt IE 9]> <![endif]-->
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script> <link type="text/css" rel="stylesheet" href="styles/sunlight.default.css">
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css"> <link type="text/css" rel="stylesheet" href="styles/site.cosmo.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head> </head>
<body> <body>
<div class="container-fluid">
<div class="navbar navbar-fixed-top navbar-inverse">
<div class="navbar-inner">
<a class="brand" href="index.html">DocStrap</a>
<ul class="nav">
<li class="dropdown">
<a href="modules.list.html" class="dropdown-toggle" data-toggle="dropdown">Modules<b
class="caret"></b></a>
<div id="main"> <ul class="dropdown-menu ">
<h1 class="page-title">Module: helpers</h1> <li>
<a href="module-adapter.html">adapter</a>
</li>
<li>
<a href="module-driver.html">driver</a>
</li>
<li>
<a href="module-helpers.html">helpers</a>
</li>
<li>
<a href="module-node-query.html">node-query</a>
</li>
<li>
<a href="module-query-builder.html">query-builder</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
<div class="row-fluid">
<section>
<header>
<h2>
helpers
</h2>
</header>
<article>
<div class="container-overview">
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="helpers.js.html">helpers.js</a>, <a href="helpers.js.html#line1">line 1</a>
</li></ul></dd>
</dl>
</div>
<h3 class="subsection-title">Methods</h3>
<dl>
<dt>
<h4 class="name" id="isNumber"><span class="type-signature">&lt;static> </span>isNumber<span class="signature">(obj)</span><span class="type-signature"> &rarr; {bool}</span></h4>
</dt>
<dd>
<div class="description">
Determine whether an object is numeric
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th> <div class="span8">
<div id="main">
<th>Type</th>
<h1 class="page-title">Module: helpers</h1>
<section>
<th class="last">Description</th> <header>
</tr> <h2>
</thead> helpers
</h2>
</header>
<article>
<div class="container-overview">
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source">
<ul class="dummy">
<li>
<a href="helpers.js.html">helpers.js</a>,
<a href="helpers.js.html#sunlight-1-line-1">line 1</a>
</li>
</ul>
</dd>
</dl>
</div>
</article>
</section>
</div>
<div class="clearfix"></div>
<footer>
<span class="copyright">
DocStrap Copyright © 2012-2014 The contributors to the JSDoc3 and DocStrap projects.
</span>
<br />
<span class="jsdoc-message">
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.3.0-alpha9</a>
on Thu Oct 23rd 2014 using the <a
href="https://github.com/terryweiss/docstrap">DocStrap template</a>.
</span>
</footer>
</div>
<div class="span3">
<div id="toc"></div>
</div>
<br clear="both">
</div>
</div>
<!--<script src="scripts/sunlight.js"></script>-->
<script src="scripts/docstrap.lib.js"></script>
<script src="scripts/bootstrap-dropdown.js"></script>
<script src="scripts/toc.js"></script>
<script>
$( function () {
$( "[id*='$']" ).each( function () {
var $this = $( this );
$this.attr( "id", $this.attr( "id" ).replace( "$", "__" ) );
} );
$( "#toc" ).toc( {
anchorName : function ( i, heading, prefix ) {
return $( heading ).attr( "id" ) || ( prefix + i );
},
selectors : "h1,h2,h3,h4",
showAndHide : false,
scrollTo : "100px"
} );
$( "#toc>ul" ).addClass( "nav nav-pills nav-stacked" );
$( "#main span[id^='toc']" ).addClass( "toc-shim" );
$( '.dropdown-toggle' ).dropdown();
// $( ".tutorial-section pre, .readme-section pre" ).addClass( "sunlight-highlight-javascript" ).addClass( "linenums" );
$( ".tutorial-section pre, .readme-section pre" ).each( function () {
var $this = $( this );
var example = $this.find( "code" );
exampleText = example.html();
var lang = /{@lang (.*?)}/.exec( exampleText );
if ( lang && lang[1] ) {
exampleText = exampleText.replace( lang[0], "" );
example.html( exampleText );
lang = lang[1];
} else {
lang = "javascript";
}
if ( lang ) {
$this
.addClass( "sunlight-highlight-" + lang )
.addClass( "linenums" )
.html( example.html() );
}
} );
Sunlight.highlightAll( {
lineNumbers : true,
showMenu : true,
enableDoclinks : true
} );
} );
</script>
<!--Navigation and Symbol Display-->
<tbody>
<!--Google Analytics-->
<tr>
<td class="name"><code>obj</code></td>
<td class="type">
<span class="param-type">mixed</span>
</td>
<td class="description last"></td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="helpers.js.html">helpers.js</a>, <a href="helpers.js.html#line56">line 56</a>
</li></ul></dd>
</dl>
<h5>Returns:</h5>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">bool</span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="isString"><span class="type-signature">&lt;static> </span>isString<span class="signature">(obj)</span><span class="type-signature"> &rarr; {bool}</span></h4>
</dt>
<dd>
<div class="description">
Determine whether an object is a string
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>obj</code></td>
<td class="type">
<span class="param-type">mixed</span>
</td>
<td class="description last"></td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="helpers.js.html">helpers.js</a>, <a href="helpers.js.html#line48">line 48</a>
</li></ul></dd>
</dl>
<h5>Returns:</h5>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">bool</span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="splitTrim"><span class="type-signature">&lt;static> </span>splitTrim<span class="signature">(char, string)</span><span class="type-signature"> &rarr; {String}</span></h4>
</dt>
<dd>
<div class="description">
Split a string by a character, trim the string
and rejoin the string
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>char</code></td>
<td class="type">
<span class="param-type">String</span>
</td>
<td class="description last"></td>
</tr>
<tr>
<td class="name"><code>string</code></td>
<td class="type">
<span class="param-type">String</span>
</td>
<td class="description last"></td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="helpers.js.html">helpers.js</a>, <a href="helpers.js.html#line40">line 40</a>
</li></ul></dd>
</dl>
<h5>Returns:</h5>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">String</span>
</dd>
</dl>
</dd>
</dl>
</article>
</section>
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Modules</h3><ul><li><a href="module-driver.html">driver</a></li><li><a href="module-helpers.html">helpers</a></li><li><a href="module-query-builder.html">query-builder</a></li></ul><h3><a href="global.html">Global</a></h3>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Mon Oct 20 2014 16:34:02 GMT-0400 (EDT)
</footer>
<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body> </body>
</html> </html>

441
docs/module-node-query.html Normal file
View File

@ -0,0 +1,441 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>DocStrap Module: node-query</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.cosmo.css">
</head>
<body>
<div class="container-fluid">
<div class="navbar navbar-fixed-top navbar-inverse">
<div class="navbar-inner">
<a class="brand" href="index.html">DocStrap</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-adapter.html">adapter</a>
</li>
<li>
<a href="module-driver.html">driver</a>
</li>
<li>
<a href="module-helpers.html">helpers</a>
</li>
<li>
<a href="module-node-query.html">node-query</a>
</li>
<li>
<a href="module-query-builder.html">query-builder</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
<div class="row-fluid">
<div class="span8">
<div id="main">
<h1 class="page-title">Module: node-query</h1>
<section>
<header>
<h2>
node-query
</h2>
</header>
<article>
<div class="container-overview">
<dt>
<h4 class="name" id="module:node-query"><span class="type-signature"></span>require("node-query")<span class="signature">(drivername, connObject, connLib)</span><span class="type-signature"> &rarr; {queryBuilder}</span></h4>
</dt>
<dd>
<div class="description">
<p>Create a query builder object</p>
</div>
<h5>Parameters:</h5>
<table class="params table table-striped">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>drivername</code></td>
<td class="type">
<span class="param-type">String</span>
</td>
<td class="description last"><p>The name of the database type, eg. mysql or pg</p></td>
</tr>
<tr>
<td class="name"><code>connObject</code></td>
<td class="type">
<span class="param-type">Object</span>
</td>
<td class="description last"><p>A connection object from the database library you are connecting with</p></td>
</tr>
<tr>
<td class="name"><code>connLib</code></td>
<td class="type">
<span class="param-type">String</span>
</td>
<td class="description last"><p>The name of the db connection library you are using, eg. mysql or mysql2</p></td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source">
<ul class="dummy">
<li>
<a href="node-query.js.html">node-query.js</a>,
<a href="node-query.js.html#sunlight-1-line-15">line 15</a>
</li>
</ul>
</dd>
</dl>
<h5>Returns:</h5>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">queryBuilder</span>
</dd>
</dl>
</dd>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source">
<ul class="dummy">
<li>
<a href="node-query.js.html">node-query.js</a>,
<a href="node-query.js.html#sunlight-1-line-3">line 3</a>
</li>
</ul>
</dd>
</dl>
</div>
</article>
</section>
</div>
<div class="clearfix"></div>
<footer>
<span class="copyright">
DocStrap Copyright © 2012-2014 The contributors to the JSDoc3 and DocStrap projects.
</span>
<br />
<span class="jsdoc-message">
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.3.0-alpha9</a>
on Thu Oct 23rd 2014 using the <a
href="https://github.com/terryweiss/docstrap">DocStrap template</a>.
</span>
</footer>
</div>
<div class="span3">
<div id="toc"></div>
</div>
<br clear="both">
</div>
</div>
<!--<script src="scripts/sunlight.js"></script>-->
<script src="scripts/docstrap.lib.js"></script>
<script src="scripts/bootstrap-dropdown.js"></script>
<script src="scripts/toc.js"></script>
<script>
$( function () {
$( "[id*='$']" ).each( function () {
var $this = $( this );
$this.attr( "id", $this.attr( "id" ).replace( "$", "__" ) );
} );
$( "#toc" ).toc( {
anchorName : function ( i, heading, prefix ) {
return $( heading ).attr( "id" ) || ( prefix + i );
},
selectors : "h1,h2,h3,h4",
showAndHide : false,
scrollTo : "100px"
} );
$( "#toc>ul" ).addClass( "nav nav-pills nav-stacked" );
$( "#main span[id^='toc']" ).addClass( "toc-shim" );
$( '.dropdown-toggle' ).dropdown();
// $( ".tutorial-section pre, .readme-section pre" ).addClass( "sunlight-highlight-javascript" ).addClass( "linenums" );
$( ".tutorial-section pre, .readme-section pre" ).each( function () {
var $this = $( this );
var example = $this.find( "code" );
exampleText = example.html();
var lang = /{@lang (.*?)}/.exec( exampleText );
if ( lang && lang[1] ) {
exampleText = exampleText.replace( lang[0], "" );
example.html( exampleText );
lang = lang[1];
} else {
lang = "javascript";
}
if ( lang ) {
$this
.addClass( "sunlight-highlight-" + lang )
.addClass( "linenums" )
.html( example.html() );
}
} );
Sunlight.highlightAll( {
lineNumbers : true,
showMenu : true,
enableDoclinks : true
} );
} );
</script>
<!--Navigation and Symbol Display-->
<!--Google Analytics-->
</body>
</html>

File diff suppressed because it is too large Load Diff

241
docs/modules.list.html Normal file
View File

@ -0,0 +1,241 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>DocStrap Modules</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.cosmo.css">
</head>
<body>
<div class="container-fluid">
<div class="navbar navbar-fixed-top navbar-inverse">
<div class="navbar-inner">
<a class="brand" href="index.html">DocStrap</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-adapter.html">adapter</a>
</li>
<li>
<a href="module-driver.html">driver</a>
</li>
<li>
<a href="module-helpers.html">helpers</a>
</li>
<li>
<a href="module-node-query.html">node-query</a>
</li>
<li>
<a href="module-query-builder.html">query-builder</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
<div class="row-fluid">
<div class="span8">
<div id="main">
<h1 class="page-title">Modules</h1>
<section>
<header>
<h2>
</h2>
</header>
<article>
<div class="container-overview">
<dl class="details">
</dl>
</div>
</article>
</section>
</div>
<div class="clearfix"></div>
<footer>
<span class="copyright">
DocStrap Copyright © 2012-2014 The contributors to the JSDoc3 and DocStrap projects.
</span>
<br />
<span class="jsdoc-message">
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.3.0-alpha9</a>
on Thu Oct 23rd 2014 using the <a
href="https://github.com/terryweiss/docstrap">DocStrap template</a>.
</span>
</footer>
</div>
<div class="span3">
<div id="toc"></div>
</div>
<br clear="both">
</div>
</div>
<!--<script src="scripts/sunlight.js"></script>-->
<script src="scripts/docstrap.lib.js"></script>
<script src="scripts/bootstrap-dropdown.js"></script>
<script src="scripts/toc.js"></script>
<script>
$( function () {
$( "[id*='$']" ).each( function () {
var $this = $( this );
$this.attr( "id", $this.attr( "id" ).replace( "$", "__" ) );
} );
$( "#toc" ).toc( {
anchorName : function ( i, heading, prefix ) {
return $( heading ).attr( "id" ) || ( prefix + i );
},
selectors : "h1,h2,h3,h4",
showAndHide : false,
scrollTo : "100px"
} );
$( "#toc>ul" ).addClass( "nav nav-pills nav-stacked" );
$( "#main span[id^='toc']" ).addClass( "toc-shim" );
$( '.dropdown-toggle' ).dropdown();
// $( ".tutorial-section pre, .readme-section pre" ).addClass( "sunlight-highlight-javascript" ).addClass( "linenums" );
$( ".tutorial-section pre, .readme-section pre" ).each( function () {
var $this = $( this );
var example = $this.find( "code" );
exampleText = example.html();
var lang = /{@lang (.*?)}/.exec( exampleText );
if ( lang && lang[1] ) {
exampleText = exampleText.replace( lang[0], "" );
example.html( exampleText );
lang = lang[1];
} else {
lang = "javascript";
}
if ( lang ) {
$this
.addClass( "sunlight-highlight-" + lang )
.addClass( "linenums" )
.html( example.html() );
}
} );
Sunlight.highlightAll( {
lineNumbers : true,
showMenu : true,
enableDoclinks : true
} );
} );
</script>
<!--Navigation and Symbol Display-->
<!--Google Analytics-->
</body>
</html>

261
docs/mysql.html Normal file
View File

@ -0,0 +1,261 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>DocStrap Module: drivers/mysql</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.cosmo.css">
</head>
<body>
<div class="container-fluid">
<div class="navbar navbar-fixed-top navbar-inverse">
<div class="navbar-inner">
<a class="brand" href="index.html">DocStrap</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-adapter.html">adapter</a>
</li>
<li>
<a href="module-driver.html">driver</a>
</li>
<li>
<a href="mysql.html">drivers/mysql</a>
</li>
<li>
<a href="pg.html">drivers/pg</a>
</li>
<li>
<a href="module-helpers.html">helpers</a>
</li>
<li>
<a href="module-node-query.html">node-query</a>
</li>
<li>
<a href="module-query-builder.html">query-builder</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
<div class="row-fluid">
<div class="span8">
<div id="main">
<h1 class="page-title">Module: drivers/mysql</h1>
<section>
<header>
<h2>
drivers/mysql
</h2>
</header>
<article>
<div class="container-overview">
<div class="description"><p>Driver for MySQL databases</p></div>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source">
<ul class="dummy">
<li>
<a href="mysql.js.html">drivers/mysql.js</a>,
<a href="mysql.js.html#sunlight-1-line-3">line 3</a>
</li>
</ul>
</dd>
</dl>
</div>
</article>
</section>
</div>
<div class="clearfix"></div>
<footer>
<span class="copyright">
DocStrap Copyright © 2012-2014 The contributors to the JSDoc3 and DocStrap projects.
</span>
<br />
<span class="jsdoc-message">
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.3.0-alpha9</a>
on Thu Oct 23rd 2014 using the <a
href="https://github.com/terryweiss/docstrap">DocStrap template</a>.
</span>
</footer>
</div>
<div class="span3">
<div id="toc"></div>
</div>
<br clear="both">
</div>
</div>
<!--<script src="scripts/sunlight.js"></script>-->
<script src="scripts/docstrap.lib.js"></script>
<script src="scripts/bootstrap-dropdown.js"></script>
<script src="scripts/toc.js"></script>
<script>
$( function () {
$( "[id*='$']" ).each( function () {
var $this = $( this );
$this.attr( "id", $this.attr( "id" ).replace( "$", "__" ) );
} );
$( "#toc" ).toc( {
anchorName : function ( i, heading, prefix ) {
return $( heading ).attr( "id" ) || ( prefix + i );
},
selectors : "h1,h2,h3,h4",
showAndHide : false,
scrollTo : "100px"
} );
$( "#toc>ul" ).addClass( "nav nav-pills nav-stacked" );
$( "#main span[id^='toc']" ).addClass( "toc-shim" );
$( '.dropdown-toggle' ).dropdown();
// $( ".tutorial-section pre, .readme-section pre" ).addClass( "sunlight-highlight-javascript" ).addClass( "linenums" );
$( ".tutorial-section pre, .readme-section pre" ).each( function () {
var $this = $( this );
var example = $this.find( "code" );
exampleText = example.html();
var lang = /{@lang (.*?)}/.exec( exampleText );
if ( lang && lang[1] ) {
exampleText = exampleText.replace( lang[0], "" );
example.html( exampleText );
lang = lang[1];
} else {
lang = "javascript";
}
if ( lang ) {
$this
.addClass( "sunlight-highlight-" + lang )
.addClass( "linenums" )
.html( example.html() );
}
} );
Sunlight.highlightAll( {
lineNumbers : true,
showMenu : true,
enableDoclinks : true
} );
} );
</script>
<!--Navigation and Symbol Display-->
<!--Google Analytics-->
</body>
</html>

View File

@ -1,38 +1,91 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<title>JSDoc: Source: drivers/mysql.js</title> <title>DocStrap Source: drivers/mysql.js</title>
<script src="scripts/prettify/prettify.js"> </script> <!--[if lt IE 9]>
<script src="scripts/prettify/lang-css.js"> </script> <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<!--[if lt IE 9]> <![endif]-->
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script> <link type="text/css" rel="stylesheet" href="styles/sunlight.default.css">
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css"> <link type="text/css" rel="stylesheet" href="styles/site.cosmo.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head> </head>
<body> <body>
<div class="container-fluid">
<div class="navbar navbar-fixed-top navbar-inverse">
<div class="navbar-inner">
<a class="brand" href="index.html">DocStrap</a>
<ul class="nav">
<li class="dropdown">
<a href="modules.list.html" class="dropdown-toggle" data-toggle="dropdown">Modules<b
class="caret"></b></a>
<div id="main"> <ul class="dropdown-menu ">
<h1 class="page-title">Source: drivers/mysql.js</h1> <li>
<a href="module-adapter.html">adapter</a>
</li>
<li>
<a href="module-driver.html">driver</a>
</li>
<li>
<a href="mysql.html">drivers/mysql</a>
</li>
<li>
<a href="pg.html">drivers/pg</a>
</li>
<li>
<a href="module-helpers.html">helpers</a>
</li>
<li>
<a href="module-node-query.html">node-query</a>
</li>
<li>
<a href="module-query-builder.html">query-builder</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
<div class="row-fluid">
<section>
<article>
<pre class="prettyprint source"><code>"use strict"; <div class="span12">
<div id="main">
<h1 class="page-title">Source: drivers/mysql.js</h1>
<section>
<article>
<pre
class="sunlight-highlight-javascript linenums">"use strict";
/** /**
* Driver for MySQL databases * Driver for MySQL databases
* *
* @returns {driver} * @module drivers/mysql
*/ */
module.exports = function() { module.exports = (function() {
var driver = require('../driver'), var driver = require('../driver'),
helpers = require('../helpers'); helpers = require('../helpers');
@ -51,26 +104,106 @@ module.exports = function() {
}; };
return driver; return driver;
};</code></pre>
</article> }());</pre>
</section> </article>
</section>
</div>
<div class="clearfix"></div>
<footer>
<span class="copyright">
DocStrap Copyright © 2012-2014 The contributors to the JSDoc3 and DocStrap projects.
</span>
<br />
<span class="jsdoc-message">
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.3.0-alpha9</a>
on Thu Oct 23rd 2014 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/docstrap.lib.js"></script>
<script src="scripts/bootstrap-dropdown.js"></script>
<script src="scripts/toc.js"></script>
<script>
$( function () {
$( "[id*='$']" ).each( function () {
var $this = $( this );
$this.attr( "id", $this.attr( "id" ).replace( "$", "__" ) );
} );
$( "#toc" ).toc( {
anchorName : function ( i, heading, prefix ) {
return $( heading ).attr( "id" ) || ( prefix + i );
},
selectors : "h1,h2,h3,h4",
showAndHide : false,
scrollTo : "100px"
} );
$( "#toc>ul" ).addClass( "nav nav-pills nav-stacked" );
$( "#main span[id^='toc']" ).addClass( "toc-shim" );
$( '.dropdown-toggle' ).dropdown();
// $( ".tutorial-section pre, .readme-section pre" ).addClass( "sunlight-highlight-javascript" ).addClass( "linenums" );
$( ".tutorial-section pre, .readme-section pre" ).each( function () {
var $this = $( this );
var example = $this.find( "code" );
exampleText = example.html();
var lang = /{@lang (.*?)}/.exec( exampleText );
if ( lang && lang[1] ) {
exampleText = exampleText.replace( lang[0], "" );
example.html( exampleText );
lang = lang[1];
} else {
lang = "javascript";
}
if ( lang ) {
$this
.addClass( "sunlight-highlight-" + lang )
.addClass( "linenums" )
.html( example.html() );
}
} );
Sunlight.highlightAll( {
lineNumbers : true,
showMenu : true,
enableDoclinks : true
} );
} );
</script>
<!--Navigation and Symbol Display-->
</div>
<nav> <!--Google Analytics-->
<h2><a href="index.html">Index</a></h2><h3>Modules</h3><ul><li><a href="module-driver.html">driver</a></li><li><a href="module-helpers.html">helpers</a></li><li><a href="module-query-builder.html">query-builder</a></li></ul><h3><a href="global.html">Global</a></h3>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Mon Oct 20 2014 16:34:02 GMT-0400 (EDT)
</footer>
<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body> </body>
</html> </html>

193
docs/mysql.js_.html Normal file
View File

@ -0,0 +1,193 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>DocStrap Source: adapters/mysql.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.cosmo.css">
</head>
<body>
<div class="container-fluid">
<div class="navbar navbar-fixed-top navbar-inverse">
<div class="navbar-inner">
<a class="brand" href="index.html">DocStrap</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-adapter.html">adapter</a>
</li>
<li>
<a href="mysql.html">adapters/mysql</a>
</li>
<li>
<a href="mysql2.html">adapters/mysql2</a>
</li>
<li>
<a href="module-driver.html">driver</a>
</li>
<li>
<a href="module-helpers.html">helpers</a>
</li>
<li>
<a href="module-node-query.html">node-query</a>
</li>
<li>
<a href="module-query-builder.html">query-builder</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
<div class="row-fluid">
<div class="span12">
<div id="main">
<h1 class="page-title">Source: adapters/mysql.js</h1>
<section>
<article>
<pre
class="sunlight-highlight-javascript linenums">'use strict';
var adapter = require('../lib/adapter.js');
/** @module adapters/mysql */
module.exports = function(instance) {
adapter.execute = function(sql, params, callback) {
instance.query(sql, params, callback);
};
return adapter;
}</pre>
</article>
</section>
</div>
<div class="clearfix"></div>
<footer>
<span class="copyright">
DocStrap Copyright © 2012-2014 The contributors to the JSDoc3 and DocStrap projects.
</span>
<br />
<span class="jsdoc-message">
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.3.0-alpha9</a>
on Tue Oct 21st 2014 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/docstrap.lib.js"></script>
<script src="scripts/bootstrap-dropdown.js"></script>
<script src="scripts/toc.js"></script>
<script>
$( function () {
$( "[id*='$']" ).each( function () {
var $this = $( this );
$this.attr( "id", $this.attr( "id" ).replace( "$", "__" ) );
} );
$( "#toc" ).toc( {
anchorName : function ( i, heading, prefix ) {
return $( heading ).attr( "id" ) || ( prefix + i );
},
selectors : "h1,h2,h3,h4",
showAndHide : false,
scrollTo : "100px"
} );
$( "#toc>ul" ).addClass( "nav nav-pills nav-stacked" );
$( "#main span[id^='toc']" ).addClass( "toc-shim" );
$( '.dropdown-toggle' ).dropdown();
// $( ".tutorial-section pre, .readme-section pre" ).addClass( "sunlight-highlight-javascript" ).addClass( "linenums" );
$( ".tutorial-section pre, .readme-section pre" ).each( function () {
var $this = $( this );
var example = $this.find( "code" );
exampleText = example.html();
var lang = /{@lang (.*?)}/.exec( exampleText );
if ( lang && lang[1] ) {
exampleText = exampleText.replace( lang[0], "" );
example.html( exampleText );
lang = lang[1];
} else {
lang = "javascript";
}
if ( lang ) {
$this
.addClass( "sunlight-highlight-" + lang )
.addClass( "linenums" )
.html( example.html() );
}
} );
Sunlight.highlightAll( {
lineNumbers : true,
showMenu : true,
enableDoclinks : true
} );
} );
</script>
<!--Navigation and Symbol Display-->
<!--Google Analytics-->
</body>
</html>

259
docs/mysql2.html Normal file
View File

@ -0,0 +1,259 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>DocStrap Module: adapters/mysql2</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.cosmo.css">
</head>
<body>
<div class="container-fluid">
<div class="navbar navbar-fixed-top navbar-inverse">
<div class="navbar-inner">
<a class="brand" href="index.html">DocStrap</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-adapter.html">adapter</a>
</li>
<li>
<a href="mysql.html">adapters/mysql</a>
</li>
<li>
<a href="mysql2.html">adapters/mysql2</a>
</li>
<li>
<a href="module-driver.html">driver</a>
</li>
<li>
<a href="module-helpers.html">helpers</a>
</li>
<li>
<a href="module-node-query.html">node-query</a>
</li>
<li>
<a href="module-query-builder.html">query-builder</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
<div class="row-fluid">
<div class="span8">
<div id="main">
<h1 class="page-title">Module: adapters/mysql2</h1>
<section>
<header>
<h2>
adapters/mysql2
</h2>
</header>
<article>
<div class="container-overview">
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source">
<ul class="dummy">
<li>
<a href="mysql2.js.html">adapters/mysql2.js</a>,
<a href="mysql2.js.html#sunlight-1-line-5">line 5</a>
</li>
</ul>
</dd>
</dl>
</div>
</article>
</section>
</div>
<div class="clearfix"></div>
<footer>
<span class="copyright">
DocStrap Copyright © 2012-2014 The contributors to the JSDoc3 and DocStrap projects.
</span>
<br />
<span class="jsdoc-message">
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.3.0-alpha9</a>
on Tue Oct 21st 2014 using the <a
href="https://github.com/terryweiss/docstrap">DocStrap template</a>.
</span>
</footer>
</div>
<div class="span3">
<div id="toc"></div>
</div>
<br clear="both">
</div>
</div>
<!--<script src="scripts/sunlight.js"></script>-->
<script src="scripts/docstrap.lib.js"></script>
<script src="scripts/bootstrap-dropdown.js"></script>
<script src="scripts/toc.js"></script>
<script>
$( function () {
$( "[id*='$']" ).each( function () {
var $this = $( this );
$this.attr( "id", $this.attr( "id" ).replace( "$", "__" ) );
} );
$( "#toc" ).toc( {
anchorName : function ( i, heading, prefix ) {
return $( heading ).attr( "id" ) || ( prefix + i );
},
selectors : "h1,h2,h3,h4",
showAndHide : false,
scrollTo : "100px"
} );
$( "#toc>ul" ).addClass( "nav nav-pills nav-stacked" );
$( "#main span[id^='toc']" ).addClass( "toc-shim" );
$( '.dropdown-toggle' ).dropdown();
// $( ".tutorial-section pre, .readme-section pre" ).addClass( "sunlight-highlight-javascript" ).addClass( "linenums" );
$( ".tutorial-section pre, .readme-section pre" ).each( function () {
var $this = $( this );
var example = $this.find( "code" );
exampleText = example.html();
var lang = /{@lang (.*?)}/.exec( exampleText );
if ( lang && lang[1] ) {
exampleText = exampleText.replace( lang[0], "" );
example.html( exampleText );
lang = lang[1];
} else {
lang = "javascript";
}
if ( lang ) {
$this
.addClass( "sunlight-highlight-" + lang )
.addClass( "linenums" )
.html( example.html() );
}
} );
Sunlight.highlightAll( {
lineNumbers : true,
showMenu : true,
enableDoclinks : true
} );
} );
</script>
<!--Navigation and Symbol Display-->
<!--Google Analytics-->
</body>
</html>

201
docs/mysql2.js.html Normal file
View File

@ -0,0 +1,201 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>DocStrap Source: adapters/mysql2.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.cosmo.css">
</head>
<body>
<div class="container-fluid">
<div class="navbar navbar-fixed-top navbar-inverse">
<div class="navbar-inner">
<a class="brand" href="index.html">DocStrap</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-adapter.html">adapter</a>
</li>
<li>
<a href="mysql.html">adapters/mysql</a>
</li>
<li>
<a href="mysql2.html">adapters/mysql2</a>
</li>
<li>
<a href="module-driver.html">driver</a>
</li>
<li>
<a href="module-helpers.html">helpers</a>
</li>
<li>
<a href="module-node-query.html">node-query</a>
</li>
<li>
<a href="module-query-builder.html">query-builder</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
<div class="row-fluid">
<div class="span12">
<div id="main">
<h1 class="page-title">Source: adapters/mysql2.js</h1>
<section>
<article>
<pre
class="sunlight-highlight-javascript linenums">'use strict';
var adapter = require('../lib/adapter.js');
/** @module adapters/mysql2 */
module.exports = function(instance) {
/**
* Run the sql query as a prepared statement
*
* @param {String} sql - The sql with placeholders
* @param {Array} params - The values to insert into the query
* @param {Function} callback - Callback to run when a response is recieved
* @return void
*/
adapter.execute = function(sql, params, callback) {
instance.execute(sql, params, callback);
};
return adapter;
}</pre>
</article>
</section>
</div>
<div class="clearfix"></div>
<footer>
<span class="copyright">
DocStrap Copyright © 2012-2014 The contributors to the JSDoc3 and DocStrap projects.
</span>
<br />
<span class="jsdoc-message">
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.3.0-alpha9</a>
on Tue Oct 21st 2014 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/docstrap.lib.js"></script>
<script src="scripts/bootstrap-dropdown.js"></script>
<script src="scripts/toc.js"></script>
<script>
$( function () {
$( "[id*='$']" ).each( function () {
var $this = $( this );
$this.attr( "id", $this.attr( "id" ).replace( "$", "__" ) );
} );
$( "#toc" ).toc( {
anchorName : function ( i, heading, prefix ) {
return $( heading ).attr( "id" ) || ( prefix + i );
},
selectors : "h1,h2,h3,h4",
showAndHide : false,
scrollTo : "100px"
} );
$( "#toc>ul" ).addClass( "nav nav-pills nav-stacked" );
$( "#main span[id^='toc']" ).addClass( "toc-shim" );
$( '.dropdown-toggle' ).dropdown();
// $( ".tutorial-section pre, .readme-section pre" ).addClass( "sunlight-highlight-javascript" ).addClass( "linenums" );
$( ".tutorial-section pre, .readme-section pre" ).each( function () {
var $this = $( this );
var example = $this.find( "code" );
exampleText = example.html();
var lang = /{@lang (.*?)}/.exec( exampleText );
if ( lang && lang[1] ) {
exampleText = exampleText.replace( lang[0], "" );
example.html( exampleText );
lang = lang[1];
} else {
lang = "javascript";
}
if ( lang ) {
$this
.addClass( "sunlight-highlight-" + lang )
.addClass( "linenums" )
.html( example.html() );
}
} );
Sunlight.highlightAll( {
lineNumbers : true,
showMenu : true,
enableDoclinks : true
} );
} );
</script>
<!--Navigation and Symbol Display-->
<!--Google Analytics-->
</body>
</html>

208
docs/node-query.js.html Normal file
View File

@ -0,0 +1,208 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>DocStrap Source: node-query.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.cosmo.css">
</head>
<body>
<div class="container-fluid">
<div class="navbar navbar-fixed-top navbar-inverse">
<div class="navbar-inner">
<a class="brand" href="index.html">DocStrap</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-adapter.html">adapter</a>
</li>
<li>
<a href="module-driver.html">driver</a>
</li>
<li>
<a href="module-helpers.html">helpers</a>
</li>
<li>
<a href="module-node-query.html">node-query</a>
</li>
<li>
<a href="module-query-builder.html">query-builder</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
<div class="row-fluid">
<div class="span12">
<div id="main">
<h1 class="page-title">Source: node-query.js</h1>
<section>
<article>
<pre
class="sunlight-highlight-javascript linenums">"use strict";
/** @module node-query */
var nodeQuery = {};
/**
* Create a query builder object
*
* @alias module:node-query
* @param {String} drivername - The name of the database type, eg. mysql or pg
* @param {Object} connObject - A connection object from the database library you are connecting with
* @param {String} connLib - The name of the db connection library you are using, eg. mysql or mysql2
* @return {queryBuilder}
*/
nodeQuery.init = function (driverType, connObject, connLib) {
var fs = require('fs'),
qb = require('./query-builder');
var paths = {
driver: __dirname + '/drivers/' + driverType + '.js',
adapter: __dirname + '/adapters/' + connLib + '.js'
};
Object.keys(paths).forEach(function(type) {
if ( ! fs.existsSync(paths[type]))
{
console.log(paths[type]);
throw new Error('Selected ' + type + ' does not exist!');
}
});
return new qb(require(paths.driver), require(paths.adapter)(connObject));
};
module.exports = nodeQuery.init;</pre>
</article>
</section>
</div>
<div class="clearfix"></div>
<footer>
<span class="copyright">
DocStrap Copyright © 2012-2014 The contributors to the JSDoc3 and DocStrap projects.
</span>
<br />
<span class="jsdoc-message">
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.3.0-alpha9</a>
on Thu Oct 23rd 2014 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/docstrap.lib.js"></script>
<script src="scripts/bootstrap-dropdown.js"></script>
<script src="scripts/toc.js"></script>
<script>
$( function () {
$( "[id*='$']" ).each( function () {
var $this = $( this );
$this.attr( "id", $this.attr( "id" ).replace( "$", "__" ) );
} );
$( "#toc" ).toc( {
anchorName : function ( i, heading, prefix ) {
return $( heading ).attr( "id" ) || ( prefix + i );
},
selectors : "h1,h2,h3,h4",
showAndHide : false,
scrollTo : "100px"
} );
$( "#toc>ul" ).addClass( "nav nav-pills nav-stacked" );
$( "#main span[id^='toc']" ).addClass( "toc-shim" );
$( '.dropdown-toggle' ).dropdown();
// $( ".tutorial-section pre, .readme-section pre" ).addClass( "sunlight-highlight-javascript" ).addClass( "linenums" );
$( ".tutorial-section pre, .readme-section pre" ).each( function () {
var $this = $( this );
var example = $this.find( "code" );
exampleText = example.html();
var lang = /{@lang (.*?)}/.exec( exampleText );
if ( lang && lang[1] ) {
exampleText = exampleText.replace( lang[0], "" );
example.html( exampleText );
lang = lang[1];
} else {
lang = "javascript";
}
if ( lang ) {
$this
.addClass( "sunlight-highlight-" + lang )
.addClass( "linenums" )
.html( example.html() );
}
} );
Sunlight.highlightAll( {
lineNumbers : true,
showMenu : true,
enableDoclinks : true
} );
} );
</script>
<!--Navigation and Symbol Display-->
<!--Google Analytics-->
</body>
</html>

261
docs/pg.html Normal file
View File

@ -0,0 +1,261 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>DocStrap Module: drivers/pg</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.cosmo.css">
</head>
<body>
<div class="container-fluid">
<div class="navbar navbar-fixed-top navbar-inverse">
<div class="navbar-inner">
<a class="brand" href="index.html">DocStrap</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-adapter.html">adapter</a>
</li>
<li>
<a href="module-driver.html">driver</a>
</li>
<li>
<a href="mysql.html">drivers/mysql</a>
</li>
<li>
<a href="pg.html">drivers/pg</a>
</li>
<li>
<a href="module-helpers.html">helpers</a>
</li>
<li>
<a href="module-node-query.html">node-query</a>
</li>
<li>
<a href="module-query-builder.html">query-builder</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
<div class="row-fluid">
<div class="span8">
<div id="main">
<h1 class="page-title">Module: drivers/pg</h1>
<section>
<header>
<h2>
drivers/pg
</h2>
</header>
<article>
<div class="container-overview">
<div class="description"><p>Driver for PostgreSQL databases</p></div>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source">
<ul class="dummy">
<li>
<a href="pg.js.html">drivers/pg.js</a>,
<a href="pg.js.html#sunlight-1-line-3">line 3</a>
</li>
</ul>
</dd>
</dl>
</div>
</article>
</section>
</div>
<div class="clearfix"></div>
<footer>
<span class="copyright">
DocStrap Copyright © 2012-2014 The contributors to the JSDoc3 and DocStrap projects.
</span>
<br />
<span class="jsdoc-message">
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.3.0-alpha9</a>
on Thu Oct 23rd 2014 using the <a
href="https://github.com/terryweiss/docstrap">DocStrap template</a>.
</span>
</footer>
</div>
<div class="span3">
<div id="toc"></div>
</div>
<br clear="both">
</div>
</div>
<!--<script src="scripts/sunlight.js"></script>-->
<script src="scripts/docstrap.lib.js"></script>
<script src="scripts/bootstrap-dropdown.js"></script>
<script src="scripts/toc.js"></script>
<script>
$( function () {
$( "[id*='$']" ).each( function () {
var $this = $( this );
$this.attr( "id", $this.attr( "id" ).replace( "$", "__" ) );
} );
$( "#toc" ).toc( {
anchorName : function ( i, heading, prefix ) {
return $( heading ).attr( "id" ) || ( prefix + i );
},
selectors : "h1,h2,h3,h4",
showAndHide : false,
scrollTo : "100px"
} );
$( "#toc>ul" ).addClass( "nav nav-pills nav-stacked" );
$( "#main span[id^='toc']" ).addClass( "toc-shim" );
$( '.dropdown-toggle' ).dropdown();
// $( ".tutorial-section pre, .readme-section pre" ).addClass( "sunlight-highlight-javascript" ).addClass( "linenums" );
$( ".tutorial-section pre, .readme-section pre" ).each( function () {
var $this = $( this );
var example = $this.find( "code" );
exampleText = example.html();
var lang = /{@lang (.*?)}/.exec( exampleText );
if ( lang && lang[1] ) {
exampleText = exampleText.replace( lang[0], "" );
example.html( exampleText );
lang = lang[1];
} else {
lang = "javascript";
}
if ( lang ) {
$this
.addClass( "sunlight-highlight-" + lang )
.addClass( "linenums" )
.html( example.html() );
}
} );
Sunlight.highlightAll( {
lineNumbers : true,
showMenu : true,
enableDoclinks : true
} );
} );
</script>
<!--Navigation and Symbol Display-->
<!--Google Analytics-->
</body>
</html>

View File

@ -1,61 +1,192 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<title>JSDoc: Source: drivers/pg.js</title> <title>DocStrap Source: drivers/pg.js</title>
<script src="scripts/prettify/prettify.js"> </script> <!--[if lt IE 9]>
<script src="scripts/prettify/lang-css.js"> </script> <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<!--[if lt IE 9]> <![endif]-->
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script> <link type="text/css" rel="stylesheet" href="styles/sunlight.default.css">
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css"> <link type="text/css" rel="stylesheet" href="styles/site.cosmo.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head> </head>
<body> <body>
<div class="container-fluid">
<div class="navbar navbar-fixed-top navbar-inverse">
<div class="navbar-inner">
<a class="brand" href="index.html">DocStrap</a>
<ul class="nav">
<li class="dropdown">
<a href="modules.list.html" class="dropdown-toggle" data-toggle="dropdown">Modules<b
class="caret"></b></a>
<div id="main"> <ul class="dropdown-menu ">
<h1 class="page-title">Source: drivers/pg.js</h1> <li>
<a href="module-adapter.html">adapter</a>
</li>
<li>
<a href="module-driver.html">driver</a>
</li>
<li>
<a href="mysql.html">drivers/mysql</a>
</li>
<li>
<a href="pg.html">drivers/pg</a>
</li>
<li>
<a href="module-helpers.html">helpers</a>
</li>
<li>
<a href="module-node-query.html">node-query</a>
</li>
<li>
<a href="module-query-builder.html">query-builder</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
<div class="row-fluid">
<section>
<article>
<pre class="prettyprint source"><code>"use strict"; <div class="span12">
<div id="main">
<h1 class="page-title">Source: drivers/pg.js</h1>
<section>
<article>
<pre
class="sunlight-highlight-javascript linenums">"use strict";
/** /**
* Driver for PostgreSQL databases * Driver for PostgreSQL databases
* *
* @returns {driver} * @module drivers/pg
*/ */
module.exports = function() { module.exports = (function() {
var driver = require('../driver'); var driver = require('../driver');
return driver; return driver;
};</code></pre> }());</pre>
</article> </article>
</section> </section>
</div>
<div class="clearfix"></div>
<footer>
<span class="copyright">
DocStrap Copyright © 2012-2014 The contributors to the JSDoc3 and DocStrap projects.
</span>
<br />
<span class="jsdoc-message">
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.3.0-alpha9</a>
on Thu Oct 23rd 2014 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/docstrap.lib.js"></script>
<script src="scripts/bootstrap-dropdown.js"></script>
<script src="scripts/toc.js"></script>
<script>
$( function () {
$( "[id*='$']" ).each( function () {
var $this = $( this );
$this.attr( "id", $this.attr( "id" ).replace( "$", "__" ) );
} );
$( "#toc" ).toc( {
anchorName : function ( i, heading, prefix ) {
return $( heading ).attr( "id" ) || ( prefix + i );
},
selectors : "h1,h2,h3,h4",
showAndHide : false,
scrollTo : "100px"
} );
$( "#toc>ul" ).addClass( "nav nav-pills nav-stacked" );
$( "#main span[id^='toc']" ).addClass( "toc-shim" );
$( '.dropdown-toggle' ).dropdown();
// $( ".tutorial-section pre, .readme-section pre" ).addClass( "sunlight-highlight-javascript" ).addClass( "linenums" );
$( ".tutorial-section pre, .readme-section pre" ).each( function () {
var $this = $( this );
var example = $this.find( "code" );
exampleText = example.html();
var lang = /{@lang (.*?)}/.exec( exampleText );
if ( lang && lang[1] ) {
exampleText = exampleText.replace( lang[0], "" );
example.html( exampleText );
lang = lang[1];
} else {
lang = "javascript";
}
if ( lang ) {
$this
.addClass( "sunlight-highlight-" + lang )
.addClass( "linenums" )
.html( example.html() );
}
} );
Sunlight.highlightAll( {
lineNumbers : true,
showMenu : true,
enableDoclinks : true
} );
} );
</script>
<!--Navigation and Symbol Display-->
</div>
<nav> <!--Google Analytics-->
<h2><a href="index.html">Index</a></h2><h3>Modules</h3><ul><li><a href="module-driver.html">driver</a></li><li><a href="module-helpers.html">helpers</a></li><li><a href="module-query-builder.html">query-builder</a></li></ul><h3><a href="global.html">Global</a></h3>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Mon Oct 20 2014 16:34:02 GMT-0400 (EDT)
</footer>
<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body> </body>
</html> </html>

File diff suppressed because it is too large Load Diff

1429
docs/scripts/URI.js Normal file

File diff suppressed because it is too large Load Diff

169
docs/scripts/bootstrap-dropdown.js vendored Normal file
View File

@ -0,0 +1,169 @@
/* ============================================================
* bootstrap-dropdown.js v2.3.2
* http://getbootstrap.com/2.3.2/javascript.html#dropdowns
* ============================================================
* Copyright 2013 Twitter, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* ============================================================ */
!function ($) {
"use strict"; // jshint ;_;
/* DROPDOWN CLASS DEFINITION
* ========================= */
var toggle = '[data-toggle=dropdown]'
, Dropdown = function (element) {
var $el = $(element).on('click.dropdown.data-api', this.toggle)
$('html').on('click.dropdown.data-api', function () {
$el.parent().removeClass('open')
})
}
Dropdown.prototype = {
constructor: Dropdown
, toggle: function (e) {
var $this = $(this)
, $parent
, isActive
if ($this.is('.disabled, :disabled')) return
$parent = getParent($this)
isActive = $parent.hasClass('open')
clearMenus()
if (!isActive) {
if ('ontouchstart' in document.documentElement) {
// if mobile we we use a backdrop because click events don't delegate
$('<div class="dropdown-backdrop"/>').insertBefore($(this)).on('click', clearMenus)
}
$parent.toggleClass('open')
}
$this.focus()
return false
}
, keydown: function (e) {
var $this
, $items
, $active
, $parent
, isActive
, index
if (!/(38|40|27)/.test(e.keyCode)) return
$this = $(this)
e.preventDefault()
e.stopPropagation()
if ($this.is('.disabled, :disabled')) return
$parent = getParent($this)
isActive = $parent.hasClass('open')
if (!isActive || (isActive && e.keyCode == 27)) {
if (e.which == 27) $parent.find(toggle).focus()
return $this.click()
}
$items = $('[role=menu] li:not(.divider):visible a', $parent)
if (!$items.length) return
index = $items.index($items.filter(':focus'))
if (e.keyCode == 38 && index > 0) index-- // up
if (e.keyCode == 40 && index < $items.length - 1) index++ // down
if (!~index) index = 0
$items
.eq(index)
.focus()
}
}
function clearMenus() {
$('.dropdown-backdrop').remove()
$(toggle).each(function () {
getParent($(this)).removeClass('open')
})
}
function getParent($this) {
var selector = $this.attr('data-target')
, $parent
if (!selector) {
selector = $this.attr('href')
selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
}
$parent = selector && $(selector)
if (!$parent || !$parent.length) $parent = $this.parent()
return $parent
}
/* DROPDOWN PLUGIN DEFINITION
* ========================== */
var old = $.fn.dropdown
$.fn.dropdown = function (option) {
return this.each(function () {
var $this = $(this)
, data = $this.data('dropdown')
if (!data) $this.data('dropdown', (data = new Dropdown(this)))
if (typeof option == 'string') data[option].call($this)
})
}
$.fn.dropdown.Constructor = Dropdown
/* DROPDOWN NO CONFLICT
* ==================== */
$.fn.dropdown.noConflict = function () {
$.fn.dropdown = old
return this
}
/* APPLY TO STANDARD DROPDOWN ELEMENTS
* =================================== */
$(document)
.on('click.dropdown.data-api', clearMenus)
.on('click.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
.on('click.dropdown.data-api' , toggle, Dropdown.prototype.toggle)
.on('keydown.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)
}(window.jQuery);

144
docs/scripts/bootstrap-tab.js vendored Normal file
View File

@ -0,0 +1,144 @@
/* ========================================================
* bootstrap-tab.js v2.3.0
* http://twitter.github.com/bootstrap/javascript.html#tabs
* ========================================================
* Copyright 2012 Twitter, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* ======================================================== */
!function ($) {
"use strict"; // jshint ;_;
/* TAB CLASS DEFINITION
* ==================== */
var Tab = function (element) {
this.element = $(element)
}
Tab.prototype = {
constructor: Tab
, show: function () {
var $this = this.element
, $ul = $this.closest('ul:not(.dropdown-menu)')
, selector = $this.attr('data-target')
, previous
, $target
, e
if (!selector) {
selector = $this.attr('href')
selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
}
if ( $this.parent('li').hasClass('active') ) return
previous = $ul.find('.active:last a')[0]
e = $.Event('show', {
relatedTarget: previous
})
$this.trigger(e)
if (e.isDefaultPrevented()) return
$target = $(selector)
this.activate($this.parent('li'), $ul)
this.activate($target, $target.parent(), function () {
$this.trigger({
type: 'shown'
, relatedTarget: previous
})
})
}
, activate: function ( element, container, callback) {
var $active = container.find('> .active')
, transition = callback
&& $.support.transition
&& $active.hasClass('fade')
function next() {
$active
.removeClass('active')
.find('> .dropdown-menu > .active')
.removeClass('active')
element.addClass('active')
if (transition) {
element[0].offsetWidth // reflow for transition
element.addClass('in')
} else {
element.removeClass('fade')
}
if ( element.parent('.dropdown-menu') ) {
element.closest('li.dropdown').addClass('active')
}
callback && callback()
}
transition ?
$active.one($.support.transition.end, next) :
next()
$active.removeClass('in')
}
}
/* TAB PLUGIN DEFINITION
* ===================== */
var old = $.fn.tab
$.fn.tab = function ( option ) {
return this.each(function () {
var $this = $(this)
, data = $this.data('tab')
if (!data) $this.data('tab', (data = new Tab(this)))
if (typeof option == 'string') data[option]()
})
}
$.fn.tab.Constructor = Tab
/* TAB NO CONFLICT
* =============== */
$.fn.tab.noConflict = function () {
$.fn.tab = old
return this
}
/* TAB DATA-API
* ============ */
$(document).on('click.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) {
e.preventDefault()
$(this).tab('show')
})
}(window.jQuery);

File diff suppressed because one or more lines are too long

View File

@ -1,17 +1,25 @@
/*global document */
(function() { (function() {
var counter = 0; var source = document.getElementsByClassName('prettyprint source linenums');
var numbered; var i = 0;
var source = document.getElementsByClassName('prettyprint source'); var lineNumber = 0;
var lineId;
var lines;
var totalLines;
var anchorHash;
if (source && source[0]) { if (source && source[0]) {
source = source[0].getElementsByTagName('code')[0]; anchorHash = document.location.hash.substring(1);
lines = source[0].getElementsByTagName('li');
totalLines = lines.length;
numbered = source.innerHTML.split('\n'); for (; i < totalLines; i++) {
numbered = numbered.map(function(item) { lineNumber++;
counter++; lineId = 'line' + lineNumber;
return '<span id="line' + counter + '" class="line"></span>' + item; lines[i].id = lineId;
}); if (lineId === anchorHash) {
lines[i].className += ' selected';
source.innerHTML = numbered.join('\n'); }
}
} }
})(); })();

View File

@ -1,202 +1,202 @@
Apache License Apache License
Version 2.0, January 2004 Version 2.0, January 2004
http://www.apache.org/licenses/ http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions. 1. Definitions.
"License" shall mean the terms and conditions for use, reproduction, "License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document. and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by "Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License. the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all "Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition, control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the "control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity. outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity "You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License. exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications, "Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation including but not limited to software source code, documentation
source, and configuration files. source, and configuration files.
"Object" form shall mean any form resulting from mechanical "Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation, not limited to compiled object code, generated documentation,
and conversions to other media types. and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or "Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work copyright notice that is included in or attached to the work
(an example is provided in the Appendix below). (an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object "Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of, separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof. the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including "Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted" the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems, communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution." designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity "Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work. subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of 2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual, this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of, copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form. Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of 3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual, this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made, (except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work, use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s) Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate granted to You under this License for that Work shall terminate
as of the date such litigation is filed. as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the 4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You modifications, and in Source or Object form, provided that You
meet the following conditions: meet the following conditions:
(a) You must give any other recipients of the Work or (a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices (b) You must cause any modified files to carry prominent notices
stating that You changed the files; and stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works (c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work, attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of excluding those notices that do not pertain to any part of
the Derivative Works; and the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its (d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or, documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed that such additional attribution notices cannot be construed
as modifying the License. as modifying the License.
You may add Your own copyright statement to Your modifications and You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use, for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License. the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise, 5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions. this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions. with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade 6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor, names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file. origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or 7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS, Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License. risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory, 8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise, whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special, liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill, Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages. has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing 9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer, the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity, and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify, of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability. of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work. APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]" boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier same "printed page" as the copyright notice for easier
identification within third-party archives. identification within third-party archives.
Copyright [yyyy] [name of copyright owner] Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
You may obtain a copy of the License at You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0 http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and See the License for the specific language governing permissions and
limitations under the License. limitations under the License.

6
docs/scripts/prettify/jquery.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -1,2 +1,21 @@
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\f\r ]+/,null," \t\r\n "]],[["str",/^"(?:[^\n\f\r"\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*"/,null],["str",/^'(?:[^\n\f\r'\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*'/,null],["lang-css-str",/^url\(([^"')]*)\)/i],["kwd",/^(?:url|rgb|!important|@import|@page|@media|@charset|inherit)(?=[^\w-]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*)\s*:/i],["com",/^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//],["com", PR.registerLangHandler(PR.createSimpleLexer([
/^(?:<\!--|--\>)/],["lit",/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],["lit",/^#[\da-f]{3,6}/i],["pln",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i],["pun",/^[^\s\w"']+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[["kwd",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[["str",/^[^"')]+/]]),["css-str"]); ["pln", /^[\t\n\f\r ]+/, null, " \t\r\n "]
], [
["str", /^"(?:[^\n\f\r"\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*"/, null],
["str", /^'(?:[^\n\f\r'\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*'/, null],
["lang-css-str", /^url\(([^"')]*)\)/i],
["kwd", /^(?:url|rgb|!important|@import|@page|@media|@charset|inherit)(?=[^\w-]|$)/i, null],
["lang-css-kw", /^(-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*)\s*:/i],
["com", /^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//],
["com", /^(?:<\!--|--\>)/],
["lit", /^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],
["lit", /^#[\da-f]{3,6}/i],
["pln", /^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i],
["pun", /^[^\s\w"']+/]
]), ["css"]);
PR.registerLangHandler(PR.createSimpleLexer([], [
["kwd", /^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i]
]), ["css-kw"]);
PR.registerLangHandler(PR.createSimpleLexer([], [
["str", /^[^"')]+/]
]), ["css-str"]);

View File

@ -1,28 +1,496 @@
var q=null;window.PR_SHOULD_USE_CONTINUATION=!0; var q = null;
(function(){function L(a){function m(a){var f=a.charCodeAt(0);if(f!==92)return f;var b=a.charAt(1);return(f=r[b])?f:"0"<=b&&b<="7"?parseInt(a.substring(1),8):b==="u"||b==="x"?parseInt(a.substring(2),16):a.charCodeAt(1)}function e(a){if(a<32)return(a<16?"\\x0":"\\x")+a.toString(16);a=String.fromCharCode(a);if(a==="\\"||a==="-"||a==="["||a==="]")a="\\"+a;return a}function h(a){for(var f=a.substring(1,a.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),a= window.PR_SHOULD_USE_CONTINUATION = !0;
[],b=[],o=f[0]==="^",c=o?1:0,i=f.length;c<i;++c){var j=f[c];if(/\\[bdsw]/i.test(j))a.push(j);else{var j=m(j),d;c+2<i&&"-"===f[c+1]?(d=m(f[c+2]),c+=2):d=j;b.push([j,d]);d<65||j>122||(d<65||j>90||b.push([Math.max(65,j)|32,Math.min(d,90)|32]),d<97||j>122||b.push([Math.max(97,j)&-33,Math.min(d,122)&-33]))}}b.sort(function(a,f){return a[0]-f[0]||f[1]-a[1]});f=[];j=[NaN,NaN];for(c=0;c<b.length;++c)i=b[c],i[0]<=j[1]+1?j[1]=Math.max(j[1],i[1]):f.push(j=i);b=["["];o&&b.push("^");b.push.apply(b,a);for(c=0;c< (function() {
f.length;++c)i=f[c],b.push(e(i[0])),i[1]>i[0]&&(i[1]+1>i[0]&&b.push("-"),b.push(e(i[1])));b.push("]");return b.join("")}function y(a){for(var f=a.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),b=f.length,d=[],c=0,i=0;c<b;++c){var j=f[c];j==="("?++i:"\\"===j.charAt(0)&&(j=+j.substring(1))&&j<=i&&(d[j]=-1)}for(c=1;c<d.length;++c)-1===d[c]&&(d[c]=++t);for(i=c=0;c<b;++c)j=f[c],j==="("?(++i,d[i]===void 0&&(f[c]="(?:")):"\\"===j.charAt(0)&& function L(a) {
(j=+j.substring(1))&&j<=i&&(f[c]="\\"+d[i]);for(i=c=0;c<b;++c)"^"===f[c]&&"^"!==f[c+1]&&(f[c]="");if(a.ignoreCase&&s)for(c=0;c<b;++c)j=f[c],a=j.charAt(0),j.length>=2&&a==="["?f[c]=h(j):a!=="\\"&&(f[c]=j.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return f.join("")}for(var t=0,s=!1,l=!1,p=0,d=a.length;p<d;++p){var g=a[p];if(g.ignoreCase)l=!0;else if(/[a-z]/i.test(g.source.replace(/\\u[\da-f]{4}|\\x[\da-f]{2}|\\[^UXux]/gi,""))){s=!0;l=!1;break}}for(var r= function m(a) {
{b:8,t:9,n:10,v:11,f:12,r:13},n=[],p=0,d=a.length;p<d;++p){g=a[p];if(g.global||g.multiline)throw Error(""+g);n.push("(?:"+y(g)+")")}return RegExp(n.join("|"),l?"gi":"g")}function M(a){function m(a){switch(a.nodeType){case 1:if(e.test(a.className))break;for(var g=a.firstChild;g;g=g.nextSibling)m(g);g=a.nodeName;if("BR"===g||"LI"===g)h[s]="\n",t[s<<1]=y++,t[s++<<1|1]=a;break;case 3:case 4:g=a.nodeValue,g.length&&(g=p?g.replace(/\r\n?/g,"\n"):g.replace(/[\t\n\r ]+/g," "),h[s]=g,t[s<<1]=y,y+=g.length, var f = a.charCodeAt(0);
t[s++<<1|1]=a)}}var e=/(?:^|\s)nocode(?:\s|$)/,h=[],y=0,t=[],s=0,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=document.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);m(a);return{a:h.join("").replace(/\n$/,""),c:t}}function B(a,m,e,h){m&&(a={a:m,d:a},e(a),h.push.apply(h,a.e))}function x(a,m){function e(a){for(var l=a.d,p=[l,"pln"],d=0,g=a.a.match(y)||[],r={},n=0,z=g.length;n<z;++n){var f=g[n],b=r[f],o=void 0,c;if(typeof b=== if (f !== 92) return f;
"string")c=!1;else{var i=h[f.charAt(0)];if(i)o=f.match(i[1]),b=i[0];else{for(c=0;c<t;++c)if(i=m[c],o=f.match(i[1])){b=i[0];break}o||(b="pln")}if((c=b.length>=5&&"lang-"===b.substring(0,5))&&!(o&&typeof o[1]==="string"))c=!1,b="src";c||(r[f]=b)}i=d;d+=f.length;if(c){c=o[1];var j=f.indexOf(c),k=j+c.length;o[2]&&(k=f.length-o[2].length,j=k-c.length);b=b.substring(5);B(l+i,f.substring(0,j),e,p);B(l+i+j,c,C(b,c),p);B(l+i+k,f.substring(k),e,p)}else p.push(l+i,b)}a.e=p}var h={},y;(function(){for(var e=a.concat(m), var b = a.charAt(1);
l=[],p={},d=0,g=e.length;d<g;++d){var r=e[d],n=r[3];if(n)for(var k=n.length;--k>=0;)h[n.charAt(k)]=r;r=r[1];n=""+r;p.hasOwnProperty(n)||(l.push(r),p[n]=q)}l.push(/[\S\s]/);y=L(l)})();var t=m.length;return e}function u(a){var m=[],e=[];a.tripleQuotedStrings?m.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?m.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/, return (f = r[b]) ? f : "0" <= b && b <= "7" ? parseInt(a.substring(1), 8) : b === "u" || b === "x" ? parseInt(a.substring(2), 16) : a.charCodeAt(1)
q,"'\"`"]):m.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&e.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var h=a.hashComments;h&&(a.cStyleComments?(h>1?m.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):m.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),e.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,q])):m.push(["com",/^#[^\n\r]*/, }
q,"#"]));a.cStyleComments&&(e.push(["com",/^\/\/[^\n\r]*/,q]),e.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));a.regexLiterals&&e.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);(h=a.types)&&e.push(["typ",h]);a=(""+a.keywords).replace(/^ | $/g,
"");a.length&&e.push(["kwd",RegExp("^(?:"+a.replace(/[\s,]+/g,"|")+")\\b"),q]);m.push(["pln",/^\s+/,q," \r\n\t\xa0"]);e.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]);return x(m,e)}function D(a,m){function e(a){switch(a.nodeType){case 1:if(k.test(a.className))break;if("BR"===a.nodeName)h(a), function e(a) {
a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)e(a);break;case 3:case 4:if(p){var b=a.nodeValue,d=b.match(t);if(d){var c=b.substring(0,d.index);a.nodeValue=c;(b=b.substring(d.index+d[0].length))&&a.parentNode.insertBefore(s.createTextNode(b),a.nextSibling);h(a);c||a.parentNode.removeChild(a)}}}}function h(a){function b(a,d){var e=d?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),g=a.nextSibling;f.appendChild(e);for(var h=g;h;h=g)g=h.nextSibling,f.appendChild(h)}return e} if (a < 32) return (a < 16 ? "\\x0" : "\\x") + a.toString(16);
for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),e;(e=a.parentNode)&&e.nodeType===1;)a=e;d.push(a)}var k=/(?:^|\s)nocode(?:\s|$)/,t=/\r\n?|\n/,s=a.ownerDocument,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=s.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);for(l=s.createElement("LI");a.firstChild;)l.appendChild(a.firstChild);for(var d=[l],g=0;g<d.length;++g)e(d[g]);m===(m|0)&&d[0].setAttribute("value", a = String.fromCharCode(a);
m);var r=s.createElement("OL");r.className="linenums";for(var n=Math.max(0,m-1|0)||0,g=0,z=d.length;g<z;++g)l=d[g],l.className="L"+(g+n)%10,l.firstChild||l.appendChild(s.createTextNode("\xa0")),r.appendChild(l);a.appendChild(r)}function k(a,m){for(var e=m.length;--e>=0;){var h=m[e];A.hasOwnProperty(h)?window.console&&console.warn("cannot override language handler %s",h):A[h]=a}}function C(a,m){if(!a||!A.hasOwnProperty(a))a=/^\s*</.test(m)?"default-markup":"default-code";return A[a]}function E(a){var m= if (a === "\\" || a === "-" || a === "[" || a === "]") a = "\\" + a;
a.g;try{var e=M(a.h),h=e.a;a.a=h;a.c=e.c;a.d=0;C(m,h)(a);var k=/\bMSIE\b/.test(navigator.userAgent),m=/\n/g,t=a.a,s=t.length,e=0,l=a.c,p=l.length,h=0,d=a.e,g=d.length,a=0;d[g]=s;var r,n;for(n=r=0;n<g;)d[n]!==d[n+2]?(d[r++]=d[n++],d[r++]=d[n++]):n+=2;g=r;for(n=r=0;n<g;){for(var z=d[n],f=d[n+1],b=n+2;b+2<=g&&d[b+1]===f;)b+=2;d[r++]=z;d[r++]=f;n=b}for(d.length=r;h<p;){var o=l[h+2]||s,c=d[a+2]||s,b=Math.min(o,c),i=l[h+1],j;if(i.nodeType!==1&&(j=t.substring(e,b))){k&&(j=j.replace(m,"\r"));i.nodeValue= return a
j;var u=i.ownerDocument,v=u.createElement("SPAN");v.className=d[a+1];var x=i.parentNode;x.replaceChild(v,i);v.appendChild(i);e<o&&(l[h+1]=i=u.createTextNode(t.substring(b,o)),x.insertBefore(i,v.nextSibling))}e=b;e>=o&&(h+=2);e>=c&&(a+=2)}}catch(w){"console"in window&&console.log(w&&w.stack?w.stack:w)}}var v=["break,continue,do,else,for,if,return,while"],w=[[v,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"], }
"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],F=[w,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],G=[w,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"],
H=[G,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],w=[w,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],I=[v,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"], function h(a) {
J=[v,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],v=[v,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],K=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,N=/\S/,O=u({keywords:[F,H,w,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+ for (var f = a.substring(1, a.length - 1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g), a = [], b = [], o = f[0] === "^", c = o ? 1 : 0, i = f.length; c < i; ++c) {
I,J,v],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),A={};k(O,["default-code"]);k(x([],[["pln",/^[^<?]+/],["dec",/^<!\w[^>]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^<xmp\b[^>]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^<script\b[^>]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^<style\b[^>]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]), var j = f[c];
["default-markup","htm","html","mxml","xhtml","xml","xsl"]);k(x([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css", if (/\\[bdsw]/i.test(j)) a.push(j);
/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);k(x([],[["atv",/^[\S\s]+/]]),["uq.val"]);k(u({keywords:F,hashComments:!0,cStyleComments:!0,types:K}),["c","cc","cpp","cxx","cyc","m"]);k(u({keywords:"null,true,false"}),["json"]);k(u({keywords:H,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:K}),["cs"]);k(u({keywords:G,cStyleComments:!0}),["java"]);k(u({keywords:v,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]);k(u({keywords:I,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}), else {
["cv","py"]);k(u({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]);k(u({keywords:J,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]);k(u({keywords:w,cStyleComments:!0,regexLiterals:!0}),["js"]);k(u({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes", var j = m(j),
hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);k(x([],[["str",/^[\S\s]+/]]),["regex"]);window.prettyPrintOne=function(a,m,e){var h=document.createElement("PRE");h.innerHTML=a;e&&D(h,e);E({g:m,i:e,h:h});return h.innerHTML};window.prettyPrint=function(a){function m(){for(var e=window.PR_SHOULD_USE_CONTINUATION?l.now()+250:Infinity;p<h.length&&l.now()<e;p++){var n=h[p],k=n.className;if(k.indexOf("prettyprint")>=0){var k=k.match(g),f,b;if(b= d;
!k){b=n;for(var o=void 0,c=b.firstChild;c;c=c.nextSibling)var i=c.nodeType,o=i===1?o?b:c:i===3?N.test(c.nodeValue)?b:o:o;b=(f=o===b?void 0:o)&&"CODE"===f.tagName}b&&(k=f.className.match(g));k&&(k=k[1]);b=!1;for(o=n.parentNode;o;o=o.parentNode)if((o.tagName==="pre"||o.tagName==="code"||o.tagName==="xmp")&&o.className&&o.className.indexOf("prettyprint")>=0){b=!0;break}b||((b=(b=n.className.match(/\blinenums\b(?::(\d+))?/))?b[1]&&b[1].length?+b[1]:!0:!1)&&D(n,b),d={g:k,h:n,i:b},E(d))}}p<h.length?setTimeout(m, c + 2 < i && "-" === f[c + 1] ? (d = m(f[c + 2]), c += 2) : d = j;
250):a&&a()}for(var e=[document.getElementsByTagName("pre"),document.getElementsByTagName("code"),document.getElementsByTagName("xmp")],h=[],k=0;k<e.length;++k)for(var t=0,s=e[k].length;t<s;++t)h.push(e[k][t]);var e=q,l=Date;l.now||(l={now:function(){return+new Date}});var p=0,d,g=/\blang(?:uage)?-([\w.]+)(?!\S)/;m()};window.PR={createSimpleLexer:x,registerLangHandler:k,sourceDecorator:u,PR_ATTRIB_NAME:"atn",PR_ATTRIB_VALUE:"atv",PR_COMMENT:"com",PR_DECLARATION:"dec",PR_KEYWORD:"kwd",PR_LITERAL:"lit", b.push([j, d]);
PR_NOCODE:"nocode",PR_PLAIN:"pln",PR_PUNCTUATION:"pun",PR_SOURCE:"src",PR_STRING:"str",PR_TAG:"tag",PR_TYPE:"typ"}})(); d < 65 || j > 122 || (d < 65 || j > 90 || b.push([Math.max(65, j) | 32, Math.min(d, 90) | 32]), d < 97 || j > 122 || b.push([Math.max(97, j) & -33, Math.min(d, 122) & -33]))
}
}
b.sort(function(a, f) {
return a[0] - f[0] || f[1] - a[1]
});
f = [];
j = [NaN, NaN];
for (c = 0; c < b.length; ++c) i = b[c], i[0] <= j[1] + 1 ? j[1] = Math.max(j[1], i[1]) : f.push(j = i);
b = ["["];
o && b.push("^");
b.push.apply(b, a);
for (c = 0; c < f.length; ++c) i = f[c], b.push(e(i[0])), i[1] > i[0] && (i[1] + 1 > i[0] && b.push("-"), b.push(e(i[1])));
b.push("]");
return b.join("")
}
function y(a) {
for (var f = a.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g), b = f.length, d = [], c = 0, i = 0; c < b; ++c) {
var j = f[c];
j === "(" ? ++i : "\\" === j.charAt(0) && (j = +j.substring(1)) && j <= i && (d[j] = -1)
}
for (c = 1; c < d.length; ++c) - 1 === d[c] && (d[c] = ++t);
for (i = c = 0; c < b; ++c) j = f[c], j === "(" ? (++i, d[i] === void 0 && (f[c] = "(?:")) : "\\" === j.charAt(0) && (j = +j.substring(1)) && j <= i && (f[c] = "\\" + d[i]);
for (i = c = 0; c < b; ++c)"^" === f[c] && "^" !== f[c + 1] && (f[c] = "");
if (a.ignoreCase && s) for (c = 0; c < b; ++c) j = f[c], a = j.charAt(0), j.length >= 2 && a === "[" ? f[c] = h(j) : a !== "\\" && (f[c] = j.replace(/[A-Za-z]/g, function(a) {
a = a.charCodeAt(0);
return "[" + String.fromCharCode(a & -33, a | 32) + "]"
}));
return f.join("")
}
for (var t = 0, s = !1, l = !1, p = 0, d = a.length; p < d; ++p) {
var g = a[p];
if (g.ignoreCase) l = !0;
else if (/[a-z]/i.test(g.source.replace(/\\u[\da-f]{4}|\\x[\da-f]{2}|\\[^UXux]/gi, ""))) {
s = !0;
l = !1;
break
}
}
for (var r = {
b: 8,
t: 9,
n: 10,
v: 11,
f: 12,
r: 13
}, n = [], p = 0, d = a.length; p < d; ++p) {
g = a[p];
if (g.global || g.multiline) throw Error("" + g);
n.push("(?:" + y(g) + ")")
}
return RegExp(n.join("|"), l ? "gi" : "g")
}
function M(a) {
function m(a) {
switch (a.nodeType) {
case 1:
if (e.test(a.className)) break;
for (var g = a.firstChild; g; g = g.nextSibling) m(g);
g = a.nodeName;
if ("BR" === g || "LI" === g) h[s] = "\n", t[s << 1] = y++, t[s++ << 1 | 1] = a;
break;
case 3:
case 4:
g = a.nodeValue, g.length && (g = p ? g.replace(/\r\n?/g, "\n") : g.replace(/[\t\n\r ]+/g, " "), h[s] = g, t[s << 1] = y, y += g.length, t[s++ << 1 | 1] = a)
}
}
var e = /(?:^|\s)nocode(?:\s|$)/,
h = [],
y = 0,
t = [],
s = 0,
l;
a.currentStyle ? l = a.currentStyle.whiteSpace : window.getComputedStyle && (l = document.defaultView.getComputedStyle(a, q).getPropertyValue("white-space"));
var p = l && "pre" === l.substring(0, 3);
m(a);
return {
a: h.join("").replace(/\n$/, ""),
c: t
}
}
function B(a, m, e, h) {
m && (a = {
a: m,
d: a
}, e(a), h.push.apply(h, a.e))
}
function x(a, m) {
function e(a) {
for (var l = a.d, p = [l, "pln"], d = 0, g = a.a.match(y) || [], r = {}, n = 0, z = g.length; n < z; ++n) {
var f = g[n],
b = r[f],
o = void 0,
c;
if (typeof b === "string") c = !1;
else {
var i = h[f.charAt(0)];
if (i) o = f.match(i[1]), b = i[0];
else {
for (c = 0; c < t; ++c) if (i = m[c], o = f.match(i[1])) {
b = i[0];
break
}
o || (b = "pln")
}
if ((c = b.length >= 5 && "lang-" === b.substring(0, 5)) && !(o && typeof o[1] === "string")) c = !1, b = "src";
c || (r[f] = b)
}
i = d;
d += f.length;
if (c) {
c = o[1];
var j = f.indexOf(c),
k = j + c.length;
o[2] && (k = f.length - o[2].length, j = k - c.length);
b = b.substring(5);
B(l + i, f.substring(0, j), e, p);
B(l + i + j, c, C(b, c), p);
B(l + i + k, f.substring(k), e, p)
} else p.push(l + i, b)
}
a.e = p
}
var h = {},
y;
(function() {
for (var e = a.concat(m), l = [], p = {}, d = 0, g = e.length; d < g; ++d) {
var r = e[d],
n = r[3];
if (n) for (var k = n.length; --k >= 0;) h[n.charAt(k)] = r;
r = r[1];
n = "" + r;
p.hasOwnProperty(n) || (l.push(r), p[n] = q)
}
l.push(/[\S\s]/);
y = L(l)
})();
var t = m.length;
return e
}
function u(a) {
var m = [],
e = [];
a.tripleQuotedStrings ? m.push(["str", /^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/, q, "'\""]) : a.multiLineStrings ? m.push(["str", /^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/, q, "'\"`"]) : m.push(["str", /^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/, q, "\"'"]);
a.verbatimStrings && e.push(["str", /^@"(?:[^"]|"")*(?:"|$)/, q]);
var h = a.hashComments;
h && (a.cStyleComments ? (h > 1 ? m.push(["com", /^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/, q, "#"]) : m.push(["com", /^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/, q, "#"]), e.push(["str", /^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/, q])) : m.push(["com", /^#[^\n\r]*/, q, "#"]));
a.cStyleComments && (e.push(["com", /^\/\/[^\n\r]*/, q]), e.push(["com", /^\/\*[\S\s]*?(?:\*\/|$)/, q]));
a.regexLiterals && e.push(["lang-regex", /^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);
(h = a.types) && e.push(["typ", h]);
a = ("" + a.keywords).replace(/^ | $/g, "");
a.length && e.push(["kwd", RegExp("^(?:" + a.replace(/[\s,]+/g, "|") + ")\\b"), q]);
m.push(["pln", /^\s+/, q, " \r\n\t\xa0"]);
e.push(["lit", /^@[$_a-z][\w$@]*/i, q], ["typ", /^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/, q], ["pln", /^[$_a-z][\w$@]*/i, q], ["lit", /^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i, q, "0123456789"], ["pln", /^\\[\S\s]?/, q], ["pun", /^.[^\s\w"-$'./@\\`]*/, q]);
return x(m, e)
}
function D(a, m) {
function e(a) {
switch (a.nodeType) {
case 1:
if (k.test(a.className)) break;
if ("BR" === a.nodeName) h(a), a.parentNode && a.parentNode.removeChild(a);
else for (a = a.firstChild; a; a = a.nextSibling) e(a);
break;
case 3:
case 4:
if (p) {
var b = a.nodeValue,
d = b.match(t);
if (d) {
var c = b.substring(0, d.index);
a.nodeValue = c;
(b = b.substring(d.index + d[0].length)) && a.parentNode.insertBefore(s.createTextNode(b), a.nextSibling);
h(a);
c || a.parentNode.removeChild(a)
}
}
}
}
function h(a) {
function b(a, d) {
var e = d ? a.cloneNode(!1) : a,
f = a.parentNode;
if (f) {
var f = b(f, 1),
g = a.nextSibling;
f.appendChild(e);
for (var h = g; h; h = g) g = h.nextSibling, f.appendChild(h)
}
return e
}
for (; !a.nextSibling;) if (a = a.parentNode, !a) return;
for (var a = b(a.nextSibling, 0), e;
(e = a.parentNode) && e.nodeType === 1;) a = e;
d.push(a)
}
var k = /(?:^|\s)nocode(?:\s|$)/,
t = /\r\n?|\n/,
s = a.ownerDocument,
l;
a.currentStyle ? l = a.currentStyle.whiteSpace : window.getComputedStyle && (l = s.defaultView.getComputedStyle(a, q).getPropertyValue("white-space"));
var p = l && "pre" === l.substring(0, 3);
for (l = s.createElement("LI"); a.firstChild;) l.appendChild(a.firstChild);
for (var d = [l], g = 0; g < d.length; ++g) e(d[g]);
m === (m | 0) && d[0].setAttribute("value", m);
var r = s.createElement("OL");
r.className = "linenums";
for (var n = Math.max(0, m - 1 | 0) || 0, g = 0, z = d.length; g < z; ++g) l = d[g], l.className = "L" + (g + n) % 10, l.firstChild || l.appendChild(s.createTextNode("\xa0")), r.appendChild(l);
a.appendChild(r)
}
function k(a, m) {
for (var e = m.length; --e >= 0;) {
var h = m[e];
A.hasOwnProperty(h) ? window.console && console.warn("cannot override language handler %s", h) : A[h] = a
}
}
function C(a, m) {
if (!a || !A.hasOwnProperty(a)) a = /^\s*</.test(m) ? "default-markup" : "default-code";
return A[a]
}
function E(a) {
var m =
a.g;
try {
var e = M(a.h),
h = e.a;
a.a = h;
a.c = e.c;
a.d = 0;
C(m, h)(a);
var k = /\bMSIE\b/.test(navigator.userAgent),
m = /\n/g,
t = a.a,
s = t.length,
e = 0,
l = a.c,
p = l.length,
h = 0,
d = a.e,
g = d.length,
a = 0;
d[g] = s;
var r, n;
for (n = r = 0; n < g;) d[n] !== d[n + 2] ? (d[r++] = d[n++], d[r++] = d[n++]) : n += 2;
g = r;
for (n = r = 0; n < g;) {
for (var z = d[n], f = d[n + 1], b = n + 2; b + 2 <= g && d[b + 1] === f;) b += 2;
d[r++] = z;
d[r++] = f;
n = b
}
for (d.length = r; h < p;) {
var o = l[h + 2] || s,
c = d[a + 2] || s,
b = Math.min(o, c),
i = l[h + 1],
j;
if (i.nodeType !== 1 && (j = t.substring(e, b))) {
k && (j = j.replace(m, "\r"));
i.nodeValue =
j;
var u = i.ownerDocument,
v = u.createElement("SPAN");
v.className = d[a + 1];
var x = i.parentNode;
x.replaceChild(v, i);
v.appendChild(i);
e < o && (l[h + 1] = i = u.createTextNode(t.substring(b, o)), x.insertBefore(i, v.nextSibling))
}
e = b;
e >= o && (h += 2);
e >= c && (a += 2)
}
} catch (w) {
"console" in window && console.log(w && w.stack ? w.stack : w)
}
}
var v = ["break,continue,do,else,for,if,return,while"],
w = [
[v, "auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"], "catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],
F = [w, "alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],
G = [w, "abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"],
H = [G, "as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],
w = [w, "debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],
I = [v, "and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"],
J = [v, "alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],
v = [v, "case,done,elif,esac,eval,fi,function,in,local,set,then,until"],
K = /^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,
N = /\S/,
O = u({
keywords: [F, H, w, "caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END" + I, J, v],
hashComments: !0,
cStyleComments: !0,
multiLineStrings: !0,
regexLiterals: !0
}),
A = {};
k(O, ["default-code"]);
k(x([], [
["pln", /^[^<?]+/],
["dec", /^<!\w[^>]*(?:>|$)/],
["com", /^<\!--[\S\s]*?(?:--\>|$)/],
["lang-", /^<\?([\S\s]+?)(?:\?>|$)/],
["lang-", /^<%([\S\s]+?)(?:%>|$)/],
["pun", /^(?:<[%?]|[%?]>)/],
["lang-", /^<xmp\b[^>]*>([\S\s]+?)<\/xmp\b[^>]*>/i],
["lang-js", /^<script\b[^>]*>([\S\s]*?)(<\/script\b[^>]*>)/i],
["lang-css", /^<style\b[^>]*>([\S\s]*?)(<\/style\b[^>]*>)/i],
["lang-in.tag", /^(<\/?[a-z][^<>]*>)/i]
]), ["default-markup", "htm", "html", "mxml", "xhtml", "xml", "xsl"]);
k(x([
["pln", /^\s+/, q, " \t\r\n"],
["atv", /^(?:"[^"]*"?|'[^']*'?)/, q, "\"'"]
], [
["tag", /^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],
["atn", /^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],
["lang-uq.val", /^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],
["pun", /^[/<->]+/],
["lang-js", /^on\w+\s*=\s*"([^"]+)"/i],
["lang-js", /^on\w+\s*=\s*'([^']+)'/i],
["lang-js", /^on\w+\s*=\s*([^\s"'>]+)/i],
["lang-css", /^style\s*=\s*"([^"]+)"/i],
["lang-css", /^style\s*=\s*'([^']+)'/i],
["lang-css", /^style\s*=\s*([^\s"'>]+)/i]
]), ["in.tag"]);
k(x([], [
["atv", /^[\S\s]+/]
]), ["uq.val"]);
k(u({
keywords: F,
hashComments: !0,
cStyleComments: !0,
types: K
}), ["c", "cc", "cpp", "cxx", "cyc", "m"]);
k(u({
keywords: "null,true,false"
}), ["json"]);
k(u({
keywords: H,
hashComments: !0,
cStyleComments: !0,
verbatimStrings: !0,
types: K
}), ["cs"]);
k(u({
keywords: G,
cStyleComments: !0
}), ["java"]);
k(u({
keywords: v,
hashComments: !0,
multiLineStrings: !0
}), ["bsh", "csh", "sh"]);
k(u({
keywords: I,
hashComments: !0,
multiLineStrings: !0,
tripleQuotedStrings: !0
}), ["cv", "py"]);
k(u({
keywords: "caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",
hashComments: !0,
multiLineStrings: !0,
regexLiterals: !0
}), ["perl", "pl", "pm"]);
k(u({
keywords: J,
hashComments: !0,
multiLineStrings: !0,
regexLiterals: !0
}), ["rb"]);
k(u({
keywords: w,
cStyleComments: !0,
regexLiterals: !0
}), ["js"]);
k(u({
keywords: "all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes",
hashComments: 3,
cStyleComments: !0,
multilineStrings: !0,
tripleQuotedStrings: !0,
regexLiterals: !0
}), ["coffee"]);
k(x([], [
["str", /^[\S\s]+/]
]), ["regex"]);
window.prettyPrintOne = function(a, m, e) {
var h = document.createElement("PRE");
h.innerHTML = a;
e && D(h, e);
E({
g: m,
i: e,
h: h
});
return h.innerHTML
};
window.prettyPrint = function(a) {
function m() {
for (var e = window.PR_SHOULD_USE_CONTINUATION ? l.now() + 250 : Infinity; p < h.length && l.now() < e; p++) {
var n = h[p],
k = n.className;
if (k.indexOf("prettyprint") >= 0) {
var k = k.match(g),
f, b;
if (b = !k) {
b = n;
for (var o = void 0, c = b.firstChild; c; c = c.nextSibling) var i = c.nodeType,
o = i === 1 ? o ? b : c : i === 3 ? N.test(c.nodeValue) ? b : o : o;
b = (f = o === b ? void 0 : o) && "CODE" === f.tagName
}
b && (k = f.className.match(g));
k && (k = k[1]);
b = !1;
for (o = n.parentNode; o; o = o.parentNode) if ((o.tagName === "pre" || o.tagName === "code" || o.tagName === "xmp") && o.className && o.className.indexOf("prettyprint") >= 0) {
b = !0;
break
}
b || ((b = (b = n.className.match(/\blinenums\b(?::(\d+))?/)) ? b[1] && b[1].length ? +b[1] : !0 : !1) && D(n, b), d = {
g: k,
h: n,
i: b
}, E(d))
}
}
p < h.length ? setTimeout(m, 250) : a && a()
}
for (var e = [document.getElementsByTagName("pre"), document.getElementsByTagName("code"), document.getElementsByTagName("xmp")], h = [], k = 0; k < e.length; ++k) for (var t = 0, s = e[k].length; t < s; ++t) h.push(e[k][t]);
var e = q,
l = Date;
l.now || (l = {
now: function() {
return +new Date
}
});
var p = 0,
d, g = /\blang(?:uage)?-([\w.]+)(?!\S)/;
m()
};
window.PR = {
createSimpleLexer: x,
registerLangHandler: k,
sourceDecorator: u,
PR_ATTRIB_NAME: "atn",
PR_ATTRIB_VALUE: "atv",
PR_COMMENT: "com",
PR_DECLARATION: "dec",
PR_KEYWORD: "kwd",
PR_LITERAL: "lit",
PR_NOCODE: "nocode",
PR_PLAIN: "pln",
PR_PUNCTUATION: "pun",
PR_SOURCE: "src",
PR_STRING: "str",
PR_TAG: "tag",
PR_TYPE: "typ"
}
})();

1157
docs/scripts/sunlight.js Normal file

File diff suppressed because it is too large Load Diff

100
docs/scripts/toc.js Normal file
View File

@ -0,0 +1,100 @@
(function($) {
$.fn.toc = function(options) {
var self = this;
var opts = $.extend({}, jQuery.fn.toc.defaults, options);
var container = $(opts.container);
var headings = $(opts.selectors, container);
var headingOffsets = [];
var activeClassName = opts.prefix+'-active';
var scrollTo = function(e) {
if (opts.smoothScrolling) {
e.preventDefault();
var elScrollTo = $(e.target).attr('href');
var $el = $(elScrollTo);
$('body,html').animate({ scrollTop: $el.offset().top }, 400, 'swing', function() {
location.hash = elScrollTo;
});
}
$('li', self).removeClass(activeClassName);
$(e.target).parent().addClass(activeClassName);
};
//highlight on scroll
var timeout;
var highlightOnScroll = function(e) {
if (timeout) {
clearTimeout(timeout);
}
timeout = setTimeout(function() {
var top = $(window).scrollTop(),
highlighted;
for (var i = 0, c = headingOffsets.length; i < c; i++) {
if (headingOffsets[i] >= top) {
$('li', self).removeClass(activeClassName);
highlighted = $('li:eq('+(i-1)+')', self).addClass(activeClassName);
opts.onHighlight(highlighted);
break;
}
}
}, 50);
};
if (opts.highlightOnScroll) {
$(window).bind('scroll', highlightOnScroll);
highlightOnScroll();
}
return this.each(function() {
//build TOC
var el = $(this);
var ul = $('<ul/>');
headings.each(function(i, heading) {
var $h = $(heading);
headingOffsets.push($h.offset().top - opts.highlightOffset);
//add anchor
var anchor = $('<span/>').attr('id', opts.anchorName(i, heading, opts.prefix)).insertBefore($h);
//build TOC item
var a = $('<a/>')
.text(opts.headerText(i, heading, $h))
.attr('href', '#' + opts.anchorName(i, heading, opts.prefix))
.bind('click', function(e) {
scrollTo(e);
el.trigger('selected', $(this).attr('href'));
});
var li = $('<li/>')
.addClass(opts.itemClass(i, heading, $h, opts.prefix))
.append(a);
ul.append(li);
});
el.html(ul);
});
};
jQuery.fn.toc.defaults = {
container: 'body',
selectors: 'h1,h2,h3',
smoothScrolling: true,
prefix: 'toc',
onHighlight: function() {},
highlightOnScroll: true,
highlightOffset: 100,
anchorName: function(i, heading, prefix) {
return prefix+i;
},
headerText: function(i, heading, $heading) {
return $heading.text();
},
itemClass: function(i, heading, $heading, prefix) {
return prefix + '-' + $heading[0].tagName.toLowerCase();
}
};
})(jQuery);

960
docs/styles/darkstrap.css Normal file
View File

@ -0,0 +1,960 @@
/*
* Darkstrap v0.9.2
* By danneu (http://github.com/danneu/darkstrap)
* Based off Twitter Bootstrap v2.2.2
*/
tr.warning,
tr.success,
tr.error,
tr.info {
color: #fff;
}
body {
color: #c6c6c6;
background-color: #2f2f2f;
}
a:hover {
color: #1ab2ff;
}
textarea,
input[type="text"],
input[type="password"],
input[type="datetime"],
input[type="datetime-local"],
input[type="date"],
input[type="month"],
input[type="time"],
input[type="week"],
input[type="number"],
input[type="email"],
input[type="url"],
input[type="search"],
input[type="tel"],
input[type="color"],
.uneditable-input {
background-color: #cccccc;
}
select {
background-color: #cccccc;
}
.uneditable-input,
.uneditable-textarea {
background-color: #c9c9c9;
}
input:-moz-placeholder,
textarea:-moz-placeholder {
color: #666666;
}
input:-ms-input-placeholder,
textarea:-ms-input-placeholder {
color: #666666;
}
input::-webkit-input-placeholder,
textarea::-webkit-input-placeholder {
color: #666666;
}
.control-group.warning .input-prepend .add-on,
.control-group.warning .input-append .add-on {
background-color: #faa732;
}
.control-group.error .input-prepend .add-on,
.control-group.error .input-append .add-on {
background-color: #fc5b5e;
}
.control-group.success .input-prepend .add-on,
.control-group.success .input-append .add-on {
background-color: #5bb75b;
}
.control-group.info .input-prepend .add-on,
.control-group.info .input-append .add-on {
background-color: #3a87ad;
}
.form-actions {
background-color: #444444;
}
.help-block,
.help-inline {
color: #ececec;
}
.table th,
.table td {
border-top: 1px solid #666666;
}
.table tbody + tbody {
border-top: 2px solid #666666;
}
.table .table {
background-color: #2f2f2f;
}
.table-bordered {
border: 1px solid #666666;
}
.table-bordered th,
.table-bordered td {
border-left: 1px solid #666666;
}
.table-striped tbody > tr:nth-child(odd) > td,
.table-striped tbody > tr:nth-child(odd) > th {
background-color: #444444;
}
.table-hover tbody tr:hover td,
.table-hover tbody tr:hover th {
background-color: #666666;
}
.table tbody tr.success td {
background-color: #5bb75b;
}
.table tbody tr.error td {
background-color: #fc5b5e;
}
.table tbody tr.warning td {
background-color: #faa732;
}
.table tbody tr.info td {
background-color: #3a87ad;
}
.table-hover tbody tr.success:hover td {
background-color: #4cad4c;
}
.table-hover tbody tr.error:hover td {
background-color: #fc4245;
}
.table-hover tbody tr.warning:hover td {
background-color: #f99c19;
}
.table-hover tbody tr.info:hover td {
background-color: #34789a;
}
[class^="icon-"],
[class*=" icon-"] {
background-image: url("../img/glyphicons-halflings.png");
}
.icon-white,
.nav-pills > .active > a > [class^="icon-"],
.nav-pills > .active > a > [class*=" icon-"],
.nav-list > .active > a > [class^="icon-"],
.nav-list > .active > a > [class*=" icon-"],
.navbar-inverse .nav > .active > a > [class^="icon-"],
.navbar-inverse .nav > .active > a > [class*=" icon-"],
.dropdown-menu > li > a:hover > [class^="icon-"],
.dropdown-menu > li > a:hover > [class*=" icon-"],
.dropdown-menu > .active > a > [class^="icon-"],
.dropdown-menu > .active > a > [class*=" icon-"],
.dropdown-submenu:hover > a > [class^="icon-"],
.dropdown-submenu:hover > a > [class*=" icon-"] {
background-image: url("../img/glyphicons-halflings-white.png");
}
.btn-link:hover {
color: #1ab2ff;
}
.alert {
background-color: #faa732;
border: 1px solid #fa7d23;
}
.alert-success {
background-color: #5bb75b;
border-color: #5cad4c;
}
.alert-danger,
.alert-error {
background-color: #fc5b5e;
border-color: #fc4c6d;
}
.alert-info {
background-color: #3a87ad;
border-color: #318292;
}
.nav-tabs > .active > a,
.nav-tabs > .active > a:hover {
background-color: #2f2f2f;
}
.nav .dropdown-toggle:hover .caret {
border-top-color: #1ab2ff;
border-bottom-color: #1ab2ff;
}
.navbar-inner {
background-color: #363636;
background-image: -moz-linear-gradient(top, #444444, #222222);
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222));
background-image: -webkit-linear-gradient(top, #444444, #222222);
background-image: -o-linear-gradient(top, #444444, #222222);
background-image: linear-gradient(to bottom, #444444, #222222);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF444444', endColorstr='#FF222222', GradientType=0);
border: 1px solid #030303;
}
.navbar .brand {
color: #c6c6c6;
text-shadow: 0 1px 0 #444444;
}
.navbar-text {
color: #c6c6c6;
}
.navbar-link {
color: #c6c6c6;
}
.navbar-link:hover {
color: white;
}
.navbar .divider-vertical {
border-left: 1px solid #222222;
border-right: 1px solid #444444;
}
.navbar .nav > li > a {
color: #c6c6c6;
text-shadow: 0 1px 0 #444444;
}
.navbar .nav > li > a:focus,
.navbar .nav > li > a:hover {
color: white;
}
.navbar .nav > .active > a,
.navbar .nav > .active > a:hover,
.navbar .nav > .active > a:focus {
color: white;
background-color: #151515;
}
.navbar .btn-navbar {
background-color: #292929;
background-image: -moz-linear-gradient(top, #373737, #151515);
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#373737), to(#151515));
background-image: -webkit-linear-gradient(top, #373737, #151515);
background-image: -o-linear-gradient(top, #373737, #151515);
background-image: linear-gradient(to bottom, #373737, #151515);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF373737', endColorstr='#FF151515', GradientType=0);
border-color: #151515 #151515 black;
*background-color: #151515;
}
.navbar .btn-navbar:hover, .navbar .btn-navbar:active, .navbar .btn-navbar.active, .navbar .btn-navbar.disabled, .navbar .btn-navbar[disabled] {
background-color: #151515;
*background-color: #090909;
}
.navbar .btn-navbar:active, .navbar .btn-navbar.active {
background-color: black \9;
}
.navbar .nav li.dropdown > a:hover .caret {
border-top-color: white;
border-bottom-color: white;
}
.navbar .nav li.dropdown.open > .dropdown-toggle,
.navbar .nav li.dropdown.active > .dropdown-toggle,
.navbar .nav li.dropdown.open.active > .dropdown-toggle {
background-color: #151515;
color: white;
}
.navbar .nav li.dropdown > .dropdown-toggle .caret {
border-top-color: #c6c6c6;
border-bottom-color: #c6c6c6;
}
.navbar .nav li.dropdown.open > .dropdown-toggle .caret,
.navbar .nav li.dropdown.active > .dropdown-toggle .caret,
.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret {
border-top-color: white;
border-bottom-color: white;
}
.well {
-webkit-box-shadow: rgba(255, 255, 255, 0.1) 0 1px 0, rgba(0, 0, 0, 0.8) 0 1px 7px 0px inset;
-moz-box-shadow: rgba(255, 255, 255, 0.1) 0 1px 0, rgba(0, 0, 0, 0.8) 0 1px 7px 0px inset;
box-shadow: rgba(255, 255, 255, 0.1) 0 1px 0, rgba(0, 0, 0, 0.8) 0 1px 7px 0px inset;
background: #202020;
background-color: rgba(0, 0, 0, 0.3);
border: 0;
}
.darkwell, .breadcrumb, code, pre, select,
input[type="text"],
input[type="password"],
input[type="datetime"],
input[type="datetime-local"],
input[type="date"],
input[type="month"],
input[type="time"],
input[type="week"],
input[type="number"],
input[type="email"],
input[type="url"],
input[type="search"],
input[type="tel"],
input[type="color"],
.uneditable-input, textarea, .hero-unit, .progress {
-webkit-box-shadow: rgba(255, 255, 255, 0.1) 0 1px 0, rgba(0, 0, 0, 0.8) 0 1px 7px 0px inset;
-moz-box-shadow: rgba(255, 255, 255, 0.1) 0 1px 0, rgba(0, 0, 0, 0.8) 0 1px 7px 0px inset;
box-shadow: rgba(255, 255, 255, 0.1) 0 1px 0, rgba(0, 0, 0, 0.8) 0 1px 7px 0px inset;
background: #202020;
background-color: rgba(0, 0, 0, 0.3);
border: 0;
}
.breadcrumb {
border: 0;
}
.breadcrumb li {
text-shadow: 0 1px 0 black;
}
.page-header {
-webkit-box-shadow: rgba(255, 255, 255, 0.07) 0 1px 0;
-moz-box-shadow: rgba(255, 255, 255, 0.07) 0 1px 0;
box-shadow: rgba(255, 255, 255, 0.07) 0 1px 0;
border-bottom: 1px solid #121212;
}
h1, h2, h3, h4, h5, h6 {
color: white;
}
h6 {
color: #999;
}
blockquote {
border-left-color: #111;
}
blockquote.pull-right {
border-right-color: #111;
}
hr {
-webkit-box-shadow: rgba(255, 255, 255, 0.07) 0 1px 0;
-moz-box-shadow: rgba(255, 255, 255, 0.07) 0 1px 0;
box-shadow: rgba(255, 255, 255, 0.07) 0 1px 0;
border-bottom: 1px solid #121212;
border-top: none;
}
code {
border: none;
padding: 2px 4px;
}
pre {
border: none;
color: #c6c6c6;
padding: 8px;
}
legend {
-webkit-box-shadow: rgba(255, 255, 255, 0.07) 0 1px 0;
-moz-box-shadow: rgba(255, 255, 255, 0.07) 0 1px 0;
box-shadow: rgba(255, 255, 255, 0.07) 0 1px 0;
border-bottom: 1px solid #121212;
color: #fff;
}
select,
input[type="text"],
input[type="password"],
input[type="datetime"],
input[type="datetime-local"],
input[type="date"],
input[type="month"],
input[type="time"],
input[type="week"],
input[type="number"],
input[type="email"],
input[type="url"],
input[type="search"],
input[type="tel"],
input[type="color"],
.uneditable-input {
color: white;
height: 21px;
}
select:-moz-placeholder,
input[type="text"]:-moz-placeholder,
input[type="password"]:-moz-placeholder,
input[type="datetime"]:-moz-placeholder,
input[type="datetime-local"]:-moz-placeholder,
input[type="date"]:-moz-placeholder,
input[type="month"]:-moz-placeholder,
input[type="time"]:-moz-placeholder,
input[type="week"]:-moz-placeholder,
input[type="number"]:-moz-placeholder,
input[type="email"]:-moz-placeholder,
input[type="url"]:-moz-placeholder,
input[type="search"]:-moz-placeholder,
input[type="tel"]:-moz-placeholder,
input[type="color"]:-moz-placeholder,
.uneditable-input:-moz-placeholder {
color: #666666;
}
select:-ms-input-placeholder,
input[type="text"]:-ms-input-placeholder,
input[type="password"]:-ms-input-placeholder,
input[type="datetime"]:-ms-input-placeholder,
input[type="datetime-local"]:-ms-input-placeholder,
input[type="date"]:-ms-input-placeholder,
input[type="month"]:-ms-input-placeholder,
input[type="time"]:-ms-input-placeholder,
input[type="week"]:-ms-input-placeholder,
input[type="number"]:-ms-input-placeholder,
input[type="email"]:-ms-input-placeholder,
input[type="url"]:-ms-input-placeholder,
input[type="search"]:-ms-input-placeholder,
input[type="tel"]:-ms-input-placeholder,
input[type="color"]:-ms-input-placeholder,
.uneditable-input:-ms-input-placeholder {
color: #666666;
}
select::-webkit-input-placeholder,
input[type="text"]::-webkit-input-placeholder,
input[type="password"]::-webkit-input-placeholder,
input[type="datetime"]::-webkit-input-placeholder,
input[type="datetime-local"]::-webkit-input-placeholder,
input[type="date"]::-webkit-input-placeholder,
input[type="month"]::-webkit-input-placeholder,
input[type="time"]::-webkit-input-placeholder,
input[type="week"]::-webkit-input-placeholder,
input[type="number"]::-webkit-input-placeholder,
input[type="email"]::-webkit-input-placeholder,
input[type="url"]::-webkit-input-placeholder,
input[type="search"]::-webkit-input-placeholder,
input[type="tel"]::-webkit-input-placeholder,
input[type="color"]::-webkit-input-placeholder,
.uneditable-input::-webkit-input-placeholder {
color: #666666;
}
textarea {
color: white;
}
textarea:-moz-placeholder {
color: #666666;
}
textarea:-ms-input-placeholder {
color: #666666;
}
textarea::-webkit-input-placeholder {
color: #666666;
}
select {
height: 29px;
}
.input-prepend .add-on,
.input-append .add-on {
background: #444;
color: #c6c6c6;
border-color: #111;
text-shadow: 0 1px 0 black;
}
.form-actions {
border-top-color: #222;
}
.well .form-actions {
border-top-color: #000;
background-color: rgba(0, 0, 0, 0.3);
margin-left: -17px;
margin-right: -17px;
margin-bottom: -17px;
}
.help-inline,
.help-block {
color: #999;
}
.control-group.warning input, .control-group.warning select, .control-group.warning textarea {
color: #faa732;
border-color: #faa732;
-webkit-box-shadow: rgba(255, 255, 255, 0.1) 0 1px 0, rgba(0, 0, 0, 0.8) 0 1px 7px 0px inset;
-moz-box-shadow: rgba(255, 255, 255, 0.1) 0 1px 0, rgba(0, 0, 0, 0.8) 0 1px 7px 0px inset;
box-shadow: rgba(255, 255, 255, 0.1) 0 1px 0, rgba(0, 0, 0, 0.8) 0 1px 7px 0px inset;
background: #202020;
background-color: rgba(0, 0, 0, 0.3);
}
.control-group.warning input:focus,
.control-group.warning select:focus,
.control-group.warning textarea:focus {
border-color: #faa732;
-webkit-box-shadow: 0 0 6px #faa732;
-moz-box-shadow: 0 0 6px #faa732;
box-shadow: 0 0 6px #faa732;
}
.control-group.warning .control-label,
.control-group.warning .help-block,
.control-group.warning .help-inline {
color: #faa732;
}
.control-group.success input, .control-group.success select, .control-group.success textarea {
color: #5bb75b;
border-color: #5bb75b;
-webkit-box-shadow: rgba(255, 255, 255, 0.1) 0 1px 0, rgba(0, 0, 0, 0.8) 0 1px 7px 0px inset;
-moz-box-shadow: rgba(255, 255, 255, 0.1) 0 1px 0, rgba(0, 0, 0, 0.8) 0 1px 7px 0px inset;
box-shadow: rgba(255, 255, 255, 0.1) 0 1px 0, rgba(0, 0, 0, 0.8) 0 1px 7px 0px inset;
background: #202020;
background-color: rgba(0, 0, 0, 0.3);
}
.control-group.success input:focus,
.control-group.success select:focus,
.control-group.success textarea:focus {
border-color: #5bb75b;
-webkit-box-shadow: 0 0 6px #5bb75b;
-moz-box-shadow: 0 0 6px #5bb75b;
box-shadow: 0 0 6px #5bb75b;
}
.control-group.success .control-label,
.control-group.success .help-block,
.control-group.success .help-inline {
color: #5bb75b;
}
.control-group.error input, .control-group.error select, .control-group.error textarea {
color: #fc5b5e;
border-color: #fc5b5e;
-webkit-box-shadow: rgba(255, 255, 255, 0.1) 0 1px 0, rgba(0, 0, 0, 0.8) 0 1px 7px 0px inset;
-moz-box-shadow: rgba(255, 255, 255, 0.1) 0 1px 0, rgba(0, 0, 0, 0.8) 0 1px 7px 0px inset;
box-shadow: rgba(255, 255, 255, 0.1) 0 1px 0, rgba(0, 0, 0, 0.8) 0 1px 7px 0px inset;
background: #202020;
background-color: rgba(0, 0, 0, 0.3);
}
.control-group.error input:focus,
.control-group.error select:focus,
.control-group.error textarea:focus {
border-color: #fc5b5e;
-webkit-box-shadow: 0 0 6px #fc5b5e;
-moz-box-shadow: 0 0 6px #fc5b5e;
box-shadow: 0 0 6px #fc5b5e;
}
.control-group.error .control-label,
.control-group.error .help-block,
.control-group.error .help-inline {
color: #fc5b5e;
}
.control-group.info input, .control-group.info select, .control-group.info textarea {
color: #3a87ad;
border-color: #3a87ad;
-webkit-box-shadow: rgba(255, 255, 255, 0.1) 0 1px 0, rgba(0, 0, 0, 0.8) 0 1px 7px 0px inset;
-moz-box-shadow: rgba(255, 255, 255, 0.1) 0 1px 0, rgba(0, 0, 0, 0.8) 0 1px 7px 0px inset;
box-shadow: rgba(255, 255, 255, 0.1) 0 1px 0, rgba(0, 0, 0, 0.8) 0 1px 7px 0px inset;
background: #202020;
background-color: rgba(0, 0, 0, 0.3);
}
.control-group.info input:focus,
.control-group.info select:focus,
.control-group.info textarea:focus {
border-color: #3a87ad;
-webkit-box-shadow: 0 0 6px #3a87ad;
-moz-box-shadow: 0 0 6px #3a87ad;
box-shadow: 0 0 6px #3a87ad;
}
.control-group.info .control-label,
.control-group.info .help-block,
.control-group.info .help-inline {
color: #3a87ad;
}
input:focus:invalid,
textarea:focus:invalid,
select:focus:invalid {
border-color: #fc5b5e;
}
input:focus:invalid:focus,
textarea:focus:invalid:focus,
select:focus:invalid:focus {
border-color: #fc5b5e;
box-shadow: 0 0 6px #fc5b5e;
}
.btn-link {
text-shadow: none;
}
.img-polaroid {
background-color: #111;
background-color: rgba(0, 0, 0, 0.3);
}
.nav-tabs .open .dropdown-toggle,
.nav-pills .open .dropdown-toggle,
.nav > .open.active > a:hover {
background-color: rgba(0, 0, 0, 0.25);
border-color: transparent transparent #666666 transparent;
}
.nav > .dropdown.active > a:hover {
color: #fff;
}
.nav-tabs .active .dropdown-toggle .caret,
.nav-pills .active .dropdown-toggle .caret {
border-top-color: #fff;
}
.nav-tabs {
border-bottom: 1px solid #666666;
}
.nav-tabs > .active > a, .nav-tabs > .active > a:hover {
background-color: #2f2f2f;
color: #fff;
border-color: #666666 #666666 transparent #666666;
}
.nav-tabs > li > a:hover {
border-color: #2f2f2f #2f2f2f #666666 #2f2f2f;
background-color: rgba(0, 0, 0, 0.25);
color: #00aaff;
}
.nav-tabs.nav-stacked > li > a, .nav-tabs.nav-stacked > li > a:hover {
border-color: #666;
}
.well > .nav-tabs > .active > a, .well > .nav-tabs > .active > a:hover {
background-color: #202020;
}
.nav-pills > li > a:hover {
background-color: rgba(0, 0, 0, 0.25);
color: #00aaff;
}
.nav-list > li > a,
.nav-list .nav-header {
text-shadow: 0 1px 0 black;
}
.nav-list > li > a:hover {
background-color: rgba(0, 0, 0, 0.25);
color: #00aaff;
}
.nav-list .active > a:hover {
background-color: #0088cc;
color: white;
}
.tabs-below .nav-tabs {
border-top: 1px solid #666666;
}
.tabs-left .nav-tabs {
border-right: 1px solid #666666;
}
.tabs-right .nav-tabs {
border-left: 1px solid #666666;
}
.tabs-below .nav-tabs > li > a:hover {
border-top: 1px solid #666666;
}
.tabs-left .nav-tabs > li > a:hover {
border-color: transparent #666666 transparent transparent;
}
.tabs-right .nav-tabs > li > a:hover {
border-color: transparent transparent transparent #666666;
}
.tabs-below .nav-tabs .active > a,
.tabs-below .nav-tabs .active > a:hover {
border-color: transparent #666666 #666666 #666666;
}
.tabs-left .nav-tabs .active > a,
.tabs-left .nav-tabs .active > a:hover {
border-color: #666666 transparent #666666 #666666;
}
.tabs-right .nav-tabs .active > a,
.tabs-right .nav-tabs .active > a:hover {
border-color: #666666 #666666 #666666 transparent;
}
.nav-list > li > a,
.nav-list .nav-header {
text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);
}
.nav-tabs > li > a:hover {
border-color: transparent transparent #666666 transparent;
}
.nav > .disabled > a:hover {
color: #999;
}
.nav-list .divider {
background-color: transparent;
-webkit-box-shadow: rgba(255, 255, 255, 0.07) 0 1px 0;
-moz-box-shadow: rgba(255, 255, 255, 0.07) 0 1px 0;
box-shadow: rgba(255, 255, 255, 0.07) 0 1px 0;
border-bottom: 1px solid #121212;
}
.navbar .brand {
text-shadow: 0 1px 0 black;
}
.navbar .divider-vertical {
border: transparent;
-webkit-box-shadow: rgba(255, 255, 255, 0.07) 1px 0 0;
-moz-box-shadow: rgba(255, 255, 255, 0.07) 1px 0 0;
box-shadow: rgba(255, 255, 255, 0.07) 1px 0 0;
border-right: 1px solid #121212;
}
.navbar-inverse .brand {
color: #555;
text-shadow: 0 1px 0 white;
}
.navbar-inverse .brand:hover {
color: #555;
}
.navbar-inverse .navbar-inner {
background: #fafafa;
border: 1px solid #030303;
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.5);
background: -moz-linear-gradient(top, white 0%, #999999 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, white), color-stop(100%, #999999));
background: -webkit-linear-gradient(top, white 0%, #999999 100%);
background: -o-linear-gradient(top, white 0%, #999999 100%);
background: -ms-linear-gradient(top, white 0%, #999999 100%);
background: linear-gradient(to bottom, #ffffff 0%, #999999 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#999999',GradientType=0 );
}
.navbar-inverse .nav > li > a {
color: #555;
}
.navbar-inverse .nav > li > a:hover {
color: #333;
}
.navbar-inverse .nav > .active > a,
.navbar-inverse .nav > .active > a:hover {
background-color: #e5e5e5;
box-shadow: 0 3px 8px rgba(0, 0, 0, 0.125) inset;
color: #555555;
}
.navbar-inverse .nav li.dropdown.open > .dropdown-toggle,
.navbar-inverse .nav li.dropdown.active > .dropdown-toggle,
.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle {
background-color: #e5e5e5;
color: #555;
}
.navbar-inverse .nav li.dropdown > a:hover .caret {
border-top-color: #555;
color: #555;
}
.navbar-inverse .nav > li > a:focus,
.navbar-inverse .nav > li > a:hover {
background-color: transparent;
color: #333;
}
.navbar-inverse .nav li.dropdown.open > .dropdown-toggle,
.navbar-inverse .nav li.dropdown.active > .dropdown-toggle,
.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle {
background-color: #e5e5e5;
color: #555;
}
.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret,
.navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret,
.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret {
border-bottom-color: #555;
border-top-color: #555;
color: #555;
}
.navbar-inverse .navbar-search .search-query {
box-shadow: 0 3px 8px rgba(0, 0, 0, 0.6) inset;
background-color: white;
color: #333;
}
.navbar-inverse .navbar-search input.search-query:focus {
box-shadow: 0 3px 8px rgba(0, 0, 0, 0.6) inset, 0 0 8px rgba(82, 168, 236, 0.6);
box-shadow: 0 3px 8px rgba(0, 0, 0, 0.6) inset, 0 0 8px rgba(82, 168, 236, 0.9);
padding: 4px 14px;
outline: 0 none;
}
.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret {
border-bottom-color: #555;
border-top-color: #555;
}
.navbar-inverse .nav li.dropdown > a:hover .caret {
border-bottom-color: #333;
border-top-color: #333;
}
.navbar-inverse .navbar-search .search-query:-moz-placeholder {
color: #999;
}
.pagination ul > li > a,
.pagination ul > li > span {
background: transparent;
border-color: #666;
}
.pagination ul > li > a:hover,
.pagination ul > .active > a,
.pagination ul > .active > span {
background-color: rgba(0, 0, 0, 0.25);
}
.pager li > a, .pager li > span {
background-color: transparent;
border-color: #666;
}
.pager li > a:hover {
background-color: rgba(0, 0, 0, 0.25);
}
.pager .disabled > a,
.pager .disabled > a:hover,
.pager .disabled > span {
background-color: transparent;
}
.label,
.badge {
text-shadow: 1px 1px 0 black;
box-shadow: 1px 1px 0 black;
}
.label-inverse,
.badge-inverse {
background-color: #111;
}
.hero-unit {
background: #111;
color: #ccc;
}
.thumbnail {
border-color: #666;
box-shadow: 0 1px 3px black;
}
.thumbnail .caption {
color: #999;
}
.alert {
color: white;
border-color: #a86404;
text-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
}
.alert h1, .alert h2, .alert h3, .alert h4, .alert h5, .alert h6 {
color: #c17305;
}
.alert-error {
border-color: #d40408;
}
.alert-error h1, .alert-error h2, .alert-error h3, .alert-error h4, .alert-error h5, .alert-error h6 {
color: #ed0409;
}
.alert-success {
border-color: #2d662d;
}
.alert-success h1, .alert-success h2, .alert-success h3, .alert-success h4, .alert-success h5, .alert-success h6 {
color: #347834;
}
.alert-info {
border-color: #1a3c4e;
}
.alert-info h1, .alert-info h2, .alert-info h3, .alert-info h4, .alert-info h5, .alert-info h6 {
color: #204B61;
}
select::-webkit-scrollbar {
-webkit-appearance: none;
width: 11px;
}
select::-webkit-scrollbar-thumb {
border-radius: 8px;
border: 2px solid #202020;
background-color: rgba(0, 0, 0, 0.5);
}
.modal {
background-color: #444;
}
.modal-header {
border-bottom: 1px solid #222222;
}
.modal-body p {
color: #c6c6c6;
}
.modal-footer {
background-color: #373737;
border-top: 1px solid #222222;
-moz-box-shadow: 0 1px 0 #333333 inset;
-webkit-box-shadow: 0 1px 0 #333333 inset;
-o-box-shadow: 0 1px 0 #333333 inset;
box-shadow: 0 1px 0 #333333 inset;
}
.popover {
background: #444;
border: 1px solid rgba(0, 0, 0, 0.5);
border: 1px solid black;
}
.popover-title {
background: #373737;
border-bottom-color: #222;
}
.popover.top .arrow:after {
border-top-color: #444;
}
.popover.right .arrow:after {
border-right-color: #444;
}
.popover.bottom .arrow:after {
border-bottom-color: #444;
}
.popover.left .arrow:after {
border-left-color: #444;
}

View File

@ -6,10 +6,10 @@ html
body body
{ {
font: 14px "DejaVu Sans Condensed", "Liberation Sans", "Nimbus Sans L", Tahoma, Geneva, "Helvetica Neue", Helvetica, Arial, sans serif; font: 14px "DejaVu Sans Condensed", "Liberation Sans", "Nimbus Sans L", Tahoma, Geneva, "Helvetica Neue", Helvetica, Arial, sans-serif;
line-height: 130%; line-height: 130%;
color: #000; color: #000;
background-color: #fff; background-color: #fff;
} }
a { a {
@ -26,17 +26,17 @@ a:active {
header header
{ {
display: block; display: block;
padding: 6px 4px; padding: 6px 4px;
} }
.class-description { .class-description {
font-style: italic; font-style: italic;
font-family: Palatino, 'Palatino Linotype', serif; font-family: Palatino, 'Palatino Linotype', serif;
font-size: 130%; font-size: 130%;
line-height: 140%; line-height: 140%;
margin-bottom: 1em; margin-bottom: 1em;
margin-top: 1em; margin-top: 1em;
} }
#main { #main {
@ -46,10 +46,10 @@ header
section section
{ {
display: block; display: block;
background-color: #fff; background-color: #fff;
padding: 12px 24px; padding: 12px 24px;
border-bottom: 1px solid #ccc; border-bottom: 1px solid #ccc;
margin-right: 240px; margin-right: 240px;
} }
@ -58,18 +58,17 @@ section
display: none; display: none;
} }
.optional:after { .signature-attributes {
content: "opt"; font-size: 60%;
font-size: 60%; color: #aaa;
color: #aaa; font-style: italic;
font-style: italic; font-weight: lighter;
font-weight: lighter;
} }
nav nav
{ {
display: block; display: block;
float: left; float: left;
margin-left: -230px; margin-left: -230px;
margin-top: 28px; margin-top: 28px;
width: 220px; width: 220px;
@ -121,53 +120,53 @@ footer {
h1 h1
{ {
font-size: 200%; font-size: 200%;
font-weight: bold; font-weight: bold;
letter-spacing: -0.01em; letter-spacing: -0.01em;
margin: 6px 0 9px 0; margin: 6px 0 9px 0;
} }
h2 h2
{ {
font-size: 170%; font-size: 170%;
font-weight: bold; font-weight: bold;
letter-spacing: -0.01em; letter-spacing: -0.01em;
margin: 6px 0 3px 0; margin: 6px 0 3px 0;
} }
h3 h3
{ {
font-size: 150%; font-size: 150%;
font-weight: bold; font-weight: bold;
letter-spacing: -0.01em; letter-spacing: -0.01em;
margin-top: 16px; margin-top: 16px;
margin: 6px 0 3px 0; margin: 6px 0 3px 0;
} }
h4 h4
{ {
font-size: 130%; font-size: 130%;
font-weight: bold; font-weight: bold;
letter-spacing: -0.01em; letter-spacing: -0.01em;
margin-top: 16px; margin-top: 16px;
margin: 18px 0 3px 0; margin: 18px 0 3px 0;
color: #A35A00; color: #A35A00;
} }
h5, .container-overview .subsection-title h5, .container-overview .subsection-title
{ {
font-size: 120%; font-size: 120%;
font-weight: bold; font-weight: bold;
letter-spacing: -0.01em; letter-spacing: -0.01em;
margin: 8px 0 3px -16px; margin: 8px 0 3px -16px;
} }
h6 h6
{ {
font-size: 100%; font-size: 100%;
letter-spacing: -0.01em; letter-spacing: -0.01em;
margin: 6px 0 3px 0; margin: 6px 0 3px 0;
font-style: italic; font-style: italic;
} }
.ancestors { color: #999; } .ancestors { color: #999; }
@ -179,8 +178,8 @@ h6
.important .important
{ {
font-weight: bold; font-weight: bold;
color: #950B02; color: #950B02;
} }
.yes-def { .yes-def {
@ -192,7 +191,7 @@ h6
} }
.name, .signature { .name, .signature {
font-family: Consolas, "Lucida Console", Monaco, monospace; font-family: Consolas, "Lucida Console", Monaco, monospace;
} }
.details { margin-top: 14px; border-left: 2px solid #DDD; } .details { margin-top: 14px; border-left: 2px solid #DDD; }
@ -205,23 +204,23 @@ h6
.details .object-value { padding-top: 0; } .details .object-value { padding-top: 0; }
.description { .description {
margin-bottom: 1em; margin-bottom: 1em;
margin-left: -16px; margin-left: -16px;
margin-top: 1em; margin-top: 1em;
} }
.code-caption .code-caption
{ {
font-style: italic; font-style: italic;
font-family: Palatino, 'Palatino Linotype', serif; font-family: Palatino, 'Palatino Linotype', serif;
font-size: 107%; font-size: 107%;
margin: 0; margin: 0;
} }
.prettyprint .prettyprint
{ {
border: 1px solid #ddd; border: 1px solid #ddd;
width: 80%; width: 80%;
overflow: auto; overflow: auto;
} }
@ -231,15 +230,14 @@ h6
.prettyprint code .prettyprint code
{ {
font-family: Consolas, 'Lucida Console', Monaco, monospace; font-family: Consolas, 'Lucida Console', Monaco, monospace;
font-size: 100%; font-size: 100%;
line-height: 18px; line-height: 18px;
display: block; display: block;
padding: 4px 12px; padding: 4px 12px;
margin: 0; margin: 0;
background-color: #fff; background-color: #fff;
color: #000; color: #000;
border-left: 3px #ddd solid;
} }
.prettyprint code span.line .prettyprint code span.line
@ -247,44 +245,89 @@ h6
display: inline-block; display: inline-block;
} }
.prettyprint.linenums
{
padding-left: 70px;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.prettyprint.linenums ol
{
padding-left: 0;
}
.prettyprint.linenums li
{
border-left: 3px #ddd solid;
}
.prettyprint.linenums li.selected,
.prettyprint.linenums li.selected *
{
background-color: lightyellow;
}
.prettyprint.linenums li *
{
-webkit-user-select: text;
-moz-user-select: text;
-ms-user-select: text;
user-select: text;
}
.params, .props .params, .props
{ {
border-spacing: 0; border-spacing: 0;
border: 0; border: 0;
border-collapse: collapse; border-collapse: collapse;
} }
.params .name, .props .name, .name code { .params .name, .props .name, .name code {
color: #A35A00; color: #A35A00;
font-family: Consolas, 'Lucida Console', Monaco, monospace; font-family: Consolas, 'Lucida Console', Monaco, monospace;
font-size: 100%; font-size: 100%;
} }
.params td, .params th, .props td, .props th .params td, .params th, .props td, .props th
{ {
border: 1px solid #ddd; border: 1px solid #ddd;
margin: 0px; margin: 0px;
text-align: left; text-align: left;
vertical-align: top; vertical-align: top;
padding: 4px 6px; padding: 4px 6px;
display: table-cell; display: table-cell;
} }
.params thead tr, .props thead tr .params thead tr, .props thead tr
{ {
background-color: #ddd; background-color: #ddd;
font-weight: bold; font-weight: bold;
} }
.params .params thead tr, .props .props thead tr .params .params thead tr, .props .props thead tr
{ {
background-color: #fff; background-color: #fff;
font-weight: bold; font-weight: bold;
} }
.params th, .props th { border-right: 1px solid #aaa; } .params th, .props th { border-right: 1px solid #aaa; }
.params thead .last, .props thead .last { border-right: 1px solid #ddd; } .params thead .last, .props thead .last { border-right: 1px solid #ddd; }
.params td.description > p:first-child
{
margin-top: 0;
padding-top: 0;
}
.params td.description > p:last-child
{
margin-bottom: 0;
padding-bottom: 0;
}
.disabled { .disabled {
color: #454545; color: #454545;
} }

View File

@ -1,132 +1,132 @@
/* Tomorrow Theme */ /* Tomorrow Theme */
/* Original theme - https://github.com/chriskempson/tomorrow-theme */ /* Original theme - https://github.com/chriskempson/tomorrow-theme */
/* Pretty printing styles. Used with prettify.js. */ /* Pretty printing styles. Used with prettify.js. */
/* SPAN elements with the classes below are added by prettyprint. */ /* SPAN elements with the classes below are added by prettyprint. */
/* plain text */ /* plain text */
.pln { .pln {
color: #4d4d4c; } color: #4d4d4c; }
@media screen { @media screen {
/* string content */ /* string content */
.str { .str {
color: #718c00; } color: #718c00; }
/* a keyword */ /* a keyword */
.kwd { .kwd {
color: #8959a8; } color: #8959a8; }
/* a comment */ /* a comment */
.com { .com {
color: #8e908c; } color: #8e908c; }
/* a type name */ /* a type name */
.typ { .typ {
color: #4271ae; } color: #4271ae; }
/* a literal value */ /* a literal value */
.lit { .lit {
color: #f5871f; } color: #f5871f; }
/* punctuation */ /* punctuation */
.pun { .pun {
color: #4d4d4c; } color: #4d4d4c; }
/* lisp open bracket */ /* lisp open bracket */
.opn { .opn {
color: #4d4d4c; } color: #4d4d4c; }
/* lisp close bracket */ /* lisp close bracket */
.clo { .clo {
color: #4d4d4c; } color: #4d4d4c; }
/* a markup tag name */ /* a markup tag name */
.tag { .tag {
color: #c82829; } color: #c82829; }
/* a markup attribute name */ /* a markup attribute name */
.atn { .atn {
color: #f5871f; } color: #f5871f; }
/* a markup attribute value */ /* a markup attribute value */
.atv { .atv {
color: #3e999f; } color: #3e999f; }
/* a declaration */ /* a declaration */
.dec { .dec {
color: #f5871f; } color: #f5871f; }
/* a variable name */ /* a variable name */
.var { .var {
color: #c82829; } color: #c82829; }
/* a function name */ /* a function name */
.fun { .fun {
color: #4271ae; } } color: #4271ae; } }
/* Use higher contrast and text-weight for printable form. */ /* Use higher contrast and text-weight for printable form. */
@media print, projection { @media print, projection {
.str { .str {
color: #060; } color: #060; }
.kwd { .kwd {
color: #006; color: #006;
font-weight: bold; } font-weight: bold; }
.com { .com {
color: #600; color: #600;
font-style: italic; } font-style: italic; }
.typ { .typ {
color: #404; color: #404;
font-weight: bold; } font-weight: bold; }
.lit { .lit {
color: #044; } color: #044; }
.pun, .opn, .clo { .pun, .opn, .clo {
color: #440; } color: #440; }
.tag { .tag {
color: #006; color: #006;
font-weight: bold; } font-weight: bold; }
.atn { .atn {
color: #404; } color: #404; }
.atv { .atv {
color: #060; } } color: #060; } }
/* Style */ /* Style */
/* /*
pre.prettyprint { pre.prettyprint {
background: white; background: white;
font-family: Menlo, Monaco, Consolas, monospace; font-family: Menlo, Monaco, Consolas, monospace;
font-size: 12px; font-size: 12px;
line-height: 1.5; line-height: 1.5;
border: 1px solid #ccc; border: 1px solid #ccc;
padding: 10px; } padding: 10px; }
*/ */
/* Specify class=linenums on a pre to get line numbering */ /* Specify class=linenums on a pre to get line numbering */
ol.linenums { ol.linenums {
margin-top: 0; margin-top: 0;
margin-bottom: 0; } margin-bottom: 0; }
/* IE indents via margin-left */ /* IE indents via margin-left */
li.L0, li.L0,
li.L1, li.L1,
li.L2, li.L2,
li.L3, li.L3,
li.L4, li.L4,
li.L5, li.L5,
li.L6, li.L6,
li.L7, li.L7,
li.L8, li.L8,
li.L9 { li.L9 {
/* */ } /* */ }
/* Alternate shading for lines */ /* Alternate shading for lines */
li.L1, li.L1,
li.L3, li.L3,
li.L5, li.L5,
li.L7, li.L7,
li.L9 { li.L9 {
/* */ } /* */ }

6369
docs/styles/site.amelia.css Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

5944
docs/styles/site.cosmo.css Normal file

File diff suppressed because it is too large Load Diff

6151
docs/styles/site.cyborg.css Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

5993
docs/styles/site.flatly.css Normal file

File diff suppressed because it is too large Load Diff

5745
docs/styles/site.journal.css Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

5758
docs/styles/site.simplex.css Normal file

File diff suppressed because it is too large Load Diff

6204
docs/styles/site.slate.css Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

5938
docs/styles/site.spruce.css Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

5545
docs/styles/site.united.css Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,345 @@
/* global styles */
.sunlight-container {
clear: both !important;
position: relative !important;
margin: 10px 0 !important;
}
.sunlight-code-container {
clear: both !important;
position: relative !important;
border: none;
border-color: #626262 !important;
background-color: #262626 !important;
}
.sunlight-highlighted, .sunlight-container, .sunlight-container textarea {
font-family: Consolas, Inconsolata, Monaco, "Courier New" !important;
font-size: 12px !important;
line-height: 15px !important;
}
.sunlight-highlighted, .sunlight-container textarea {
color: #FFFFFF !important;
margin: 0 !important;
}
.sunlight-container textarea {
padding-left: 0 !important;
margin-left: 0 !important;
margin-right: 0 !important;
padding-right: 0 !important;
}
.sunlight-code-container > .sunlight-highlighted {
white-space: pre;
overflow-x: auto;
overflow-y: hidden; /* ie requires this wtf? */
}
.sunlight-highlighted {
z-index: 1;
position: relative;
}
.sunlight-highlighted * {
background: transparent;
}
.sunlight-line-number-margin {
float: left !important;
margin-right: 5px !important;
margin-top: 0 !important;
margin-bottom: 0 !important;
padding: 0 !important;
padding-right: 4px !important;
padding-left: 4px !important;
border-right: 1px solid #9A9A9A !important;
background-color: #3E3E3E !important;
color: #9A9A9A !important;
text-align: right !important;
position: relative;
z-index: 3;
}
.sunlight-highlighted a, .sunlight-line-number-margin a {
border: none !important;
text-decoration: none !important;
font-style: normal !important;
padding: 0 !important;
}
.sunlight-line-number-margin a {
color: inherit !important;
}
.sunlight-line-highlight-overlay {
position: absolute;
top: 0;
left: 0;
width: 100%;
z-index: 0;
}
.sunlight-line-highlight-overlay div {
height: 15px;
width: 100%;
}
.sunlight-line-highlight-overlay .sunlight-line-highlight-active {
background-color: #4B4B4B;
}
/* menu */
.sunlight-menu {
background-color: #FFFFCC;
color: #000000;
}
.sunlight-menu ul {
margin: 0 !important;
padding: 0 !important;
list-style-type: none !important;
}
.sunlight-menu li {
float: right !important;
margin-left: 5px !important;
}
.sunlight-menu a, .sunlight-menu img {
color: #000099 !important;
text-decoration: none !important;
border: none !important;
}
.sunlight-string,
.sunlight-char,
.sunlight-heredoc,
.sunlight-heredocDeclaration,
.sunlight-nowdoc,
.sunlight-longString,
.sunlight-rawString,
.sunlight-binaryString,
.sunlight-verbatimString,
.sunlight-rawLongString,
.sunlight-binaryLongString,
.sunlight-diff .sunlight-added {
color: #55EB54 !important;
}
.sunlight-operator,
.sunlight-punctuation,
.sunlight-delimiter {
color: #B1EDEC !important;
}
.sunlight-ident,
.sunlight-diff .sunlight-unchanged {
color: #E0E0E0 !important;
font-weight: bold !important;
}
.sunlight-comment,
.sunlight-xmlDocCommentContent,
.sunlight-nginx .sunlight-ssiCommand,
.sunlight-sln .sunlight-formatDeclaration,
.sunlight-diff .sunlight-mergeHeader,
.sunlight-diff .sunlight-noNewLine {
color: #787D31 !important;
}
.sunlight-number,
.sunlight-cdata,
.sunlight-guid,
.sunlight-diff .sunlight-modified {
color: #F7BA7E !important;
font-weight: bold !important;
}
.sunlight-named-ident,
.sunlight-xml .sunlight-attribute,
.sunlight-constant,
.sunlight-javascript .sunlight-globalVariable,
.sunlight-globalObject,
.sunlight-css .sunlight-id,
.sunlight-python .sunlight-attribute,
.sunlight-nginx .sunlight-context,
.sunlight-httpd .sunlight-context,
.sunlight-lisp .sunlight-declarationSpecifier,
.sunlight-erlang .sunlight-userDefinedFunction,
.sunlight-diff .sunlight-removed {
color: #FBBDEE !important;
font-weight: bold !important;
}
.sunlight-keyword,
.sunlight-languageConstruct,
.sunlight-specialOperator,
.sunlight-xml .sunlight-tagName,
.sunlight-xml .sunlight-operator,
.sunlight-bash .sunlight-command,
.sunlight-erlang .sunlight-moduleAttribute {
color: #A3CCF7 !important;
font-weight: bold !important;
}
.sunlight-shortOpenTag,
.sunlight-openTag,
.sunlight-closeTag,
.sunlight-xmlOpenTag,
.sunlight-xmlCloseTag,
.sunlight-aspOpenTag,
.sunlight-aspCloseTag,
.sunlight-label,
.sunlight-css .sunlight-importantFlag {
background-color: #7373C1 !important;
}
.sunlight-content {
color: #FFFFFF !important;
font-weight: bold !important;
}
.sunlight-function,
.sunlight-globalFunction,
.sunlight-objective-c .sunlight-messageDestination,
.sunlight-ruby .sunlight-specialFunction,
.sunlight-6502asm .sunlight-illegalOpcode,
.sunlight-powershell .sunlight-switch,
.sunlight-lisp .sunlight-macro,
.sunlight-lisp .sunlight-specialForm,
.sunlight-lisp .sunlight-type,
.sunlight-sln .sunlight-sectionName,
.sunlight-diff .sunlight-header {
color: #C8BBF1 !important;
font-weight: bold !important;
}
.sunlight-variable,
.sunlight-environmentVariable,
.sunlight-specialVariable,
.sunlight-objective-c .sunlight-messageArgumentName,
.sunlight-lisp .sunlight-globalVariable,
.sunlight-ruby .sunlight-globalVariable,
.sunlight-ruby .sunlight-instanceVariable {
color: #F5E5B0 !important;
font-weight: bold !important;
}
.sunlight-regexLiteral,
.sunlight-lisp .sunlight-operator,
.sunlight-6502asm .sunlight-pseudoOp,
.sunlight-erlang .sunlight-macro,
.sunlight-diff .sunlight-rangeInfo {
color: #E0F16A !important;
}
.sunlight-specialVariable {
font-style: italic !important;
font-weight: bold !important;
}
.sunlight-csharp .sunlight-pragma,
.sunlight-preprocessorDirective,
.sunlight-vb .sunlight-compilerDirective {
color: #666363 !important;
font-style: italic !important;
}
.sunlight-xmlDocCommentMeta,
.sunlight-java .sunlight-annotation,
.sunlight-scala .sunlight-annotation,
.sunlight-docComment {
color: #666363 !important;
}
.sunlight-quotedIdent,
.sunlight-ruby .sunlight-subshellCommand,
.sunlight-lisp .sunlight-keywordArgument,
.sunlight-haskell .sunlight-infixOperator,
.sunlight-erlang .sunlight-quotedAtom {
color: #F8CA16 !important;
}
/* html/xml */
.sunlight-xml .sunlight-tagName,
.sunlight-xml .sunlight-operator,
.sunlight-xml .sunlight-attribute {
font-weight: normal !important;
}
.sunlight-doctype {
color: #DEB9B2 !important;
font-style: italic !important;
}
.sunlight-xml .sunlight-entity {
background-color: #E6E585 !important;
color: #000000 !important;
}
/* javascript */
.sunlight-javascript .sunlight-reservedWord {
font-style: italic !important;
}
/* css */
.sunlight-css .sunlight-element {
color: #E9EE97 !important;
}
.sunlight-css .sunlight-microsoftFilterPrefix {
color: #C9FF9F !important;
}
.sunlight-css .sunlight-rule {
color: #0099FF !important;
}
.sunlight-css .sunlight-class {
color: #E78282 !important;
}
.sunlight-css .sunlight-pseudoClass, .sunlight-css .sunlight-pseudoElement {
color: #73D693 !important;
}
/* bash */
.sunlight-bash .sunlight-hashBang {
color: #FFFF00 !important;
}
.sunlight-bash .sunlight-verbatimCommand {
color: #BBA4EE !important;
}
.sunlight-bash .sunlight-variable,
.sunlight-bash .sunlight-specialVariable {
color: #ED8585 !important;
}
/* python */
.sunlight-python .sunlight-specialMethod {
font-weight: bold !important;
color: #B0A3C2;
}
/* ruby */
.sunlight-ruby .sunlight-symbol {
font-weight: bold !important;
color: #90EEA2 !important;
}
/* brainfuck */
.sunlight-brainfuck {
font-weight: bold !important;
color: #000000 !important;
}
.sunlight-brainfuck .sunlight-increment {
background-color: #FF9900 !important;
}
.sunlight-brainfuck .sunlight-decrement {
background-color: #FF99FF !important;
}
.sunlight-brainfuck .sunlight-incrementPointer {
background-color: #FFFF99 !important;
}
.sunlight-brainfuck .sunlight-decrementPointer {
background-color: #66CCFF !important;
}
.sunlight-brainfuck .sunlight-read {
background-color: #FFFFFF !important;
}
.sunlight-brainfuck .sunlight-write {
background-color: #99FF99 !important;
}
.sunlight-brainfuck .sunlight-openLoop, .sunlight-brainfuck .sunlight-closeLoop {
background-color: #FFFFFF !important;
}
/* 6502 asm */
.sunlight-6502asm .sunlight-label {
background: none !important;
color: #FFFFFF !important;
text-decoration: underline !important;
}
/* lisp */
.sunlight-lisp .sunlight-macro {
font-style: italic !important;
}
/* erlang */
.sunlight-erlang .sunlight-atom {
color: #FFFFFF !important;
font-weight: bold !important;
}

View File

@ -0,0 +1,344 @@
/* global styles */
.sunlight-container {
clear: both !important;
position: relative !important;
margin: 10px 0 !important;
}
.sunlight-code-container {
clear: both !important;
position: relative !important;
border: none;
border-color: #969696 !important;
background-color: #FFFFFF !important;
}
.sunlight-highlighted, .sunlight-container, .sunlight-container textarea {
font-family: Consolas, Inconsolata, Monaco, "Courier New" !important;
font-size: 12px !important;
line-height: 15px !important;
}
.sunlight-highlighted, .sunlight-container textarea {
color: #000000 !important;
margin: 0 !important;
}
.sunlight-container textarea {
padding-left: 0 !important;
margin-left: 0 !important;
margin-right: 0 !important;
padding-right: 0 !important;
}
.sunlight-code-container > .sunlight-highlighted {
white-space: pre;
overflow-x: auto;
overflow-y: hidden; /* ie requires this wtf? */
}
.sunlight-highlighted {
z-index: 1;
position: relative;
}
.sunlight-highlighted * {
background: transparent;
}
.sunlight-line-number-margin {
float: left !important;
margin-right: 5px !important;
margin-top: 0 !important;
margin-bottom: 0 !important;
padding: 0 !important;
padding-right: 4px !important;
padding-left: 4px !important;
border-right: 1px solid #CCCCCC !important;
background-color: #EEEEEE !important;
color: #848484 !important;
text-align: right !important;
position: relative;
z-index: 3;
}
.sunlight-highlighted a, .sunlight-line-number-margin a {
border: none !important;
text-decoration: none !important;
font-weight: normal !important;
font-style: normal !important;
padding: 0 !important;
}
.sunlight-line-number-margin a {
color: inherit !important;
}
.sunlight-line-highlight-overlay {
position: absolute;
top: 0;
left: 0;
width: 100%;
z-index: 0;
}
.sunlight-line-highlight-overlay div {
height: 15px;
width: 100%;
}
.sunlight-line-highlight-overlay .sunlight-line-highlight-active {
background-color: #E7FCFA;
}
/* menu */
.sunlight-menu {
background-color: #FFFFCC;
color: #000000;
}
.sunlight-menu ul {
margin: 0 !important;
padding: 0 !important;
list-style-type: none !important;
}
.sunlight-menu li {
float: right !important;
margin-left: 5px !important;
}
.sunlight-menu a, .sunlight-menu img {
color: #000099 !important;
text-decoration: none !important;
border: none !important;
}
.sunlight-string,
.sunlight-char,
.sunlight-heredoc,
.sunlight-heredocDeclaration,
.sunlight-nowdoc,
.sunlight-longString,
.sunlight-rawString,
.sunlight-binaryString,
.sunlight-rawLongString,
.sunlight-binaryLongString,
.sunlight-verbatimString,
.sunlight-diff .sunlight-removed {
color: #990000 !important;
}
.sunlight-ident,
.sunlight-operator,
.sunlight-punctuation,
.sunlight-delimiter,
.sunlight-diff .sunlight-unchanged {
color: #000000 !important;
}
.sunlight-comment,
.sunlight-xmlDocCommentContent,
.sunlight-nginx .sunlight-ssiCommand,
.sunlight-sln .sunlight-formatDeclaration,
.sunlight-diff .sunlight-added {
color: #009900 !important;
}
.sunlight-number,
.sunlight-guid,
.sunlight-cdata {
color: #CC6600 !important;
}
.sunlight-named-ident,
.sunlight-constant,
.sunlight-javascript .sunlight-globalVariable,
.sunlight-globalObject,
.sunlight-python .sunlight-attribute,
.sunlight-nginx .sunlight-context,
.sunlight-httpd .sunlight-context,
.sunlight-haskell .sunlight-class,
.sunlight-haskell .sunlight-type,
.sunlight-lisp .sunlight-declarationSpecifier,
.sunlight-erlang .sunlight-userDefinedFunction,
.sunlight-diff .sunlight-header {
color: #2B91AF !important;
}
.sunlight-keyword,
.sunlight-languageConstruct,
.sunlight-css
.sunlight-element,
.sunlight-bash .sunlight-command,
.sunlight-specialOperator,
.sunlight-erlang .sunlight-moduleAttribute,
.sunlight-xml .sunlight-tagName,
.sunlight-xml .sunlight-operator,
.sunlight-diff .sunlight-modified {
color: #0000FF !important;
}
.sunlight-shortOpenTag,
.sunlight-openTag,
.sunlight-closeTag,
.sunlight-xmlOpenTag,
.sunlight-xmlCloseTag,
.sunlight-aspOpenTag,
.sunlight-aspCloseTag,
.sunlight-label,
.sunlight-css .sunlight-importantFlag {
background-color: #FFFF99 !important;
color: #000000 !important;
}
.sunlight-function,
.sunlight-globalFunction,
.sunlight-ruby .sunlight-specialFunction,
.sunlight-objective-c .sunlight-messageDestination,
.sunlight-6502asm .sunlight-illegalOpcode,
.sunlight-powershell .sunlight-switch,
.sunlight-lisp .sunlight-macro,
.sunlight-lisp .sunlight-specialForm,
.sunlight-lisp .sunlight-type,
.sunlight-sln .sunlight-sectionName,
.sunlight-diff .sunlight-rangeInfo {
color: #B069AF !important;
}
.sunlight-variable,
.sunlight-specialVariable,
.sunlight-environmentVariable,
.sunlight-objective-c .sunlight-messageArgumentName,
.sunlight-lisp .sunlight-globalVariable,
.sunlight-ruby .sunlight-globalVariable,
.sunlight-ruby .sunlight-instanceVariable,
.sunlight-sln .sunlight-operator {
color: #325484 !important;
}
.sunlight-regexLiteral,
.sunlight-lisp .sunlight-operator,
.sunlight-6502asm .sunlight-pseudoOp,
.sunlight-erlang .sunlight-macro {
color: #FF00B2 !important;
}
.sunlight-specialVariable {
font-style: italic !important;
font-weight: bold !important;
}
.sunlight-csharp .sunlight-pragma,
.sunlight-preprocessorDirective,
.sunlight-vb .sunlight-compilerDirective,
.sunlight-diff .sunlight-mergeHeader,
.sunlight-diff .sunlight-noNewLine {
color: #999999 !important;
font-style: italic !important;
}
.sunlight-xmlDocCommentMeta,
.sunlight-java .sunlight-annotation,
.sunlight-scala .sunlight-annotation,
.sunlight-docComment {
color: #808080 !important;
}
.sunlight-quotedIdent,
.sunlight-ruby .sunlight-subshellCommand,
.sunlight-lisp .sunlight-keywordArgument,
.sunlight-haskell .sunlight-infixOperator,
.sunlight-erlang .sunlight-quotedAtom {
color: #999900 !important;
}
/* xml */
.sunlight-xml .sunlight-string {
color: #990099 !important;
}
.sunlight-xml .sunlight-attribute {
color: #FF0000 !important;
}
.sunlight-xml .sunlight-entity {
background-color: #EEEEEE !important;
color: #000000 !important;
border: 1px solid #000000 !important;
}
.sunlight-xml .sunlight-doctype {
color: #2B91AF !important;
}
/* javascript */
.sunlight-javascript .sunlight-reservedWord {
font-style: italic !important;
}
/* css */
.sunlight-css .sunlight-microsoftFilterPrefix {
color: #FF00FF !important;
}
.sunlight-css .sunlight-rule {
color: #0099FF !important;
}
.sunlight-css .sunlight-keyword {
color: #4E65B8 !important;
}
.sunlight-css .sunlight-class {
color: #FF0000 !important;
}
.sunlight-css .sunlight-id {
color: #8A8E13 !important;
}
.sunlight-css .sunlight-pseudoClass,
.sunlight-css .sunlight-pseudoElement {
color: #368B87 !important;
}
/* bash */
.sunlight-bash .sunlight-hashBang {
color: #3D97F5 !important;
}
.sunlight-bash .sunlight-verbatimCommand {
color: #999900 !important;
}
.sunlight-bash .sunlight-variable,
.sunlight-bash .sunlight-specialVariable {
color: #FF0000 !important;
}
/* python */
.sunlight-python .sunlight-specialMethod {
font-weight: bold !important;
color: #A07DD3;
}
/* ruby */
.sunlight-ruby .sunlight-symbol {
font-weight: bold !important;
color: #ED7272 !important;
}
/* brainfuck */
.sunlight-brainfuck {
font-weight: bold !important;
color: #000000 !important;
}
.sunlight-brainfuck .sunlight-increment {
background-color: #FF9900 !important;
}
.sunlight-brainfuck .sunlight-decrement {
background-color: #FF99FF !important;
}
.sunlight-brainfuck .sunlight-incrementPointer {
background-color: #FFFF99 !important;
}
.sunlight-brainfuck .sunlight-decrementPointer {
background-color: #66CCFF !important;
}
.sunlight-brainfuck .sunlight-read {
background-color: #FFFFFF !important;
}
.sunlight-brainfuck .sunlight-write {
background-color: #99FF99 !important;
}
.sunlight-brainfuck .sunlight-openLoop, .sunlight-brainfuck .sunlight-closeLoop {
background-color: #FFFFFF !important;
}
/* 6502 asm */
.sunlight-6502asm .sunlight-label {
font-weight: bold !important;
color: #000000 !important;
background: none !important;
}
/* lisp */
.sunlight-lisp .sunlight-macro {
font-style: italic !important;
}
/* erlang */
.sunlight-erlang .sunlight-atom {
font-weight: bold !important;
}

17
lib/adapter.js Executable file
View File

@ -0,0 +1,17 @@
'use strict';
/** @module adapter */
module.exports = {
/**
* Run the sql query as a prepared statement
*
* @param {String} sql - The sql with placeholders
* @param {Array} params - The values to insert into the query
* @param {Function} callback - Callback to run when a response is recieved
* @return void
*/
execute: function(sql, params, callback) {
throw new Error("Correct adapter not defined for query execution");
}
};

27
lib/adapters/mysql.js Normal file
View File

@ -0,0 +1,27 @@
'use strict';
var adapter = require('../adapter.js');
var conn;
/** @module adapters/mysql */
var MySQL = function(instance) {
// That 'new' keyword is annoying
if ( ! (this instanceof MySQL)) return new MySQL(instance);
/**
* Run the sql query as a prepared statement
*
* @param {String} sql - The sql with placeholders
* @param {Array} params - The values to insert into the query
* @param {Function} callback - Callback to run when a response is recieved
* @return void
*/
adapter.execute = function(sql, params, callback) {
instance.query.apply(instance, arguments);
};
return adapter;
};
module.exports = MySQL;

26
lib/adapters/mysql2.js Normal file
View File

@ -0,0 +1,26 @@
'use strict';
var adapter = require('../adapter.js');
/** @module adapters/mysql2 */
var MySQL2 = function(instance) {
// That 'new' keyword is annoying
if ( ! (this instanceof MySQL2)) return new MySQL2(instance);
/**
* Run the sql query as a prepared statement
*
* @param {String} sql - The sql with placeholders
* @param {Array} params - The values to insert into the query
* @param {Function} callback - Callback to run when a response is recieved
* @return void
*/
adapter.execute = function(sql, params, callback) {
instance.execute.apply(instance, arguments);
};
return adapter;
}
module.exports = MySQL2;

26
lib/adapters/pg.js Normal file
View File

@ -0,0 +1,26 @@
'use strict';
var adapter = require('../adapter.js');
/** @module adapters/mysql2 */
var Pg = function(instance) {
// That 'new' keyword is annoying
if ( ! (this instanceof Pg)) return new Pg(instance);
/**
* Run the sql query as a prepared statement
*
* @param {String} sql - The sql with placeholders
* @param {Array} params - The values to insert into the query
* @param {Function} callback - Callback to run when a response is recieved
* @return void
*/
adapter.execute = function(sql, params, callback) {
instance.query.apply(instance, arguments);
};
return adapter;
}
module.exports = Pg;

View File

@ -1,15 +1,13 @@
/** @module driver */ 'use strict';
"use strict";
var helpers = require('./helpers'); var helpers = require('./helpers');
/** /**
* Base Database Driver * Base Database Driver
* *
* @type {{identifierChar: string, quoteIdentifiers: quoteIdentifiers}} * @module driver
*/ */
module.exports = { var d = {
identifierChar: '"', identifierChar: '"',
tablePrefix: null, tablePrefix: null,
@ -21,8 +19,8 @@ module.exports = {
* @private * @private
*/ */
_quote: function(str) { _quote: function(str) {
return (helpers.isString(str) && ! (str.startsWith(this.identifierChar) || str.endsWith(this.identifierChar))) return (helpers.isString(str) && ! (str.startsWith(d.identifierChar) || str.endsWith(d.identifierChar)))
? this.identifierChar + str + this.identifierChar ? d.identifierChar + str + d.identifierChar
: str; : str;
}, },
@ -34,12 +32,12 @@ module.exports = {
* @private * @private
*/ */
_prefix: function(str) { _prefix: function(str) {
if (str.startsWith(this.prefix)) if (str.startsWith(d.prefix))
{ {
return str; return str;
} }
return this.prefix + str; return d.prefix + str;
}, },
/** /**
@ -68,7 +66,7 @@ module.exports = {
* @return {String} * @return {String}
*/ */
prefixTable: function(table) { prefixTable: function(table) {
if (this.tablePrefix) if (d.tablePrefix)
{ {
// Split identifier by period, will split into: // Split identifier by period, will split into:
// database.schema.table OR // database.schema.table OR
@ -79,7 +77,7 @@ module.exports = {
var segments = idents.length; var segments = idents.length;
// Add the database prefix // Add the database prefix
idents[segments - 1] = this._prefix(idents[segments - 1]); idents[segments - 1] = d._prefix(idents[segments - 1]);
table = idents.join('.'); table = idents.join('.');
} }
@ -94,10 +92,10 @@ module.exports = {
* @return {String} * @return {String}
*/ */
quoteTable: function(table) { quoteTable: function(table) {
table = this.prefixTable(table); table = d.prefixTable(table);
// Quote after prefix // Quote after prefix
return this.quoteIdentifiers(table); return d.quoteIdentifiers(table);
}, },
/** /**
@ -112,18 +110,20 @@ module.exports = {
// Recurse for arrays of identifiiers // Recurse for arrays of identifiiers
if (Array.isArray(str)) if (Array.isArray(str))
{ {
return str.map(this.quoteIdentifiers); return str.map(d.quoteIdentifiers);
} }
// Handle commas // Handle commas
str = helpers.splitTrim(',', str); str = helpers.splitTrim(',', str);
// Split identifiers by period // Split identifiers by period
hiers = str.split('.').map(String.trim).map(this._quote); hiers = str.split('.').map(d._quote);
raw = hiers.join('.'); raw = hiers.join('.');
// TODO: fix functions // TODO: fix functions
return raw; return raw;
} }
}; };
module.exports = d;

View File

@ -3,9 +3,10 @@
/** /**
* Driver for MySQL databases * Driver for MySQL databases
* *
* @returns {driver} * @module drivers/mysql
*/ */
module.exports = function() { module.exports = (function() {
var driver = require('../driver'), var driver = require('../driver'),
helpers = require('../helpers'); helpers = require('../helpers');
@ -24,4 +25,5 @@ module.exports = function() {
}; };
return driver; return driver;
};
}());

View File

@ -3,10 +3,10 @@
/** /**
* Driver for PostgreSQL databases * Driver for PostgreSQL databases
* *
* @returns {driver} * @module drivers/pg
*/ */
module.exports = function() { module.exports = (function() {
var driver = require('../driver'); var driver = require('../driver');
return driver; return driver;
}; }());

78
lib/es6-polyfill.js Normal file
View File

@ -0,0 +1,78 @@
/**
* Polyfills for very handy methods that are standardized, but not fully implemented in Javascript engines
*/
module.exports = (function() {
if (!Array.prototype.fill) {
Array.prototype.fill = function(value) {
// Steps 1-2.
if (this == null) {
throw new TypeError('this is null or not defined');
}
var O = Object(this);
// Steps 3-5.
var len = O.length >>> 0;
// Steps 6-7.
var start = arguments[1];
var relativeStart = start >> 0;
// Step 8.
var k = relativeStart < 0 ?
Math.max(len + relativeStart, 0) :
Math.min(relativeStart, len);
// Steps 9-10.
var end = arguments[2];
var relativeEnd = end === undefined ?
len : end >> 0;
// Step 11.
var final = relativeEnd < 0 ?
Math.max(len + relativeEnd, 0) :
Math.min(relativeEnd, len);
// Step 12.
while (k < final) {
O[k] = value;
k++;
}
// Step 13.
return O;
};
}
if ( !String.prototype.contains ) {
String.prototype.contains = function() {
return String.prototype.indexOf.apply( this, arguments ) !== -1;
};
}
if (!String.prototype.startsWith) {
Object.defineProperty(String.prototype, 'startsWith', {
enumerable: false,
configurable: false,
writable: false,
value: function (searchString, position) {
position = position || 0;
return this.lastIndexOf(searchString, position) === position;
}
});
}
if (!String.prototype.endsWith) {
Object.defineProperty(String.prototype, 'endsWith', {
value: function (searchString, position) {
var subjectString = this.toString();
if (position === undefined || position > subjectString.length) {
position = subjectString.length;
}
position -= searchString.length;
var lastIndex = subjectString.indexOf(searchString, position);
return lastIndex !== -1 && lastIndex === position;
}
});
}
}());

View File

@ -2,33 +2,18 @@
"use strict"; "use strict";
if (!String.prototype.startsWith) { require('./es6-polyfill');
Object.defineProperty(String.prototype, 'startsWith', {
enumerable: false,
configurable: false,
writable: false,
value: function (searchString, position) {
position = position || 0;
return this.lastIndexOf(searchString, position) === position;
}
});
}
if (!String.prototype.endsWith) { var h = {
Object.defineProperty(String.prototype, 'endsWith', { /**
value: function (searchString, position) { * Wrap String.prototype.trim in a way that is easily mappable
var subjectString = this.toString(); *
if (position === undefined || position > subjectString.length) { * @param {String} str - The string to trim
position = subjectString.length; * @return {String} - The trimmed string
} */
position -= searchString.length; stringTrim: function(str) {
var lastIndex = subjectString.indexOf(searchString, position); return str.trim();
return lastIndex !== -1 && lastIndex === position; },
}
});
}
module.exports = {
/** /**
* Split a string by a character, trim the string * Split a string by a character, trim the string
* and rejoin the string * and rejoin the string
@ -38,22 +23,49 @@ module.exports = {
* @return {String} * @return {String}
*/ */
splitTrim: function(char, string) { splitTrim: function(char, string) {
return string.split(char).map(String.trim).join(char); return string.split(char).map(h.stringTrim).join(char);
}, },
/** /**
* Determine whether an object is a string * Get the type of the variable passed
*
* @see https://techblog.badoo.com/blog/2013/11/01/type-checking-in-javascript/
* @see http://toddmotto.com/understanding-javascript-types-and-reliable-type-checking/
* @param {mixed} o
* @return {String}
*/
type: function (o) {
var type = Object.prototype.toString.call(o).slice(8, -1).toLowerCase();
// handle NaN and Infinity
if (type === 'number') {
if (isNaN(o)) {
return 'nan';
}
if (!isFinite(o)) {
return 'infinity';
}
}
return type;
},
/**
* Determine whether an object is scalar
*
* @param {mixed} obj * @param {mixed} obj
* @return {bool} * @return {bool}
*/ */
isString: function(obj) { isScalar: function(obj) {
return (typeof obj === 'string' || obj instanceof String); var scalar = ['string', 'number', 'boolean'];
}, return scalar.indexOf(h.type(obj)) !== -1;
/**
* Determine whether an object is numeric
* @param {mixed} obj
* @return {bool}
*/
isNumber: function(obj) {
return ! isNaN(parseFloat(obj)) && isFinite(obj);
} }
}; };
// Define an 'is' method for each type
var types = ['Null','Undefined','Object','Array','String','Number','Boolean','Function','RegExp','NaN','Infinite'];
types.forEach(function (t) {
h['is' + t] = function (o) {
return h.type(o) === t.toLowerCase();
};
});
module.exports = h;

View File

@ -1,14 +1,36 @@
"use strict"; "use strict";
module.exports = function(driverType, connObject) { /** @module node-query */
var nodeQuery = {};
var connection = null, /**
driverType = null; * Create a query builder object
*
* @alias module:node-query
* @param {String} drivername - The name of the database type, eg. mysql or pg
* @param {Object} connObject - A connection object from the database library you are connecting with
* @param {String} connLib - The name of the db connection library you are using, eg. mysql or mysql2
* @return {queryBuilder}
*/
nodeQuery.init = function (driverType, connObject, connLib) {
var fs = require('fs'),
qb = require('./query-builder');
return { var paths = {
connect: function(driverName, connObject) { driver: __dirname + '/drivers/' + driverType + '.js',
driverType = driverName; adapter: __dirname + '/adapters/' + connLib + '.js'
connection = connObject;
}
}; };
};
Object.keys(paths).forEach(function(type) {
if ( ! fs.existsSync(paths[type]))
{
console.log(paths[type]);
throw new Error('Selected ' + type + ' does not exist!');
}
});
return new qb(require(paths.driver), require(paths.adapter)(connObject));
};
module.exports = nodeQuery.init;

View File

@ -1,20 +1,32 @@
'use strict';
/** @module query-builder */ /** @module query-builder */
var async = require('async'); var getArgs = require('getargs'),
helpers = require('./helpers');
module.exports = function(driver) { /**
* Variables controlling the sql building
*
* @private
*/
var state = {};
"use strict"; /*
* SQL generation object
*
* @param {driver} - The syntax driver for the database
* @param {adapter} - The database module adapter for running queries
* @constructor
*/
var QueryBuilder = function(driver, adapter) {
/** // That 'new' keyword is annoying
* Variables controlling the sql building if ( ! (this instanceof QueryBuilder)) return new QueryBuilder(driver, adapter);
*
* @private
* @type {{}}
*/
var state = {};
// ------------------------------------------------------------------------ // Keep these properties as object members so they can be mocked/substituted
this.driver = driver;
this.adapter = adapter;
/** /**
* "Private" methods * "Private" methods
@ -27,28 +39,300 @@ module.exports = function(driver) {
* *
* @param {String} type * @param {String} type
* @param {String} table * @param {String} table
* @private
* @return {String} * @return {String}
*/ */
compile: function (type, table) { compile: function (type, table) {
// Put together the basic query
var sql = _p.compileType(type, table);
// Set each subClause
['queryMap', 'groupString', 'orderString', 'havingMap'].forEach(function(clause) {
var param = state[clause];
if ( ! helpers.isScalar(param))
{
Object.keys(param).forEach(function(part) {
sql += param[part].conjunction + param[part].string;
});
}
else
{
sql += param;
}
});
// Append the limit, if it exists
if (helpers.isNumber(state.limit))
{
sql = this.driver.limit(sql, state.limit, state.offset);
}
return sql;
},
compileType: function (type, table) {
var sql = '';
switch(type) { switch(type) {
case "insert": case "insert":
var paramCount = state.setArrayKeys.length;
var params = [];
params.fill('?', 0, paramCount);
sql = "INSERT INTO " + table + " (";
sql += state.setArrayKeys.join(',');
sql += ") VALUES (";
sql += params.join(',') + ')';
break; break;
case "update": case "update":
sql = "UPDATE " + table + " SET " + state.setString;
break; break;
case "delete": case "delete":
sql = "DELETE FROM " + table;
break; break;
default: default:
sql = "SELECT * FROM " + state.fromString;
// Set the select string
if (state.selectString.length > 0)
{
// Replace the star with the selected fields
sql = sql.replace('*', state.selectString);
}
break; break;
} }
},
compileType: function (type, table) {
return sql;
},
like: function (field, val, pos, like, conj) {
field = this.driver.quoteIdentifiers(field);
like = field + " " + like + " ?";
if (pos == 'before')
{
val = "%" + val;
}
else if (pos == 'after')
{
val = val + "%";
}
else
{
val = "%" + val + "%";
}
conj = (state.queryMap.length < 1) ? ' WHERE ' : ' ' + conj + '';
_p.appendMap(conj, like, 'like');
state.whereValues.push(val);
},
/**
* Append a clause to the query map
*
* @param {String} conjunction
* @param {String} string
* @param {String} type
* @return void
*/
appendMap: function(conjunction, string, type) {
state.queryMap.push({
type: type,
conjunction: conjunction,
string: string
});
},
/**
* Handle key/value pairs in an object the same way as individual arguments,
* when appending to state
*
* @private
*/
mixedSet: function(/* varName, key, [val], valType */) {
var args = getArgs('varName:string, key:string|array, [val]:string, valType:string', arguments);
var obj = {};
if (helpers.isString(args.key) && helpers.isString(args.val))
{
obj[args.key] = args.val;
}
else
{
obj = args.key;
}
Object.keys(obj).forEach(function(k) {
if (args.valType != 'both')
{
state[args.varName].push(
(args.valType === 'key')? k: obj[k]
);
}
else
{
state[args.varName][k] = obj[k];
}
});
return state[args.varName];
},
whereMixedSet: function(key, val) {
_p.mixedSet('whereValues', key, val, 'value');
_p.mixedSet('whereMap', key, val, 'both');
},
where: function(key, val, conj) {
conj = conj || 'AND';
// Get an object to iterate over
_p.whereMixedSet(key, val);
Object.keys(state.whereMap).forEach(function(field) {
// Split each key by spaces, in case there
// is an operator such as >, <, !=, etc.
var fieldArray = field.split(' ');
var item = this.driver.quoteIdentifiers(fieldArray[0]);
// Simple key value, or an operator?
item += (fieldArray.length === 1) ? '=?' : " " + fieldArray[1] + " ?";
var firstItem = state.queryMap[0],
lastItem = state.queryMap[state.queryMap.length - 1];
// Determine the correct conjunction
if (state.queryMap.length < 1 || firstItem.contains('JOIN'))
{
conj = " WHERE ";
}
else if (lastItem.type === 'groupStart')
{
conj = '';
}
else
{
conj = ' ' + conj + ' ';
}
_p.appendMap(conj, item, 'where');
});
},
having: function(key, val, conj) {
conj = conj || 'AND';
_p.whereMixedSet(key, val);
Object.keys(state.whereMap).forEach(function(field) {
// Split each key by spaces, in case there
// is an operator such as >, <, !=, etc.
var fieldArray = field.split(' ').map(helpers.stringTrim);
var item = this.driver.quoteIdentifiers(fieldArray[0]);
// Simple key value, or an operator?
item += (fieldArray.length === 1) ? '=?' : " " + fieldArray[1] + " ?";
// Put in the having map
state.havingMap.push({
conjunction: (state.havingMap.length > 0) ? " " + conj + " " : ' HAVING ',
string: item
});
});
},
whereIn: function(key, val, inClause, conj) {
key = this.driver.quoteIdentifiers(key);
var params = [];
params.fill('?', 0, val.length);
val.forEach(function(value) {
state.whereValues.push(value);
});
conj = (state.queryMap.length > 0) ? " " + conj + " " : ' WHERE ';
var str = key + " " + inClause + " (" + params.join(',') + ") ";
_p.appendMap(conj, str, 'whereIn');
},
run: function(type, table, callback, sql, vals) {
if ( ! sql)
{
sql = _p.compile(type, table);
}
if ( ! vals)
{
vals = state.values.concat(state.whereValues);
}
// Reset the state so another query can be built
_p.resetState();
// Pass the sql and values to the adapter to run on the database
adapter.execute(sql, vals, callback);
},
getCompile: function(type, table, reset) {
reset = reset || false;
var sql = _p.compile(type, table);
if (reset) _p.resetState();
return sql;
},
resetState: function() {
state = {
// Arrays/Maps
queryMap: {},
values: [],
whereValues: [],
setArrayKeys: [],
orderArray: [],
groupArray: [],
havingMap: [],
whereMap: [],
// Partials
selectString: '',
fromString: '',
setString: '',
orderString: '',
groupString: '',
// Other various values
limit: null,
offset: null
};
} }
}; };
// ----------------------------------------------------------------------------
// ! Miscellaneous Methods
// ----------------------------------------------------------------------------
/**
* Reset the object state for a new query
*
* @memberOf query-builder
* @return void
*/
this.resetQuery = function() {
_p.resetState();
};
/**
* Returns the current class state for testing or other purposes
*
* @private
* @return {Object}
*/
this.getState = function() {
return state;
};
// ------------------------------------------------------------------------ // ------------------------------------------------------------------------
// Set up state object // Set up state object
@ -61,23 +345,23 @@ module.exports = function(driver) {
/** /**
* Specify rows to select in the query * Specify rows to select in the query
* *
* @param {String|Array} fields * @param {String|Array} fields - The fields to select from the current table
* @returns {exports} * @return this
*/ */
this.select = function(fields) { this.select = function(fields) {
// Split/trim fields by comma // Split/trim fields by comma
fields = (Array.isArray(fields)) ? fields : fields.split(",").map(String.trim); fields = (Array.isArray(fields)) ? fields : fields.split(",").map(helpers.stringTrim);
// Split on 'As' // Split on 'As'
fields.forEach(function (field, index) { fields.forEach(function (field, index) {
if (field.match(/as/i)) if (field.match(/as/i))
{ {
fields[index] = field.split(/ as /i).map(String.trim); fields[index] = field.split(/ as /i).map(helpers.stringTrim);
} }
}); });
var safeArray = driver.quoteIdentifiers(fields); var safeArray = this.driver.quoteIdentifiers(fields);
// Join the strings back together // Join the strings back together
safeArray.forEach(function (field, index) { safeArray.forEach(function (field, index) {
@ -95,16 +379,16 @@ module.exports = function(driver) {
/** /**
* Specify the database table to select from * Specify the database table to select from
* *
* @param {String} tableName * @param {String} tableName - The table to use for the current query
* @returns {exports} * @return this
*/ */
this.from = function(tableName) { this.from = function(tableName) {
// Split identifiers on spaces // Split identifiers on spaces
var identArray = String.trim(tableName).split(' ').map(String.trim); var identArray = tableName.trim().split(' ').map(helpers.stringTrim);
// Quote/prefix identifiers // Quote/prefix identifiers
identArray[0] = driver.quoteTable(identArray[0]); identArray[0] = this.driver.quoteTable(identArray[0]);
identArray = driver.quoteIdentifiers(identArray); identArray = this.driver.quoteIdentifiers(identArray);
// Put it back together // Put it back together
state.fromString = identArray.join(' '); state.fromString = identArray.join(' ');
@ -112,118 +396,378 @@ module.exports = function(driver) {
return this; return this;
}; };
/**
* Add a 'like/ and like' clause to the query
*
* @param {String} field - The name of the field to compare to
* @param {String} val - The value to compare to
* @param {String} [pos=both] - The placement of the wildcard character(s): before, after, or both
* @return this
*/
this.like = function(field, val, pos) { this.like = function(field, val, pos) {
_p.like(field, val, pos, ' LIKE ', 'AND');
return this;
}; };
/**
* Add a 'not like/ and not like' clause to the query
*
* @param {String} field - The name of the field to compare to
* @param {String} val - The value to compare to
* @param {String} [pos=both] - The placement of the wildcard character(s): before, after, or both
* @return this
*/
this.notLike = function(field, val, pos) {
_p.like(field, val, pos, ' NOT LIKE ', 'AND');
return this;
};
/**
* Add an 'or like' clause to the query
*
* @param {String} field - The name of the field to compare to
* @param {String} val - The value to compare to
* @param {String} [pos=both] - The placement of the wildcard character(s): before, after, or both
* @return this
*/
this.orLike = function(field, val, pos) { this.orLike = function(field, val, pos) {
_p.like(field, val, pos, ' LIKE ', 'OR');
return this;
}; };
/**
* Add an 'or not like' clause to the query
*
* @param {String} field - The name of the field to compare to
* @param {String} val - The value to compare to
* @param {String} [pos=both] - The placement of the wildcard character(s): before, after, or both
* @return this
*/
this.orNotLike = function(field, val, pos) { this.orNotLike = function(field, val, pos) {
_p.like(field, val, pos, ' NOT LIKE ', 'OR');
return this;
}; };
/**
* Add a 'having' clause
*
* @param {String|Object} key - The name of the field and the comparision operator, or an object
* @param {String|Number} [val] - The value to compare if the value of key is a string
* @return this
*/
this.having = function(key, val) { this.having = function(key, val) {
_p.having(key, val, 'AND');
return this;
}; };
/**
* Add an 'or having' clause
*
* @param {String|Object} key - The name of the field and the comparision operator, or an object
* @param {String|Number} [val] - The value to compare if the value of key is a string
* @return this
*/
this.orHaving = function(key, val) { this.orHaving = function(key, val) {
_p.having(key, val, 'OR');
return this;
}; };
/**
* Set a 'where' clause
*
* @param {String|Object} key - The name of the field and the comparision operator, or an object
* @param {String|Number} [val] - The value to compare if the value of key is a string
* @return this
*/
this.where = function(key, val) { this.where = function(key, val) {
_p.where(key, val, 'AND');
return this;
}; };
/**
* Set a 'or where' clause
*
* @param {String|Object} key - The name of the field and the comparision operator, or an object
* @param {String|Number} [val] - The value to compare if the value of key is a string
* @return this
*/
this.orWhere = function(key, val) { this.orWhere = function(key, val) {
_p.where(key, val, 'OR');
return this;
}; };
/**
* Set a 'where in' clause
*
* @param {String} key - the field to search
* @param {Array} val - the array of items to search in
* @return this
*/
this.whereIn = function(key, val) { this.whereIn = function(key, val) {
_p.whereIn(key, val, 'IN', 'AND');
return this;
}; };
/**
* Set a 'or where in' clause
*
* @param {String} key - the field to search
* @param {Array} val - the array of items to search in
* @return this
*/
this.orWhereIn = function(key, val) { this.orWhereIn = function(key, val) {
_p.whereIn(key, val, 'IN', 'OR');
return this;
}; };
/**
* Set a 'where not in' clause
*
* @param {String} key - the field to search
* @param {Array} val - the array of items to search in
* @return this
*/
this.whereNotIn = function(key, val) { this.whereNotIn = function(key, val) {
_p.whereIn(key, val, 'NOT IN', 'AND');
return this;
}; };
/**
* Set a 'or where not in' clause
*
* @param {String} key - the field to search
* @param {Array} val - the array of items to search in
* @return this
*/
this.orWhereNotIn = function(key, val) { this.orWhereNotIn = function(key, val) {
_p.whereIn(key, val, 'NOT IN', 'OR');
};
this.set = function(key, val) {
return this; return this;
}; };
this.join = function(table1, cond, table2, type) { /**
type = type || "inner"; * Set values for insertion or updating
*
* @param {String|Object} key - The key or object to use
* @param {String} [val] - The value if using a scalar key
* @return this
*/
this.set = function(/* key, [val] */) {
var args = getArgs('key:string|object, [val]:string', arguments);
// Set the appropriate state variables
_p.mixedSet('setArrayKeys', args.key, args.val, 'key');
_p.mixedSet('values', args.key, args.val, 'value');
// Use the keys of the array to make the insert/update string
// and escape the field names
state.setArrayKeys = state.setArrayKeys.map(this.driver._quote);
// Generate the "set" string
state.setString = state.setArrayKeys.join('=?,');
state.setString += '=?';
return this; return this;
}; };
/**
* Add a join clause to the query
*
* @param {String} joinOn - The table you are joining
* @param {String} [cond='='] - The join condition, eg. =,<,>,<>,!=,etc.
* @param {String} joinTo - The value of the condition you are joining on, whether another table's field, or a literal value
* @param {String} [type='inner'] - The type of join, which defaults to inner
* @return this
*/
this.join = function(/* joinOn, [cond='='], joinTo, [type='inner']*/) {
var args = getArgs('joinOn:string, [cond]:string, joinTo:string, [type]:string', arguments);
args.cond = args.cond || '=';
args.type = args.type || "inner";
return this;
};
/**
* Group the results by the selected field(s)
*
* @param {String|Array} field
* @return this
*/
this.groupBy = function(field) { this.groupBy = function(field) {
if (Array.isArray(field))
{
var newGroupArray = field.map(this.driver.quoteIdentifiers);
state.groupArray.concat(newGroupArray);
}
else
{
state.groupArray.push(this.driver.quoteIdentifiers(field));
}
state.groupString = ' GROUP BY ' + state.groupArray.join(',');
return this;
}; };
this.orderBy = function(field) { /**
* Order the results by the selected field(s)
*
* @param {String} field - The field to order by
* @param {String} [type='ASC'] - The order direction, ASC or DESC
* @return this
*/
this.orderBy = function(field, type) {
type = type || 'ASC';
// Set the fields for later manipulation
field = this.driver.quoteIdentifiers(field);
state.orderArray[field] = type;
var orderClauses = [];
// Flatten key/val pairs into an array of space-separated pairs
Object.keys(state.orderArray).forEach(function(key) {
orderClauses.push(key + ' ' + state.orderArray[key].toUpperCase());
});
// Set the final string
state.orderString = ' ORDER BY ' + orderClauses.join(', ');
return this;
}; };
/**
* Put a limit on the query
*
* @param {Number} limit - The maximum number of rows to fetch
* @param {Number} [offset] - The row number to start from
* @return this
*/
this.limit = function(limit, offset) { this.limit = function(limit, offset) {
state.limit = limit; state.limit = limit;
state.offset = offset; state.offset = offset || null;
return this; return this;
}; };
/**
* Adds an open paren to the current query for logical grouping
*
* @return this
*/
this.groupStart = function() { this.groupStart = function() {
var conj = (state.queryMap.length < 1) ? ' WHERE ' : ' ';
_p.appendMap(conj, '(', 'groupStart');
return this;
}; };
/**
* Adds an open paren to the current query for logical grouping,
* prefixed with 'OR'
*
* @return this
*/
this.orGroupStart = function() { this.orGroupStart = function() {
_p.appendMap('', ' OR (', 'groupStart');
return this;
}; };
/**
* Adds an open paren to the current query for logical grouping,
* prefixed with 'OR NOT'
*
* @return this
*/
this.orNotGroupStart = function() { this.orNotGroupStart = function() {
_p.appendMap('', ' OR NOT (', 'groupStart');
return this;
}; };
/**
* Ends a logical grouping started with one of the groupStart methods
*
* @return this
*/
this.groupEnd = function() { this.groupEnd = function() {
_p.appendMap('', ')', 'groupEnd');
return this;
}; };
// ------------------------------------------------------------------------ // ------------------------------------------------------------------------
// ! Result Methods // ! Result Methods
// ------------------------------------------------------------------------ // ------------------------------------------------------------------------
this.get = function(table, limit, offset) { /**
// Reset state * Get the results of the compiled query
this.resetQuery(); *
* @param {String} [table] - The table to select from
* @param {Number} [limit] - A limit for the query
* @param {Number} [offset] - An offset for the query
* @param {Function} callback - A callback for receiving the result
* @return void
*/
this.get = function(/* [table], [limit], [offset], callback */) {
var args = getArgs('[table]:string, [limit]:number, [offset]:number, callback:function', arguments);
if (args.table) {
this.from(args.table);
}
if (args.limit) {
this.limit(args.limit, args.offset);
}
// Run the query
_p.run('get', args.table, args.callback);
}; };
this.getWhere = function(table, where, limit, offset) { /**
// Reset state * Run the generated insert query
this.resetQuery(); *
* @param {String} table - The table to insert into
* @param {Object} [data] - Data to insert, if not already added with the 'set' method
* @param {Function} callback - Callback for handling response from the database
* @return void
*/
this.insert = function(table, data, callback) {
if (data) {
this.set(data);
}
// Run the query
_p.run('insert', table, callback);
}; };
this.insert = function(table, data) { /**
// Reset state * Run the generated update query
this.resetQuery(); *
* @param {String} table - The table to insert into
* @param {Object} [data] - Data to insert, if not already added with the 'set' method
* @param {Function} callback - Callback for handling response from the database
* @return void
*/
this.update = function(table, data, callback) {
if (data) {
this.set(data);
}
// Run the query
_p.run('update', table, callback);
}; };
this.update = function(table, data) { /**
// Reset state * Run the generated delete query
this.resetQuery(); *
}; * @param {String} table - The table to insert into
* @param {Function} callback - Callback for handling response from the database
this['delete'] = function (table, where) { * @return void
// Reset state */
this.resetQuery(); this['delete'] = function (table, callback) {
// Run the query
_p.run('delete', table, callback);
}; };
// ------------------------------------------------------------------------ // ------------------------------------------------------------------------
@ -233,77 +777,53 @@ module.exports = function(driver) {
/** /**
* Return generated select query SQL * Return generated select query SQL
* *
* @param {String} [table] - the name of the table to retrieve from
* @param {Boolean} [reset=true] - Whether to reset the query builder so another query can be built
* @return String
*/
this.getCompiledSelect = function(table, reset) {
if (table)
{
this.from(table);
}
return _p.getCompile('get', table, reset);
};
/**
* Return generated insert query SQL
*
* @param {String} table - the name of the table to insert into
* @param {Boolean} [reset=true] - Whether to reset the query builder so another query can be built
* @return {String} * @return {String}
*/ */
this.getCompiledSelect = function() { this.getCompiledInsert = function(table, reset) {
// Return sql return _p.getCompile('insert', table, reset);
// Reset state
this.resetQuery();
};
this.getCompiledInsert = function() {
// Return sql
// Reset state
this.resetQuery();
};
this.getCompiledUpdate = function() {
// Return sql
// Reset state
this.resetQuery();
};
this.getCompiledDelete = function() {
// Return sql
// Reset state
this.resetQuery();
};
// ----------------------------------------------------------------------------
// ! Miscellaneous Methods
// ----------------------------------------------------------------------------
/**
* Reset the object state for a new query
*
* @return void
*/
this.resetQuery = function() {
state = {
// Arrays/Maps
queryMap: {},
values: [],
whereValues: [],
setArrayKeys: [],
orderArray: [],
groupArray: [],
havingMap: [],
// Partials
selectString: '',
fromString: '',
setString: '',
orderString: '',
groupString: '',
// Other various values
limit: null,
offset: null
};
}; };
/** /**
* Returns the current class state for testing or other purposes * Return generated update query SQL
* *
* @return {Object} * @param {String} table - the name of the table to update
* @param {Boolean} [reset=true] - Whether to reset the query builder so another query can be built
* @return {String}
*/ */
this.getState = function() { this.getCompiledUpdate = function(table, reset) {
return state; return _p.getCompile('update', table, reset);
};
/**
* Return generated delete query SQL
*
* @param {String} table - the name of the table to delete from
* @param {Boolean} [reset=true] - Whether to reset the query builder so another query can be built
* @return {String}
*/
this.getCompiledDelete = function(table, reset) {
return _p.getCompile('delete', table, reset);
}; };
return this; return this;
}; };
module.exports = QueryBuilder;

View File

@ -20,7 +20,10 @@
"grunt-contrib-nodeunit": "^0.4.1", "grunt-contrib-nodeunit": "^0.4.1",
"grunt-jsdoc": ">=0.6.1", "grunt-jsdoc": ">=0.6.1",
"jsdoc": "^3.3.0-alpha9", "jsdoc": "^3.3.0-alpha9",
"nodeunit": "^0.9.0" "mysql": "^2.5.2",
"mysql2": "^0.12.5",
"nodeunit": "^0.9.0",
"pg": "^3.6.2"
}, },
"peerDependencies": { "peerDependencies": {
"mysql": "", "mysql": "",

View File

@ -0,0 +1,36 @@
'use strict';
// Load a fresh version of the test base
delete require.cache[require.resolve('../query-builder-base')];
var testBase = require('../query-builder-base');
var tests = testBase.tests;
// Load the test config file
var adapterName = 'mysql2';
var config = require('../config.json')[adapterName];
// Set up the connection
var mysql2 = require(adapterName);
var connection = mysql2.createConnection(config.conn);
// Set up the query builder object
var nodeQuery = require('../../lib/node-query');
var qb = nodeQuery('mysql', connection, adapterName);
// Set up the test base
testBase._setUp(qb, function(test, err, rows) {
if (err) {
throw new Error(err);
}
test.ok(rows);
});
// Export the final test object
tests["mysql2 adapter with query builder"] = function(test) {
test.ok(testBase.qb);
test.done();
};
module.exports = tests;

View File

@ -0,0 +1,35 @@
'use strict';
// Load the test base
delete require.cache[require.resolve('../query-builder-base')];
var testBase = require('../query-builder-base');
var tests = testBase.tests;
// Load the test config file
var adapterName = 'mysql';
var config = require('../config.json')[adapterName];
// Set up the connection
var mysql = require(adapterName);
var connection = mysql.createConnection(config.conn);
// Set up the query builder object
var nodeQuery = require('../../lib/node-query');
var qb = nodeQuery('mysql', connection, adapterName);
// Set up the test base
testBase._setUp(qb, function(test, err, rows) {
if (err) {
throw new Error(err);
}
test.ok(rows);
});
tests["mysql adapter with query builder"] = function(test) {
test.ok(testBase.qb);
test.done();
};
// Export the final test object
module.exports = tests;

37
tests/adapters/pg_test.js Normal file
View File

@ -0,0 +1,37 @@
'use strict';
// Load the test base
delete require.cache[require.resolve('../query-builder-base')];
var testBase = require('../query-builder-base');
var tests = testBase.tests;
// Load the test config file
var adapterName = 'pg';
var config = require('../config.json')[adapterName];
// Set up the connection
var pg = require(adapterName);
var connection = new pg.Client(config.conn);
// Set up the query builder object
var nodeQuery = require('../../lib/node-query');
var qb = nodeQuery('pg', connection, adapterName);
// Set up the test base
testBase._setUp(qb, function(test, err, rows) {
if (err) {
throw new Error(err);
}
test.ok(rows);
});
// Export the final test object
tests["pg adapter with query builder"] = function(test) {
test.ok(testBase.qb);
test.done();
};
module.exports = tests;

View File

@ -4,7 +4,10 @@ var modules = {
helpers: require('../lib/helpers'), helpers: require('../lib/helpers'),
driver: require('../lib/driver'), driver: require('../lib/driver'),
qb: require('../lib/query-builder'), qb: require('../lib/query-builder'),
'node-query': require('../lib/node-query') 'node-query': require('../lib/node-query'),
'drivers/pg': require('../lib/drivers/pg'),
'drivers/mysql': require('../lib/drivers/mysql'),
adapter: require('../lib/adapter')
}; };
module.exports = { module.exports = {

24
tests/config.json Normal file
View File

@ -0,0 +1,24 @@
{
"mysql": {
"driver": "mysql",
"conn": {
"host": "localhost",
"user": "test",
"password": "",
"database": "test"
}
},
"mysql2": {
"driver": "mysql",
"conn": {
"host": "localhost",
"user": "test",
"password": "",
"database": "test"
}
},
"pg": {
"driver": "pg",
"conn": "postgres://test:test@localhost/test"
}
}

17
tests/helpers_test.js Normal file
View File

@ -0,0 +1,17 @@
'use strict';
var helpers = require('../lib/helpers');
var helperTests = {
'Type checking method tests' : {
"Object wrappers are listed as their native type": function(test) {
test.deepEqual('boolean', helpers.type(new Boolean(true)), "Boolean Wrapper returns 'boolean' not 'object'");
test.deepEqual('number', helpers.type(new Number(4867)), "Number Wrapper returns 'number' not 'object");
test.deepEqual('string', helpers.type(new String("Foo")), "String Wrapper returns 'string' not 'object'");
test.done();
}
}
};
module.exports = helperTests;

View File

@ -0,0 +1,57 @@
'use strict';
module.exports = (function() {
var base = {};
/**
* Inject the appropriate driver and adapter for the test suite
*
* @param {Object} qb - The adapter-specific query builder object
* @param {Function} callback - The test callback
* @return void
*/
base._setUp = function(qb, callback) {
base.qb = qb;
base.testCallback = callback;
};
/**
* Generic query builder tests
*/
base.tests = {
'Get tests' : {
'Basic select all get': function(test) {
base.qb.get('create_test', base.testCallback.bind(test, test));
test.done();
},
'Basic select all with from': function(test) {
base.qb.from('create_test')
.get(base.testCallback.bind(test, test));
test.done();
}
},
'Select tests' : {
},
'Grouping tests' : {
},
'Where in tests' : {
},
'Query modifier tests': {
},
'DB update tests' : {
},
'Compiled query tests' : {
},
'Error tests' : {
}
};
return base;
}());

View File

@ -1,10 +0,0 @@
var queryBuilder = require('../lib/query-builder');
module.exports = {
setUp: function() {
},
tearDown: function() {
}
};

89
tests/sql/mysql.sql Normal file
View File

@ -0,0 +1,89 @@
-- sample data to test MySQL
-- TABLE TEST
DROP TABLE IF EXISTS TEST1;
CREATE TABLE TEST1 (
TEST_NAME CHAR(30) NOT NULL,
TEST_ID INTEGER DEFAULT '0' NOT NULL,
TEST_DATE TIMESTAMP NOT NULL
);
ALTER TABLE TEST1 ADD CONSTRAINT PK_TEST PRIMARY KEY (TEST_ID);
-- TABLE TEST2 with some CONSTRAINTs and an INDEX
DROP TABLE IF EXISTS TEST2;
CREATE TABLE TEST2 (
ID INTEGER NOT NULL,
FIELD1 INTEGER,
FIELD2 CHAR(15),
FIELD3 VARCHAR(50),
FIELD4 INTEGER,
FIELD5 INTEGER,
ID2 INTEGER NOT NULL
);
ALTER TABLE TEST2 ADD CONSTRAINT PK_TEST2 PRIMARY KEY (ID2);
ALTER TABLE TEST2 ADD CONSTRAINT TEST2_FIELD1ID_IDX UNIQUE (ID, FIELD1);
ALTER TABLE TEST2 ADD CONSTRAINT TEST2_FIELD4_IDX UNIQUE (FIELD4);
CREATE INDEX TEST2_FIELD5_IDX ON TEST2(FIELD5);
-- TABLE NUMBERS
DROP TABLE IF EXISTS NUMBERS;
CREATE TABLE NUMBERS (
NUMBER INTEGER DEFAULT '0' NOT NULL,
EN CHAR(100) NOT NULL,
FR CHAR(100) NOT NULL
);
-- TABLE NEWTABLE
DROP TABLE IF EXISTS NEWTABLE;
CREATE TABLE NEWTABLE (
ID INT DEFAULT 0 NOT NULL,
SOMENAME VARCHAR (12),
SOMEDATE TIMESTAMP NOT NULL
);
ALTER TABLE NEWTABLE ADD CONSTRAINT PKINDEX_IDX PRIMARY KEY (ID);
-- DROP SEQUENCE IF EXISTS NEWTABLE_SEQ CASCADE;
-- CREATE SEQUENCE NEWTABLE_SEQ INCREMENT 1 START 1;
-- VIEW on TEST
CREATE OR REPLACE VIEW `testview`(
TEST_NAME,
TEST_ID,
TEST_DATE
) AS
SELECT *
FROM TEST1
WHERE TEST_NAME LIKE 't%';
-- VIEW on NUMBERS
CREATE OR REPLACE VIEW `numbersview`(
NUMBER,
TRANS_EN,
TRANS_FR
) AS
SELECT *
FROM NUMBERS
WHERE NUMBER > 100;
-- TABLEs for testing CONSTRAINTs
DROP TABLE IF EXISTS testconstraints;
CREATE TABLE testconstraints (
someid integer NOT NULL,
somename varchar(10) NOT NULL,
CONSTRAINT testconstraints_id_pk PRIMARY KEY (someid)
);
DROP TABLE IF EXISTS testconstraints2;
CREATE TABLE testconstraints2 (
ext_id integer NOT NULL,
modified date,
uniquefield varchar(10) NOT NULL,
usraction integer NOT NULL,
CONSTRAINT testconstraints_id_fk FOREIGN KEY (ext_id)
REFERENCES testconstraints (someid)
ON UPDATE CASCADE
ON DELETE CASCADE,
CONSTRAINT unique_2_fields_idx UNIQUE (modified, usraction),
CONSTRAINT uniquefld_idx UNIQUE (uniquefield)
);

105
tests/sql/pgsql.sql Normal file
View File

@ -0,0 +1,105 @@
-- sample data to test PostgreSQL INFORMATION_SCHEMA
-- TABLE TEST
CREATE TABLE IF NOT EXISTS TEST1 (
TEST_NAME CHAR(30) NOT NULL,
TEST_ID INTEGER DEFAULT '0' NOT NULL,
TEST_DATE TIMESTAMP NOT NULL
);
ALTER TABLE TEST1 DROP CONSTRAINT IF EXISTS PK_TEST CASCADE;
ALTER TABLE TEST1 ADD CONSTRAINT PK_TEST PRIMARY KEY (TEST_ID);
-- TABLE TEST2 with some CONSTRAINTs and an INDEX
CREATE TABLE IF NOT EXISTS TEST2 (
ID INTEGER NOT NULL,
FIELD1 INTEGER,
FIELD2 CHAR(15),
FIELD3 VARCHAR(50),
FIELD4 INTEGER,
FIELD5 INTEGER,
ID2 INTEGER NOT NULL
);
ALTER TABLE TEST2 DROP CONSTRAINT IF EXISTS PK_TEST2 CASCADE;
ALTER TABLE TEST2 DROP CONSTRAINT IF EXISTS TEST2_FIELD1ID_IDX CASCADE;
ALTER TABLE TEST2 DROP CONSTRAINT IF EXISTS TEST2_FIELD4_IDX CASCADE;
DROP INDEX IF EXISTS TEST2_FIELD5_IDX;
ALTER TABLE TEST2 ADD CONSTRAINT PK_TEST2 PRIMARY KEY (ID2);
ALTER TABLE TEST2 ADD CONSTRAINT TEST2_FIELD1ID_IDX UNIQUE (ID, FIELD1);
ALTER TABLE TEST2 ADD CONSTRAINT TEST2_FIELD4_IDX UNIQUE (FIELD4);
CREATE INDEX TEST2_FIELD5_IDX ON TEST2(FIELD5);
-- TABLE NUMBERS
CREATE TABLE IF NOT EXISTS NUMBERS (
NUMBER INTEGER DEFAULT '0' NOT NULL,
EN CHAR(100) NOT NULL,
FR CHAR(100) NOT NULL
);
-- TABLE NEWTABLE
CREATE TABLE IF NOT EXISTS NEWTABLE (
ID INT DEFAULT 0 NOT NULL,
SOMENAME VARCHAR (12),
SOMEDATE TIMESTAMP NOT NULL
);
ALTER TABLE NEWTABLE DROP CONSTRAINT IF EXISTS PKINDEX_IDX CASCADE;
ALTER TABLE NEWTABLE ADD CONSTRAINT PKINDEX_IDX PRIMARY KEY (ID);
DROP SEQUENCE IF EXISTS NEWTABLE_SEQ CASCADE;
CREATE SEQUENCE NEWTABLE_SEQ INCREMENT 1 START 1;
-- VIEW on TEST
CREATE OR REPLACE VIEW "testview"(
TEST_NAME,
TEST_ID,
TEST_DATE
) AS
SELECT *
FROM TEST1
WHERE TEST_NAME LIKE 't%';
-- VIEW on NUMBERS
CREATE OR REPLACE VIEW "numbersview"(
NUMBER,
TRANS_EN,
TRANS_FR
) AS
SELECT *
FROM NUMBERS
WHERE NUMBER > 100;
-- TRIGGER on NEWTABLE
DROP FUNCTION IF EXISTS add_stamp() CASCADE;
CREATE OR REPLACE FUNCTION add_stamp() RETURNS OPAQUE AS '
BEGIN
IF (NEW.somedate IS NULL OR NEW.somedate = 0) THEN
NEW.somedate := CURRENT_TIMESTAMP;
RETURN NEW;
END IF;
END;
' LANGUAGE 'plpgsql';
DROP TRIGGER IF EXISTS ADDCURRENTDATE ON newtable;
CREATE TRIGGER ADDCURRENTDATE
BEFORE INSERT OR UPDATE
ON newtable FOR EACH ROW
EXECUTE PROCEDURE add_stamp();
-- TABLEs for testing CONSTRAINTs
CREATE TABLE IF NOT EXISTS testconstraints (
someid integer NOT NULL,
somename character varying(10) NOT NULL,
CONSTRAINT testconstraints_id_pk PRIMARY KEY (someid)
);
CREATE TABLE IF NOT EXISTS testconstraints2 (
ext_id integer NOT NULL,
modified date,
uniquefield character varying(10) NOT NULL,
usraction integer NOT NULL,
CONSTRAINT testconstraints_id_fk FOREIGN KEY (ext_id)
REFERENCES testconstraints (someid) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE,
CONSTRAINT unique_2_fields_idx UNIQUE (modified, usraction),
CONSTRAINT uniquefld_idx UNIQUE (uniquefield)
);

82
tests/sql/sqlite.sql Normal file
View File

@ -0,0 +1,82 @@
-- sample data to test SQLite
CREATE TABLE IF NOT EXISTS "create_test" ("id" INTEGER PRIMARY KEY, "key" TEXT, "val" TEXT);
CREATE TABLE IF NOT EXISTS "create_join" ("id" INTEGER PRIMARY KEY, "key" TEXT, "val" TEXT);
CREATE TABLE IF NOT EXISTS "create_delete" ("id" INTEGER PRIMARY KEY, "key" TEXT, "val" TEXT);
-- TABLE TEST
DROP TABLE IF EXISTS TEST1;
CREATE TABLE TEST1 (
TEST_NAME TEXT NOT NULL,
TEST_ID INTEGER DEFAULT '0' NOT NULL,
TEST_DATE TEXT NOT NULL,
CONSTRAINT PK_TEST PRIMARY KEY (TEST_ID)
);
-- TABLE TEST2 with some CONSTRAINTs and an INDEX
DROP TABLE IF EXISTS TEST2;
CREATE TABLE TEST2 (
ID INTEGER NOT NULL,
FIELD1 INTEGER,
FIELD2 TEXT,
FIELD3 TEXT,
FIELD4 INTEGER,
FIELD5 INTEGER,
ID2 INTEGER NOT NULL,
CONSTRAINT PK_TEST2 PRIMARY KEY (ID2),
CONSTRAINT TEST2_FIELD1ID_IDX UNIQUE (ID, FIELD1),
CONSTRAINT TEST2_FIELD4_IDX UNIQUE (FIELD4)
);
CREATE INDEX TEST2_FIELD5_IDX ON TEST2 (FIELD5);
-- TABLE NUMBERS
DROP TABLE IF EXISTS NUMBERS;
CREATE TABLE NUMBERS (
NUMBER INTEGER DEFAULT 0 NOT NULL,
EN TEXT NOT NULL,
FR TEXT NOT NULL
);
-- TABLE NEWTABLE
DROP TABLE IF EXISTS NEWTABLE;
CREATE TABLE NEWTABLE (
ID INTEGER DEFAULT 0 NOT NULL,
SOMENAME TEXT,
SOMEDATE TEXT NOT NULL,
CONSTRAINT PKINDEX_IDX PRIMARY KEY (ID)
);
-- VIEW on TEST
DROP VIEW IF EXISTS "testview";
CREATE VIEW "testview" AS
SELECT *
FROM TEST1
WHERE TEST_NAME LIKE 't%';
-- VIEW on NUMBERS
DROP VIEW IF EXISTS "numbersview";
CREATE VIEW "numbersview" AS
SELECT *
FROM NUMBERS
WHERE NUMBER > 100;
-- TABLEs for testing CONSTRAINTs
DROP TABLE IF EXISTS "testconstraints";
CREATE TABLE "testconstraints" (
someid integer NOT NULL,
somename TEXT NOT NULL,
CONSTRAINT testconstraints_id_pk PRIMARY KEY (someid)
);
DROP TABLE IF EXISTS "testconstraints2";
CREATE TABLE "testconstraints2" (
ext_id integer NOT NULL,
modified text,
uniquefield text NOT NULL,
usraction integer NOT NULL,
CONSTRAINT testconstraints_id_fk FOREIGN KEY (ext_id)
REFERENCES testconstraints (someid)
ON UPDATE CASCADE
ON DELETE CASCADE,
CONSTRAINT unique_2_fields_idx UNIQUE (modified, usraction),
CONSTRAINT uniquefld_idx UNIQUE (uniquefield)
);