sphinx build 2015-05-30 23:15:38-07:00
|
@ -1,4 +1,4 @@
|
||||||
# Sphinx build info version 1
|
# Sphinx build info version 1
|
||||||
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
|
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
|
||||||
config: 646af3bec0e0a7be5a0d8b9116f40b74
|
config: 7717093e76b8328f97ca18f00b7501d5
|
||||||
tags: fbb0d17656682115ca4d033fb2f83ba1
|
tags: 645f666f9bcd5a90fca523b33c5a78b7
|
||||||
|
|
|
@ -178,7 +178,7 @@ Mics tables
|
||||||
|
|
||||||
.. dex-table:: Experience
|
.. dex-table:: Experience
|
||||||
.. dex-table:: PalPark
|
.. dex-table:: PalPark
|
||||||
.. dex-table:: StatHint
|
.. dex-table:: Characteristic
|
||||||
|
|
||||||
Conquest tables
|
Conquest tables
|
||||||
---------------
|
---------------
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
*
|
*
|
||||||
* Sphinx stylesheet -- basic theme.
|
* Sphinx stylesheet -- basic theme.
|
||||||
*
|
*
|
||||||
* :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
|
* :copyright: Copyright 2007-2015 by the Sphinx team, see AUTHORS.
|
||||||
* :license: BSD, see LICENSE for details.
|
* :license: BSD, see LICENSE for details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
@ -89,6 +89,7 @@ div.sphinxsidebar #searchbox input[type="submit"] {
|
||||||
|
|
||||||
img {
|
img {
|
||||||
border: 0;
|
border: 0;
|
||||||
|
max-width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -- search page ----------------------------------------------------------- */
|
/* -- search page ----------------------------------------------------------- */
|
||||||
|
@ -196,7 +197,10 @@ h3:hover > a.headerlink,
|
||||||
h4:hover > a.headerlink,
|
h4:hover > a.headerlink,
|
||||||
h5:hover > a.headerlink,
|
h5:hover > a.headerlink,
|
||||||
h6:hover > a.headerlink,
|
h6:hover > a.headerlink,
|
||||||
dt:hover > a.headerlink {
|
dt:hover > a.headerlink,
|
||||||
|
caption:hover > a.headerlink,
|
||||||
|
p.caption:hover > a.headerlink,
|
||||||
|
div.code-block-caption:hover > a.headerlink {
|
||||||
visibility: visible;
|
visibility: visible;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -313,6 +317,13 @@ table.docutils {
|
||||||
border-collapse: collapse;
|
border-collapse: collapse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
table caption span.caption-number {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
table caption span.caption-text {
|
||||||
|
}
|
||||||
|
|
||||||
table.docutils td, table.docutils th {
|
table.docutils td, table.docutils th {
|
||||||
padding: 1px 8px 1px 5px;
|
padding: 1px 8px 1px 5px;
|
||||||
border-top: 0;
|
border-top: 0;
|
||||||
|
@ -343,6 +354,25 @@ table.citation td {
|
||||||
border-bottom: none;
|
border-bottom: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* -- figures --------------------------------------------------------------- */
|
||||||
|
|
||||||
|
div.figure {
|
||||||
|
margin: 0.5em;
|
||||||
|
padding: 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.figure p.caption {
|
||||||
|
padding: 0.3em;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.figure p.caption span.caption-number {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.figure p.caption span.caption-text {
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* -- other body styles ----------------------------------------------------- */
|
/* -- other body styles ----------------------------------------------------- */
|
||||||
|
|
||||||
ol.arabic {
|
ol.arabic {
|
||||||
|
@ -401,14 +431,14 @@ dl.glossary dt {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.refcount {
|
|
||||||
color: #060;
|
|
||||||
}
|
|
||||||
|
|
||||||
.optional {
|
.optional {
|
||||||
font-size: 1.3em;
|
font-size: 1.3em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.sig-paren {
|
||||||
|
font-size: larger;
|
||||||
|
}
|
||||||
|
|
||||||
.versionmodified {
|
.versionmodified {
|
||||||
font-style: italic;
|
font-style: italic;
|
||||||
}
|
}
|
||||||
|
@ -474,22 +504,51 @@ table.highlighttable td {
|
||||||
padding: 0 0.5em 0 0.5em;
|
padding: 0 0.5em 0 0.5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
tt.descname {
|
div.code-block-caption {
|
||||||
|
padding: 2px 5px;
|
||||||
|
font-size: small;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.code-block-caption code {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.code-block-caption + div > div.highlight > pre {
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.code-block-caption span.caption-number {
|
||||||
|
padding: 0.1em 0.3em;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.code-block-caption span.caption-text {
|
||||||
|
}
|
||||||
|
|
||||||
|
div.literal-block-wrapper {
|
||||||
|
padding: 1em 1em 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.literal-block-wrapper div.highlight {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
code.descname {
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
font-size: 1.2em;
|
font-size: 1.2em;
|
||||||
}
|
}
|
||||||
|
|
||||||
tt.descclassname {
|
code.descclassname {
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
}
|
}
|
||||||
|
|
||||||
tt.xref, a tt {
|
code.xref, a code {
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt {
|
h1 code, h2 code, h3 code, h4 code, h5 code, h6 code {
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
261
_static/classic.css
Normal file
|
@ -0,0 +1,261 @@
|
||||||
|
/*
|
||||||
|
* default.css_t
|
||||||
|
* ~~~~~~~~~~~~~
|
||||||
|
*
|
||||||
|
* Sphinx stylesheet -- default theme.
|
||||||
|
*
|
||||||
|
* :copyright: Copyright 2007-2015 by the Sphinx team, see AUTHORS.
|
||||||
|
* :license: BSD, see LICENSE for details.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
@import url("basic.css");
|
||||||
|
|
||||||
|
/* -- page layout ----------------------------------------------------------- */
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family: sans-serif;
|
||||||
|
font-size: 100%;
|
||||||
|
background-color: #11303d;
|
||||||
|
color: #000;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.document {
|
||||||
|
background-color: #1c4e63;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.documentwrapper {
|
||||||
|
float: left;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.bodywrapper {
|
||||||
|
margin: 0 0 0 230px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.body {
|
||||||
|
background-color: #ffffff;
|
||||||
|
color: #000000;
|
||||||
|
padding: 0 20px 30px 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.footer {
|
||||||
|
color: #ffffff;
|
||||||
|
width: 100%;
|
||||||
|
padding: 9px 0 9px 0;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 75%;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.footer a {
|
||||||
|
color: #ffffff;
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.related {
|
||||||
|
background-color: #133f52;
|
||||||
|
line-height: 30px;
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.related a {
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.sphinxsidebar {
|
||||||
|
}
|
||||||
|
|
||||||
|
div.sphinxsidebar h3 {
|
||||||
|
font-family: 'Trebuchet MS', sans-serif;
|
||||||
|
color: #ffffff;
|
||||||
|
font-size: 1.4em;
|
||||||
|
font-weight: normal;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.sphinxsidebar h3 a {
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.sphinxsidebar h4 {
|
||||||
|
font-family: 'Trebuchet MS', sans-serif;
|
||||||
|
color: #ffffff;
|
||||||
|
font-size: 1.3em;
|
||||||
|
font-weight: normal;
|
||||||
|
margin: 5px 0 0 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.sphinxsidebar p {
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.sphinxsidebar p.topless {
|
||||||
|
margin: 5px 10px 10px 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.sphinxsidebar ul {
|
||||||
|
margin: 10px;
|
||||||
|
padding: 0;
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.sphinxsidebar a {
|
||||||
|
color: #98dbcc;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.sphinxsidebar input {
|
||||||
|
border: 1px solid #98dbcc;
|
||||||
|
font-family: sans-serif;
|
||||||
|
font-size: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* -- hyperlink styles ------------------------------------------------------ */
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: #355f7c;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:visited {
|
||||||
|
color: #355f7c;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:hover {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* -- body styles ----------------------------------------------------------- */
|
||||||
|
|
||||||
|
div.body h1,
|
||||||
|
div.body h2,
|
||||||
|
div.body h3,
|
||||||
|
div.body h4,
|
||||||
|
div.body h5,
|
||||||
|
div.body h6 {
|
||||||
|
font-family: 'Trebuchet MS', sans-serif;
|
||||||
|
background-color: #f2f2f2;
|
||||||
|
font-weight: normal;
|
||||||
|
color: #20435c;
|
||||||
|
border-bottom: 1px solid #ccc;
|
||||||
|
margin: 20px -20px 10px -20px;
|
||||||
|
padding: 3px 0 3px 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.body h1 { margin-top: 0; font-size: 200%; }
|
||||||
|
div.body h2 { font-size: 160%; }
|
||||||
|
div.body h3 { font-size: 140%; }
|
||||||
|
div.body h4 { font-size: 120%; }
|
||||||
|
div.body h5 { font-size: 110%; }
|
||||||
|
div.body h6 { font-size: 100%; }
|
||||||
|
|
||||||
|
a.headerlink {
|
||||||
|
color: #c60f0f;
|
||||||
|
font-size: 0.8em;
|
||||||
|
padding: 0 4px 0 4px;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.headerlink:hover {
|
||||||
|
background-color: #c60f0f;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.body p, div.body dd, div.body li {
|
||||||
|
text-align: justify;
|
||||||
|
line-height: 130%;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.admonition p.admonition-title + p {
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.admonition p {
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.admonition pre {
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.admonition ul, div.admonition ol {
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.note {
|
||||||
|
background-color: #eee;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.seealso {
|
||||||
|
background-color: #ffc;
|
||||||
|
border: 1px solid #ff6;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.topic {
|
||||||
|
background-color: #eee;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.warning {
|
||||||
|
background-color: #ffe4e4;
|
||||||
|
border: 1px solid #f66;
|
||||||
|
}
|
||||||
|
|
||||||
|
p.admonition-title {
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
|
||||||
|
p.admonition-title:after {
|
||||||
|
content: ":";
|
||||||
|
}
|
||||||
|
|
||||||
|
pre {
|
||||||
|
padding: 5px;
|
||||||
|
background-color: #eeffcc;
|
||||||
|
color: #333333;
|
||||||
|
line-height: 120%;
|
||||||
|
border: 1px solid #ac9;
|
||||||
|
border-left: none;
|
||||||
|
border-right: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
code {
|
||||||
|
background-color: #ecf0f3;
|
||||||
|
padding: 0 1px 0 1px;
|
||||||
|
font-size: 0.95em;
|
||||||
|
}
|
||||||
|
|
||||||
|
th {
|
||||||
|
background-color: #ede;
|
||||||
|
}
|
||||||
|
|
||||||
|
.warning code {
|
||||||
|
background: #efc2c2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.note code {
|
||||||
|
background: #d6d6d6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewcode-back {
|
||||||
|
font-family: sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.viewcode-block:target {
|
||||||
|
background-color: #f4debf;
|
||||||
|
border-top: 1px solid #ac9;
|
||||||
|
border-bottom: 1px solid #ac9;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.code-block-caption {
|
||||||
|
color: #efefef;
|
||||||
|
background-color: #1c4e63;
|
||||||
|
}
|
|
@ -4,7 +4,7 @@
|
||||||
*
|
*
|
||||||
* Sphinx JavaScript utilities for all documentation.
|
* Sphinx JavaScript utilities for all documentation.
|
||||||
*
|
*
|
||||||
* :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
|
* :copyright: Copyright 2007-2015 by the Sphinx team, see AUTHORS.
|
||||||
* :license: BSD, see LICENSE for details.
|
* :license: BSD, see LICENSE for details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
@ -32,7 +32,7 @@ if (!window.console || !console.firebug) {
|
||||||
*/
|
*/
|
||||||
jQuery.urldecode = function(x) {
|
jQuery.urldecode = function(x) {
|
||||||
return decodeURIComponent(x).replace(/\+/g, ' ');
|
return decodeURIComponent(x).replace(/\+/g, ' ');
|
||||||
}
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* small helper function to urlencode strings
|
* small helper function to urlencode strings
|
||||||
|
@ -61,18 +61,6 @@ jQuery.getQueryParameters = function(s) {
|
||||||
return result;
|
return result;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* small function to check if an array contains
|
|
||||||
* a given item.
|
|
||||||
*/
|
|
||||||
jQuery.contains = function(arr, item) {
|
|
||||||
for (var i = 0; i < arr.length; i++) {
|
|
||||||
if (arr[i] == item)
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* highlight a given string on a jquery object by wrapping it in
|
* highlight a given string on a jquery object by wrapping it in
|
||||||
* span elements with the given class name.
|
* span elements with the given class name.
|
||||||
|
@ -103,6 +91,30 @@ jQuery.fn.highlightText = function(text, className) {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* backward compatibility for jQuery.browser
|
||||||
|
* This will be supported until firefox bug is fixed.
|
||||||
|
*/
|
||||||
|
if (!jQuery.browser) {
|
||||||
|
jQuery.uaMatch = function(ua) {
|
||||||
|
ua = ua.toLowerCase();
|
||||||
|
|
||||||
|
var match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
|
||||||
|
/(webkit)[ \/]([\w.]+)/.exec(ua) ||
|
||||||
|
/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
|
||||||
|
/(msie) ([\w.]+)/.exec(ua) ||
|
||||||
|
ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) ||
|
||||||
|
[];
|
||||||
|
|
||||||
|
return {
|
||||||
|
browser: match[ 1 ] || "",
|
||||||
|
version: match[ 2 ] || "0"
|
||||||
|
};
|
||||||
|
};
|
||||||
|
jQuery.browser = {};
|
||||||
|
jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Small JavaScript module for the documentation.
|
* Small JavaScript module for the documentation.
|
||||||
*/
|
*/
|
||||||
|
@ -164,9 +176,10 @@ var Documentation = {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* workaround a firefox stupidity
|
* workaround a firefox stupidity
|
||||||
|
* see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075
|
||||||
*/
|
*/
|
||||||
fixFirefoxAnchorBug : function() {
|
fixFirefoxAnchorBug : function() {
|
||||||
if (document.location.hash && $.browser.mozilla)
|
if (document.location.hash)
|
||||||
window.setTimeout(function() {
|
window.setTimeout(function() {
|
||||||
document.location.href += '';
|
document.location.href += '';
|
||||||
}, 10);
|
}, 10);
|
||||||
|
@ -180,6 +193,9 @@ var Documentation = {
|
||||||
var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : [];
|
var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : [];
|
||||||
if (terms.length) {
|
if (terms.length) {
|
||||||
var body = $('div.body');
|
var body = $('div.body');
|
||||||
|
if (!body.length) {
|
||||||
|
body = $('body');
|
||||||
|
}
|
||||||
window.setTimeout(function() {
|
window.setTimeout(function() {
|
||||||
$.each(terms, function() {
|
$.each(terms, function() {
|
||||||
body.highlightText(this.toLowerCase(), 'highlighted');
|
body.highlightText(this.toLowerCase(), 'highlighted');
|
||||||
|
|
Before Width: | Height: | Size: 368 B After Width: | Height: | Size: 347 B |
BIN
_static/down.png
Before Width: | Height: | Size: 363 B After Width: | Height: | Size: 347 B |
BIN
_static/file.png
Before Width: | Height: | Size: 392 B After Width: | Height: | Size: 358 B |
10308
_static/jquery-1.11.1.js
vendored
Normal file
158
_static/jquery.js
vendored
Before Width: | Height: | Size: 199 B After Width: | Height: | Size: 173 B |
BIN
_static/plus.png
Before Width: | Height: | Size: 199 B After Width: | Height: | Size: 173 B |
|
@ -13,11 +13,11 @@
|
||||||
.highlight .gr { color: #FF0000 } /* Generic.Error */
|
.highlight .gr { color: #FF0000 } /* Generic.Error */
|
||||||
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
|
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
|
||||||
.highlight .gi { color: #00A000 } /* Generic.Inserted */
|
.highlight .gi { color: #00A000 } /* Generic.Inserted */
|
||||||
.highlight .go { color: #303030 } /* Generic.Output */
|
.highlight .go { color: #333333 } /* Generic.Output */
|
||||||
.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
|
.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
|
||||||
.highlight .gs { font-weight: bold } /* Generic.Strong */
|
.highlight .gs { font-weight: bold } /* Generic.Strong */
|
||||||
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
|
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
|
||||||
.highlight .gt { color: #0040D0 } /* Generic.Traceback */
|
.highlight .gt { color: #0044DD } /* Generic.Traceback */
|
||||||
.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
|
.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
|
||||||
.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
|
.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
|
||||||
.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
|
.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
|
||||||
|
@ -40,6 +40,7 @@
|
||||||
.highlight .nv { color: #bb60d5 } /* Name.Variable */
|
.highlight .nv { color: #bb60d5 } /* Name.Variable */
|
||||||
.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */
|
.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */
|
||||||
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
|
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
|
||||||
|
.highlight .mb { color: #208050 } /* Literal.Number.Bin */
|
||||||
.highlight .mf { color: #208050 } /* Literal.Number.Float */
|
.highlight .mf { color: #208050 } /* Literal.Number.Float */
|
||||||
.highlight .mh { color: #208050 } /* Literal.Number.Hex */
|
.highlight .mh { color: #208050 } /* Literal.Number.Hex */
|
||||||
.highlight .mi { color: #208050 } /* Literal.Number.Integer */
|
.highlight .mi { color: #208050 } /* Literal.Number.Integer */
|
||||||
|
|
|
@ -4,38 +4,11 @@
|
||||||
*
|
*
|
||||||
* Sphinx JavaScript utilties for the full-text search.
|
* Sphinx JavaScript utilties for the full-text search.
|
||||||
*
|
*
|
||||||
* :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
|
* :copyright: Copyright 2007-2015 by the Sphinx team, see AUTHORS.
|
||||||
* :license: BSD, see LICENSE for details.
|
* :license: BSD, see LICENSE for details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
|
||||||
* helper function to return a node containing the
|
|
||||||
* search summary for a given text. keywords is a list
|
|
||||||
* of stemmed words, hlwords is the list of normal, unstemmed
|
|
||||||
* words. the first one is used to find the occurance, the
|
|
||||||
* latter for highlighting it.
|
|
||||||
*/
|
|
||||||
|
|
||||||
jQuery.makeSearchSummary = function(text, keywords, hlwords) {
|
|
||||||
var textLower = text.toLowerCase();
|
|
||||||
var start = 0;
|
|
||||||
$.each(keywords, function() {
|
|
||||||
var i = textLower.indexOf(this.toLowerCase());
|
|
||||||
if (i > -1)
|
|
||||||
start = i;
|
|
||||||
});
|
|
||||||
start = Math.max(start - 120, 0);
|
|
||||||
var excerpt = ((start > 0) ? '...' : '') +
|
|
||||||
$.trim(text.substr(start, 240)) +
|
|
||||||
((start + 240 - text.length) ? '...' : '');
|
|
||||||
var rv = $('<div class="context"></div>').text(excerpt);
|
|
||||||
$.each(hlwords, function() {
|
|
||||||
rv = rv.highlightText(this, 'highlighted');
|
|
||||||
});
|
|
||||||
return rv;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Porter Stemmer
|
* Porter Stemmer
|
||||||
|
@ -220,6 +193,38 @@ var Stemmer = function() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Simple result scoring code.
|
||||||
|
*/
|
||||||
|
var Scorer = {
|
||||||
|
// Implement the following function to further tweak the score for each result
|
||||||
|
// The function takes a result array [filename, title, anchor, descr, score]
|
||||||
|
// and returns the new score.
|
||||||
|
/*
|
||||||
|
score: function(result) {
|
||||||
|
return result[4];
|
||||||
|
},
|
||||||
|
*/
|
||||||
|
|
||||||
|
// query matches the full name of an object
|
||||||
|
objNameMatch: 11,
|
||||||
|
// or matches in the last dotted part of the object name
|
||||||
|
objPartialMatch: 6,
|
||||||
|
// Additive scores depending on the priority of the object
|
||||||
|
objPrio: {0: 15, // used to be importantResults
|
||||||
|
1: 5, // used to be objectResults
|
||||||
|
2: -5}, // used to be unimportantResults
|
||||||
|
// Used when the priority is not in the mapping.
|
||||||
|
objPrioDefault: 0,
|
||||||
|
|
||||||
|
// query found in title
|
||||||
|
title: 15,
|
||||||
|
// query found in terms
|
||||||
|
term: 5
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Search Module
|
* Search Module
|
||||||
*/
|
*/
|
||||||
|
@ -239,8 +244,13 @@ var Search = {
|
||||||
},
|
},
|
||||||
|
|
||||||
loadIndex : function(url) {
|
loadIndex : function(url) {
|
||||||
$.ajax({type: "GET", url: url, data: null, success: null,
|
$.ajax({type: "GET", url: url, data: null,
|
||||||
dataType: "script", cache: true});
|
dataType: "script", cache: true,
|
||||||
|
complete: function(jqxhr, textstatus) {
|
||||||
|
if (textstatus != "success") {
|
||||||
|
document.getElementById("searchindexloader").src = url;
|
||||||
|
}
|
||||||
|
}});
|
||||||
},
|
},
|
||||||
|
|
||||||
setIndex : function(index) {
|
setIndex : function(index) {
|
||||||
|
@ -268,19 +278,20 @@ var Search = {
|
||||||
if (this._pulse_status >= 0)
|
if (this._pulse_status >= 0)
|
||||||
return;
|
return;
|
||||||
function pulse() {
|
function pulse() {
|
||||||
|
var i;
|
||||||
Search._pulse_status = (Search._pulse_status + 1) % 4;
|
Search._pulse_status = (Search._pulse_status + 1) % 4;
|
||||||
var dotString = '';
|
var dotString = '';
|
||||||
for (var i = 0; i < Search._pulse_status; i++)
|
for (i = 0; i < Search._pulse_status; i++)
|
||||||
dotString += '.';
|
dotString += '.';
|
||||||
Search.dots.text(dotString);
|
Search.dots.text(dotString);
|
||||||
if (Search._pulse_status > -1)
|
if (Search._pulse_status > -1)
|
||||||
window.setTimeout(pulse, 500);
|
window.setTimeout(pulse, 500);
|
||||||
};
|
}
|
||||||
pulse();
|
pulse();
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* perform a search for something
|
* perform a search for something (or wait until index is loaded)
|
||||||
*/
|
*/
|
||||||
performSearch : function(query) {
|
performSearch : function(query) {
|
||||||
// create the required interface elements
|
// create the required interface elements
|
||||||
|
@ -300,41 +311,46 @@ var Search = {
|
||||||
this.deferQuery(query);
|
this.deferQuery(query);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* execute search (requires search index to be loaded)
|
||||||
|
*/
|
||||||
query : function(query) {
|
query : function(query) {
|
||||||
var stopwords = ["and","then","into","it","as","are","in","if","for","no","there","their","was","is","be","to","that","but","they","not","such","with","by","a","on","these","of","will","this","near","the","or","at"];
|
var i;
|
||||||
|
var stopwords = ["a","and","are","as","at","be","but","by","for","if","in","into","is","it","near","no","not","of","on","or","such","that","the","their","then","there","these","they","this","to","was","will","with"];
|
||||||
|
|
||||||
// Stem the searchterms and add them to the correct list
|
// stem the searchterms and add them to the correct list
|
||||||
var stemmer = new Stemmer();
|
var stemmer = new Stemmer();
|
||||||
var searchterms = [];
|
var searchterms = [];
|
||||||
var excluded = [];
|
var excluded = [];
|
||||||
var hlterms = [];
|
var hlterms = [];
|
||||||
var tmp = query.split(/\s+/);
|
var tmp = query.split(/\s+/);
|
||||||
var objectterms = [];
|
var objectterms = [];
|
||||||
for (var i = 0; i < tmp.length; i++) {
|
for (i = 0; i < tmp.length; i++) {
|
||||||
if (tmp[i] != "") {
|
if (tmp[i] !== "") {
|
||||||
objectterms.push(tmp[i].toLowerCase());
|
objectterms.push(tmp[i].toLowerCase());
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($u.indexOf(stopwords, tmp[i]) != -1 || tmp[i].match(/^\d+$/) ||
|
if ($u.indexOf(stopwords, tmp[i].toLowerCase()) != -1 || tmp[i].match(/^\d+$/) ||
|
||||||
tmp[i] == "") {
|
tmp[i] === "") {
|
||||||
// skip this "word"
|
// skip this "word"
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// stem the word
|
// stem the word
|
||||||
var word = stemmer.stemWord(tmp[i]).toLowerCase();
|
var word = stemmer.stemWord(tmp[i].toLowerCase());
|
||||||
|
var toAppend;
|
||||||
// select the correct list
|
// select the correct list
|
||||||
if (word[0] == '-') {
|
if (word[0] == '-') {
|
||||||
var toAppend = excluded;
|
toAppend = excluded;
|
||||||
word = word.substr(1);
|
word = word.substr(1);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
var toAppend = searchterms;
|
toAppend = searchterms;
|
||||||
hlterms.push(tmp[i].toLowerCase());
|
hlterms.push(tmp[i].toLowerCase());
|
||||||
}
|
}
|
||||||
// only add if not already in the list
|
// only add if not already in the list
|
||||||
if (!$.contains(toAppend, word))
|
if (!$u.contains(toAppend, word))
|
||||||
toAppend.push(word);
|
toAppend.push(word);
|
||||||
};
|
}
|
||||||
var highlightstring = '?highlight=' + $.urlencode(hlterms.join(" "));
|
var highlightstring = '?highlight=' + $.urlencode(hlterms.join(" "));
|
||||||
|
|
||||||
// console.debug('SEARCH: searching for:');
|
// console.debug('SEARCH: searching for:');
|
||||||
|
@ -342,89 +358,51 @@ var Search = {
|
||||||
// console.info('excluded: ', excluded);
|
// console.info('excluded: ', excluded);
|
||||||
|
|
||||||
// prepare search
|
// prepare search
|
||||||
var filenames = this._index.filenames;
|
|
||||||
var titles = this._index.titles;
|
|
||||||
var terms = this._index.terms;
|
var terms = this._index.terms;
|
||||||
var fileMap = {};
|
var titleterms = this._index.titleterms;
|
||||||
var files = null;
|
|
||||||
// different result priorities
|
// array of [filename, title, anchor, descr, score]
|
||||||
var importantResults = [];
|
var results = [];
|
||||||
var objectResults = [];
|
|
||||||
var regularResults = [];
|
|
||||||
var unimportantResults = [];
|
|
||||||
$('#search-progress').empty();
|
$('#search-progress').empty();
|
||||||
|
|
||||||
// lookup as object
|
// lookup as object
|
||||||
for (var i = 0; i < objectterms.length; i++) {
|
for (i = 0; i < objectterms.length; i++) {
|
||||||
var others = [].concat(objectterms.slice(0,i),
|
var others = [].concat(objectterms.slice(0, i),
|
||||||
objectterms.slice(i+1, objectterms.length))
|
objectterms.slice(i+1, objectterms.length));
|
||||||
var results = this.performObjectSearch(objectterms[i], others);
|
results = results.concat(this.performObjectSearch(objectterms[i], others));
|
||||||
// Assume first word is most likely to be the object,
|
|
||||||
// other words more likely to be in description.
|
|
||||||
// Therefore put matches for earlier words first.
|
|
||||||
// (Results are eventually used in reverse order).
|
|
||||||
objectResults = results[0].concat(objectResults);
|
|
||||||
importantResults = results[1].concat(importantResults);
|
|
||||||
unimportantResults = results[2].concat(unimportantResults);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// perform the search on the required terms
|
// lookup as search terms in fulltext
|
||||||
for (var i = 0; i < searchterms.length; i++) {
|
results = results.concat(this.performTermsSearch(searchterms, excluded, terms, Scorer.term))
|
||||||
var word = searchterms[i];
|
.concat(this.performTermsSearch(searchterms, excluded, titleterms, Scorer.title));
|
||||||
// no match but word was a required one
|
|
||||||
if ((files = terms[word]) == null)
|
// let the scorer override scores with a custom scoring function
|
||||||
break;
|
if (Scorer.score) {
|
||||||
if (files.length == undefined) {
|
for (i = 0; i < results.length; i++)
|
||||||
files = [files];
|
results[i][4] = Scorer.score(results[i]);
|
||||||
}
|
|
||||||
// create the mapping
|
|
||||||
for (var j = 0; j < files.length; j++) {
|
|
||||||
var file = files[j];
|
|
||||||
if (file in fileMap)
|
|
||||||
fileMap[file].push(word);
|
|
||||||
else
|
|
||||||
fileMap[file] = [word];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// now check if the files don't contain excluded terms
|
// now sort the results by score (in opposite order of appearance, since the
|
||||||
for (var file in fileMap) {
|
// display function below uses pop() to retrieve items) and then
|
||||||
var valid = true;
|
// alphabetically
|
||||||
|
results.sort(function(a, b) {
|
||||||
// check if all requirements are matched
|
var left = a[4];
|
||||||
if (fileMap[file].length != searchterms.length)
|
var right = b[4];
|
||||||
continue;
|
if (left > right) {
|
||||||
|
return 1;
|
||||||
// ensure that none of the excluded terms is in the
|
} else if (left < right) {
|
||||||
// search result.
|
return -1;
|
||||||
for (var i = 0; i < excluded.length; i++) {
|
} else {
|
||||||
if (terms[excluded[i]] == file ||
|
// same score: sort alphabetically
|
||||||
$.contains(terms[excluded[i]] || [], file)) {
|
left = a[1].toLowerCase();
|
||||||
valid = false;
|
right = b[1].toLowerCase();
|
||||||
break;
|
return (left > right) ? -1 : ((left < right) ? 1 : 0);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// if we have still a valid result we can add it
|
|
||||||
// to the result list
|
|
||||||
if (valid)
|
|
||||||
regularResults.push([filenames[file], titles[file], '', null]);
|
|
||||||
}
|
|
||||||
|
|
||||||
// delete unused variables in order to not waste
|
|
||||||
// memory until list is retrieved completely
|
|
||||||
delete filenames, titles, terms;
|
|
||||||
|
|
||||||
// now sort the regular results descending by title
|
|
||||||
regularResults.sort(function(a, b) {
|
|
||||||
var left = a[1].toLowerCase();
|
|
||||||
var right = b[1].toLowerCase();
|
|
||||||
return (left > right) ? -1 : ((left < right) ? 1 : 0);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// combine all results
|
// for debugging
|
||||||
var results = unimportantResults.concat(regularResults)
|
//Search.lastresults = results.slice(); // a copy
|
||||||
.concat(objectResults).concat(importantResults);
|
//console.info('search results:', Search.lastresults);
|
||||||
|
|
||||||
// print the results
|
// print the results
|
||||||
var resultCount = results.length;
|
var resultCount = results.length;
|
||||||
|
@ -433,7 +411,7 @@ var Search = {
|
||||||
if (results.length) {
|
if (results.length) {
|
||||||
var item = results.pop();
|
var item = results.pop();
|
||||||
var listItem = $('<li style="display:none"></li>');
|
var listItem = $('<li style="display:none"></li>');
|
||||||
if (DOCUMENTATION_OPTIONS.FILE_SUFFIX == '') {
|
if (DOCUMENTATION_OPTIONS.FILE_SUFFIX === '') {
|
||||||
// dirhtml builder
|
// dirhtml builder
|
||||||
var dirname = item[0] + '/';
|
var dirname = item[0] + '/';
|
||||||
if (dirname.match(/\/index\/$/)) {
|
if (dirname.match(/\/index\/$/)) {
|
||||||
|
@ -457,16 +435,18 @@ var Search = {
|
||||||
displayNextItem();
|
displayNextItem();
|
||||||
});
|
});
|
||||||
} else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) {
|
} else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) {
|
||||||
$.get(DOCUMENTATION_OPTIONS.URL_ROOT + '_sources/' +
|
$.ajax({url: DOCUMENTATION_OPTIONS.URL_ROOT + '_sources/' + item[0] + '.txt',
|
||||||
item[0] + '.txt', function(data) {
|
dataType: "text",
|
||||||
if (data != '') {
|
complete: function(jqxhr, textstatus) {
|
||||||
listItem.append($.makeSearchSummary(data, searchterms, hlterms));
|
var data = jqxhr.responseText;
|
||||||
Search.output.append(listItem);
|
if (data !== '' && data !== undefined) {
|
||||||
}
|
listItem.append(Search.makeSearchSummary(data, searchterms, hlterms));
|
||||||
listItem.slideDown(5, function() {
|
}
|
||||||
displayNextItem();
|
Search.output.append(listItem);
|
||||||
});
|
listItem.slideDown(5, function() {
|
||||||
}, "text");
|
displayNextItem();
|
||||||
|
});
|
||||||
|
}});
|
||||||
} else {
|
} else {
|
||||||
// no source available, just display title
|
// no source available, just display title
|
||||||
Search.output.append(listItem);
|
Search.output.append(listItem);
|
||||||
|
@ -489,20 +469,32 @@ var Search = {
|
||||||
displayNextItem();
|
displayNextItem();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* search for object names
|
||||||
|
*/
|
||||||
performObjectSearch : function(object, otherterms) {
|
performObjectSearch : function(object, otherterms) {
|
||||||
var filenames = this._index.filenames;
|
var filenames = this._index.filenames;
|
||||||
var objects = this._index.objects;
|
var objects = this._index.objects;
|
||||||
var objnames = this._index.objnames;
|
var objnames = this._index.objnames;
|
||||||
var titles = this._index.titles;
|
var titles = this._index.titles;
|
||||||
|
|
||||||
var importantResults = [];
|
var i;
|
||||||
var objectResults = [];
|
var results = [];
|
||||||
var unimportantResults = [];
|
|
||||||
|
|
||||||
for (var prefix in objects) {
|
for (var prefix in objects) {
|
||||||
for (var name in objects[prefix]) {
|
for (var name in objects[prefix]) {
|
||||||
var fullname = (prefix ? prefix + '.' : '') + name;
|
var fullname = (prefix ? prefix + '.' : '') + name;
|
||||||
if (fullname.toLowerCase().indexOf(object) > -1) {
|
if (fullname.toLowerCase().indexOf(object) > -1) {
|
||||||
|
var score = 0;
|
||||||
|
var parts = fullname.split('.');
|
||||||
|
// check for different match types: exact matches of full name or
|
||||||
|
// "last name" (i.e. last dotted part)
|
||||||
|
if (fullname == object || parts[parts.length - 1] == object) {
|
||||||
|
score += Scorer.objNameMatch;
|
||||||
|
// matches in last name
|
||||||
|
} else if (parts[parts.length - 1].indexOf(object) > -1) {
|
||||||
|
score += Scorer.objPartialMatch;
|
||||||
|
}
|
||||||
var match = objects[prefix][name];
|
var match = objects[prefix][name];
|
||||||
var objname = objnames[match[1]][2];
|
var objname = objnames[match[1]][2];
|
||||||
var title = titles[match[0]];
|
var title = titles[match[0]];
|
||||||
|
@ -512,7 +504,7 @@ var Search = {
|
||||||
var haystack = (prefix + ' ' + name + ' ' +
|
var haystack = (prefix + ' ' + name + ' ' +
|
||||||
objname + ' ' + title).toLowerCase();
|
objname + ' ' + title).toLowerCase();
|
||||||
var allfound = true;
|
var allfound = true;
|
||||||
for (var i = 0; i < otherterms.length; i++) {
|
for (i = 0; i < otherterms.length; i++) {
|
||||||
if (haystack.indexOf(otherterms[i]) == -1) {
|
if (haystack.indexOf(otherterms[i]) == -1) {
|
||||||
allfound = false;
|
allfound = false;
|
||||||
break;
|
break;
|
||||||
|
@ -523,37 +515,107 @@ var Search = {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var descr = objname + _(', in ') + title;
|
var descr = objname + _(', in ') + title;
|
||||||
anchor = match[3];
|
|
||||||
if (anchor == '')
|
var anchor = match[3];
|
||||||
|
if (anchor === '')
|
||||||
anchor = fullname;
|
anchor = fullname;
|
||||||
else if (anchor == '-')
|
else if (anchor == '-')
|
||||||
anchor = objnames[match[1]][1] + '-' + fullname;
|
anchor = objnames[match[1]][1] + '-' + fullname;
|
||||||
result = [filenames[match[0]], fullname, '#'+anchor, descr];
|
// add custom score for some objects according to scorer
|
||||||
switch (match[2]) {
|
if (Scorer.objPrio.hasOwnProperty(match[2])) {
|
||||||
case 1: objectResults.push(result); break;
|
score += Scorer.objPrio[match[2]];
|
||||||
case 0: importantResults.push(result); break;
|
} else {
|
||||||
case 2: unimportantResults.push(result); break;
|
score += Scorer.objPrioDefault;
|
||||||
}
|
}
|
||||||
|
results.push([filenames[match[0]], fullname, '#'+anchor, descr, score]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// sort results descending
|
return results;
|
||||||
objectResults.sort(function(a, b) {
|
},
|
||||||
return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
|
|
||||||
});
|
|
||||||
|
|
||||||
importantResults.sort(function(a, b) {
|
/**
|
||||||
return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
|
* search for full-text terms in the index
|
||||||
});
|
*/
|
||||||
|
performTermsSearch : function(searchterms, excluded, terms, score) {
|
||||||
|
var filenames = this._index.filenames;
|
||||||
|
var titles = this._index.titles;
|
||||||
|
|
||||||
unimportantResults.sort(function(a, b) {
|
var i, j, file, files;
|
||||||
return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
|
var fileMap = {};
|
||||||
});
|
var results = [];
|
||||||
|
|
||||||
return [importantResults, objectResults, unimportantResults]
|
// perform the search on the required terms
|
||||||
|
for (i = 0; i < searchterms.length; i++) {
|
||||||
|
var word = searchterms[i];
|
||||||
|
// no match but word was a required one
|
||||||
|
if ((files = terms[word]) === undefined)
|
||||||
|
break;
|
||||||
|
if (files.length === undefined) {
|
||||||
|
files = [files];
|
||||||
|
}
|
||||||
|
// create the mapping
|
||||||
|
for (j = 0; j < files.length; j++) {
|
||||||
|
file = files[j];
|
||||||
|
if (file in fileMap)
|
||||||
|
fileMap[file].push(word);
|
||||||
|
else
|
||||||
|
fileMap[file] = [word];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// now check if the files don't contain excluded terms
|
||||||
|
for (file in fileMap) {
|
||||||
|
var valid = true;
|
||||||
|
|
||||||
|
// check if all requirements are matched
|
||||||
|
if (fileMap[file].length != searchterms.length)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
// ensure that none of the excluded terms is in the search result
|
||||||
|
for (i = 0; i < excluded.length; i++) {
|
||||||
|
if (terms[excluded[i]] == file ||
|
||||||
|
$u.contains(terms[excluded[i]] || [], file)) {
|
||||||
|
valid = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// if we have still a valid result we can add it to the result list
|
||||||
|
if (valid) {
|
||||||
|
results.push([filenames[file], titles[file], '', null, score]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return results;
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* helper function to return a node containing the
|
||||||
|
* search summary for a given text. keywords is a list
|
||||||
|
* of stemmed words, hlwords is the list of normal, unstemmed
|
||||||
|
* words. the first one is used to find the occurance, the
|
||||||
|
* latter for highlighting it.
|
||||||
|
*/
|
||||||
|
makeSearchSummary : function(text, keywords, hlwords) {
|
||||||
|
var textLower = text.toLowerCase();
|
||||||
|
var start = 0;
|
||||||
|
$.each(keywords, function() {
|
||||||
|
var i = textLower.indexOf(this.toLowerCase());
|
||||||
|
if (i > -1)
|
||||||
|
start = i;
|
||||||
|
});
|
||||||
|
start = Math.max(start - 120, 0);
|
||||||
|
var excerpt = ((start > 0) ? '...' : '') +
|
||||||
|
$.trim(text.substr(start, 240)) +
|
||||||
|
((start + 240 - text.length) ? '...' : '');
|
||||||
|
var rv = $('<div class="context"></div>').text(excerpt);
|
||||||
|
$.each(hlwords, function() {
|
||||||
|
rv = rv.highlightText(this, 'highlighted');
|
||||||
|
});
|
||||||
|
return rv;
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
Search.init();
|
Search.init();
|
||||||
|
|
|
@ -16,12 +16,20 @@
|
||||||
* Once the browser is closed the cookie is deleted and the position
|
* Once the browser is closed the cookie is deleted and the position
|
||||||
* reset to the default (expanded).
|
* reset to the default (expanded).
|
||||||
*
|
*
|
||||||
* :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
|
* :copyright: Copyright 2007-2015 by the Sphinx team, see AUTHORS.
|
||||||
* :license: BSD, see LICENSE for details.
|
* :license: BSD, see LICENSE for details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
$(function() {
|
$(function() {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// global elements used by the functions.
|
// global elements used by the functions.
|
||||||
// the 'sidebarbutton' element is defined as global after its
|
// the 'sidebarbutton' element is defined as global after its
|
||||||
// creation, in the add_sidebar_button function
|
// creation, in the add_sidebar_button function
|
||||||
|
@ -134,7 +142,7 @@ $(function() {
|
||||||
var items = document.cookie.split(';');
|
var items = document.cookie.split(';');
|
||||||
for(var k=0; k<items.length; k++) {
|
for(var k=0; k<items.length; k++) {
|
||||||
var key_val = items[k].split('=');
|
var key_val = items[k].split('=');
|
||||||
var key = key_val[0];
|
var key = key_val[0].replace(/ /, ""); // strip leading spaces
|
||||||
if (key == 'sidebar') {
|
if (key == 'sidebar') {
|
||||||
var value = key_val[1];
|
var value = key_val[1];
|
||||||
if ((value == 'collapsed') && (!sidebar_is_collapsed()))
|
if ((value == 'collapsed') && (!sidebar_is_collapsed()))
|
||||||
|
@ -148,4 +156,4 @@ $(function() {
|
||||||
add_sidebar_button();
|
add_sidebar_button();
|
||||||
var sidebarbutton = $('#sidebarbutton');
|
var sidebarbutton = $('#sidebarbutton');
|
||||||
set_position_from_cookie();
|
set_position_from_cookie();
|
||||||
});
|
});
|
999
_static/underscore-1.3.1.js
Normal file
|
@ -0,0 +1,999 @@
|
||||||
|
// Underscore.js 1.3.1
|
||||||
|
// (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc.
|
||||||
|
// Underscore is freely distributable under the MIT license.
|
||||||
|
// Portions of Underscore are inspired or borrowed from Prototype,
|
||||||
|
// Oliver Steele's Functional, and John Resig's Micro-Templating.
|
||||||
|
// For all details and documentation:
|
||||||
|
// http://documentcloud.github.com/underscore
|
||||||
|
|
||||||
|
(function() {
|
||||||
|
|
||||||
|
// Baseline setup
|
||||||
|
// --------------
|
||||||
|
|
||||||
|
// Establish the root object, `window` in the browser, or `global` on the server.
|
||||||
|
var root = this;
|
||||||
|
|
||||||
|
// Save the previous value of the `_` variable.
|
||||||
|
var previousUnderscore = root._;
|
||||||
|
|
||||||
|
// Establish the object that gets returned to break out of a loop iteration.
|
||||||
|
var breaker = {};
|
||||||
|
|
||||||
|
// Save bytes in the minified (but not gzipped) version:
|
||||||
|
var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype;
|
||||||
|
|
||||||
|
// Create quick reference variables for speed access to core prototypes.
|
||||||
|
var slice = ArrayProto.slice,
|
||||||
|
unshift = ArrayProto.unshift,
|
||||||
|
toString = ObjProto.toString,
|
||||||
|
hasOwnProperty = ObjProto.hasOwnProperty;
|
||||||
|
|
||||||
|
// All **ECMAScript 5** native function implementations that we hope to use
|
||||||
|
// are declared here.
|
||||||
|
var
|
||||||
|
nativeForEach = ArrayProto.forEach,
|
||||||
|
nativeMap = ArrayProto.map,
|
||||||
|
nativeReduce = ArrayProto.reduce,
|
||||||
|
nativeReduceRight = ArrayProto.reduceRight,
|
||||||
|
nativeFilter = ArrayProto.filter,
|
||||||
|
nativeEvery = ArrayProto.every,
|
||||||
|
nativeSome = ArrayProto.some,
|
||||||
|
nativeIndexOf = ArrayProto.indexOf,
|
||||||
|
nativeLastIndexOf = ArrayProto.lastIndexOf,
|
||||||
|
nativeIsArray = Array.isArray,
|
||||||
|
nativeKeys = Object.keys,
|
||||||
|
nativeBind = FuncProto.bind;
|
||||||
|
|
||||||
|
// Create a safe reference to the Underscore object for use below.
|
||||||
|
var _ = function(obj) { return new wrapper(obj); };
|
||||||
|
|
||||||
|
// Export the Underscore object for **Node.js**, with
|
||||||
|
// backwards-compatibility for the old `require()` API. If we're in
|
||||||
|
// the browser, add `_` as a global object via a string identifier,
|
||||||
|
// for Closure Compiler "advanced" mode.
|
||||||
|
if (typeof exports !== 'undefined') {
|
||||||
|
if (typeof module !== 'undefined' && module.exports) {
|
||||||
|
exports = module.exports = _;
|
||||||
|
}
|
||||||
|
exports._ = _;
|
||||||
|
} else {
|
||||||
|
root['_'] = _;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Current version.
|
||||||
|
_.VERSION = '1.3.1';
|
||||||
|
|
||||||
|
// Collection Functions
|
||||||
|
// --------------------
|
||||||
|
|
||||||
|
// The cornerstone, an `each` implementation, aka `forEach`.
|
||||||
|
// Handles objects with the built-in `forEach`, arrays, and raw objects.
|
||||||
|
// Delegates to **ECMAScript 5**'s native `forEach` if available.
|
||||||
|
var each = _.each = _.forEach = function(obj, iterator, context) {
|
||||||
|
if (obj == null) return;
|
||||||
|
if (nativeForEach && obj.forEach === nativeForEach) {
|
||||||
|
obj.forEach(iterator, context);
|
||||||
|
} else if (obj.length === +obj.length) {
|
||||||
|
for (var i = 0, l = obj.length; i < l; i++) {
|
||||||
|
if (i in obj && iterator.call(context, obj[i], i, obj) === breaker) return;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for (var key in obj) {
|
||||||
|
if (_.has(obj, key)) {
|
||||||
|
if (iterator.call(context, obj[key], key, obj) === breaker) return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// Return the results of applying the iterator to each element.
|
||||||
|
// Delegates to **ECMAScript 5**'s native `map` if available.
|
||||||
|
_.map = _.collect = function(obj, iterator, context) {
|
||||||
|
var results = [];
|
||||||
|
if (obj == null) return results;
|
||||||
|
if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);
|
||||||
|
each(obj, function(value, index, list) {
|
||||||
|
results[results.length] = iterator.call(context, value, index, list);
|
||||||
|
});
|
||||||
|
if (obj.length === +obj.length) results.length = obj.length;
|
||||||
|
return results;
|
||||||
|
};
|
||||||
|
|
||||||
|
// **Reduce** builds up a single result from a list of values, aka `inject`,
|
||||||
|
// or `foldl`. Delegates to **ECMAScript 5**'s native `reduce` if available.
|
||||||
|
_.reduce = _.foldl = _.inject = function(obj, iterator, memo, context) {
|
||||||
|
var initial = arguments.length > 2;
|
||||||
|
if (obj == null) obj = [];
|
||||||
|
if (nativeReduce && obj.reduce === nativeReduce) {
|
||||||
|
if (context) iterator = _.bind(iterator, context);
|
||||||
|
return initial ? obj.reduce(iterator, memo) : obj.reduce(iterator);
|
||||||
|
}
|
||||||
|
each(obj, function(value, index, list) {
|
||||||
|
if (!initial) {
|
||||||
|
memo = value;
|
||||||
|
initial = true;
|
||||||
|
} else {
|
||||||
|
memo = iterator.call(context, memo, value, index, list);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (!initial) throw new TypeError('Reduce of empty array with no initial value');
|
||||||
|
return memo;
|
||||||
|
};
|
||||||
|
|
||||||
|
// The right-associative version of reduce, also known as `foldr`.
|
||||||
|
// Delegates to **ECMAScript 5**'s native `reduceRight` if available.
|
||||||
|
_.reduceRight = _.foldr = function(obj, iterator, memo, context) {
|
||||||
|
var initial = arguments.length > 2;
|
||||||
|
if (obj == null) obj = [];
|
||||||
|
if (nativeReduceRight && obj.reduceRight === nativeReduceRight) {
|
||||||
|
if (context) iterator = _.bind(iterator, context);
|
||||||
|
return initial ? obj.reduceRight(iterator, memo) : obj.reduceRight(iterator);
|
||||||
|
}
|
||||||
|
var reversed = _.toArray(obj).reverse();
|
||||||
|
if (context && !initial) iterator = _.bind(iterator, context);
|
||||||
|
return initial ? _.reduce(reversed, iterator, memo, context) : _.reduce(reversed, iterator);
|
||||||
|
};
|
||||||
|
|
||||||
|
// Return the first value which passes a truth test. Aliased as `detect`.
|
||||||
|
_.find = _.detect = function(obj, iterator, context) {
|
||||||
|
var result;
|
||||||
|
any(obj, function(value, index, list) {
|
||||||
|
if (iterator.call(context, value, index, list)) {
|
||||||
|
result = value;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return result;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Return all the elements that pass a truth test.
|
||||||
|
// Delegates to **ECMAScript 5**'s native `filter` if available.
|
||||||
|
// Aliased as `select`.
|
||||||
|
_.filter = _.select = function(obj, iterator, context) {
|
||||||
|
var results = [];
|
||||||
|
if (obj == null) return results;
|
||||||
|
if (nativeFilter && obj.filter === nativeFilter) return obj.filter(iterator, context);
|
||||||
|
each(obj, function(value, index, list) {
|
||||||
|
if (iterator.call(context, value, index, list)) results[results.length] = value;
|
||||||
|
});
|
||||||
|
return results;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Return all the elements for which a truth test fails.
|
||||||
|
_.reject = function(obj, iterator, context) {
|
||||||
|
var results = [];
|
||||||
|
if (obj == null) return results;
|
||||||
|
each(obj, function(value, index, list) {
|
||||||
|
if (!iterator.call(context, value, index, list)) results[results.length] = value;
|
||||||
|
});
|
||||||
|
return results;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Determine whether all of the elements match a truth test.
|
||||||
|
// Delegates to **ECMAScript 5**'s native `every` if available.
|
||||||
|
// Aliased as `all`.
|
||||||
|
_.every = _.all = function(obj, iterator, context) {
|
||||||
|
var result = true;
|
||||||
|
if (obj == null) return result;
|
||||||
|
if (nativeEvery && obj.every === nativeEvery) return obj.every(iterator, context);
|
||||||
|
each(obj, function(value, index, list) {
|
||||||
|
if (!(result = result && iterator.call(context, value, index, list))) return breaker;
|
||||||
|
});
|
||||||
|
return result;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Determine if at least one element in the object matches a truth test.
|
||||||
|
// Delegates to **ECMAScript 5**'s native `some` if available.
|
||||||
|
// Aliased as `any`.
|
||||||
|
var any = _.some = _.any = function(obj, iterator, context) {
|
||||||
|
iterator || (iterator = _.identity);
|
||||||
|
var result = false;
|
||||||
|
if (obj == null) return result;
|
||||||
|
if (nativeSome && obj.some === nativeSome) return obj.some(iterator, context);
|
||||||
|
each(obj, function(value, index, list) {
|
||||||
|
if (result || (result = iterator.call(context, value, index, list))) return breaker;
|
||||||
|
});
|
||||||
|
return !!result;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Determine if a given value is included in the array or object using `===`.
|
||||||
|
// Aliased as `contains`.
|
||||||
|
_.include = _.contains = function(obj, target) {
|
||||||
|
var found = false;
|
||||||
|
if (obj == null) return found;
|
||||||
|
if (nativeIndexOf && obj.indexOf === nativeIndexOf) return obj.indexOf(target) != -1;
|
||||||
|
found = any(obj, function(value) {
|
||||||
|
return value === target;
|
||||||
|
});
|
||||||
|
return found;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Invoke a method (with arguments) on every item in a collection.
|
||||||
|
_.invoke = function(obj, method) {
|
||||||
|
var args = slice.call(arguments, 2);
|
||||||
|
return _.map(obj, function(value) {
|
||||||
|
return (_.isFunction(method) ? method || value : value[method]).apply(value, args);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
// Convenience version of a common use case of `map`: fetching a property.
|
||||||
|
_.pluck = function(obj, key) {
|
||||||
|
return _.map(obj, function(value){ return value[key]; });
|
||||||
|
};
|
||||||
|
|
||||||
|
// Return the maximum element or (element-based computation).
|
||||||
|
_.max = function(obj, iterator, context) {
|
||||||
|
if (!iterator && _.isArray(obj)) return Math.max.apply(Math, obj);
|
||||||
|
if (!iterator && _.isEmpty(obj)) return -Infinity;
|
||||||
|
var result = {computed : -Infinity};
|
||||||
|
each(obj, function(value, index, list) {
|
||||||
|
var computed = iterator ? iterator.call(context, value, index, list) : value;
|
||||||
|
computed >= result.computed && (result = {value : value, computed : computed});
|
||||||
|
});
|
||||||
|
return result.value;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Return the minimum element (or element-based computation).
|
||||||
|
_.min = function(obj, iterator, context) {
|
||||||
|
if (!iterator && _.isArray(obj)) return Math.min.apply(Math, obj);
|
||||||
|
if (!iterator && _.isEmpty(obj)) return Infinity;
|
||||||
|
var result = {computed : Infinity};
|
||||||
|
each(obj, function(value, index, list) {
|
||||||
|
var computed = iterator ? iterator.call(context, value, index, list) : value;
|
||||||
|
computed < result.computed && (result = {value : value, computed : computed});
|
||||||
|
});
|
||||||
|
return result.value;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Shuffle an array.
|
||||||
|
_.shuffle = function(obj) {
|
||||||
|
var shuffled = [], rand;
|
||||||
|
each(obj, function(value, index, list) {
|
||||||
|
if (index == 0) {
|
||||||
|
shuffled[0] = value;
|
||||||
|
} else {
|
||||||
|
rand = Math.floor(Math.random() * (index + 1));
|
||||||
|
shuffled[index] = shuffled[rand];
|
||||||
|
shuffled[rand] = value;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return shuffled;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Sort the object's values by a criterion produced by an iterator.
|
||||||
|
_.sortBy = function(obj, iterator, context) {
|
||||||
|
return _.pluck(_.map(obj, function(value, index, list) {
|
||||||
|
return {
|
||||||
|
value : value,
|
||||||
|
criteria : iterator.call(context, value, index, list)
|
||||||
|
};
|
||||||
|
}).sort(function(left, right) {
|
||||||
|
var a = left.criteria, b = right.criteria;
|
||||||
|
return a < b ? -1 : a > b ? 1 : 0;
|
||||||
|
}), 'value');
|
||||||
|
};
|
||||||
|
|
||||||
|
// Groups the object's values by a criterion. Pass either a string attribute
|
||||||
|
// to group by, or a function that returns the criterion.
|
||||||
|
_.groupBy = function(obj, val) {
|
||||||
|
var result = {};
|
||||||
|
var iterator = _.isFunction(val) ? val : function(obj) { return obj[val]; };
|
||||||
|
each(obj, function(value, index) {
|
||||||
|
var key = iterator(value, index);
|
||||||
|
(result[key] || (result[key] = [])).push(value);
|
||||||
|
});
|
||||||
|
return result;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Use a comparator function to figure out at what index an object should
|
||||||
|
// be inserted so as to maintain order. Uses binary search.
|
||||||
|
_.sortedIndex = function(array, obj, iterator) {
|
||||||
|
iterator || (iterator = _.identity);
|
||||||
|
var low = 0, high = array.length;
|
||||||
|
while (low < high) {
|
||||||
|
var mid = (low + high) >> 1;
|
||||||
|
iterator(array[mid]) < iterator(obj) ? low = mid + 1 : high = mid;
|
||||||
|
}
|
||||||
|
return low;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Safely convert anything iterable into a real, live array.
|
||||||
|
_.toArray = function(iterable) {
|
||||||
|
if (!iterable) return [];
|
||||||
|
if (iterable.toArray) return iterable.toArray();
|
||||||
|
if (_.isArray(iterable)) return slice.call(iterable);
|
||||||
|
if (_.isArguments(iterable)) return slice.call(iterable);
|
||||||
|
return _.values(iterable);
|
||||||
|
};
|
||||||
|
|
||||||
|
// Return the number of elements in an object.
|
||||||
|
_.size = function(obj) {
|
||||||
|
return _.toArray(obj).length;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Array Functions
|
||||||
|
// ---------------
|
||||||
|
|
||||||
|
// Get the first element of an array. Passing **n** will return the first N
|
||||||
|
// values in the array. Aliased as `head`. The **guard** check allows it to work
|
||||||
|
// with `_.map`.
|
||||||
|
_.first = _.head = function(array, n, guard) {
|
||||||
|
return (n != null) && !guard ? slice.call(array, 0, n) : array[0];
|
||||||
|
};
|
||||||
|
|
||||||
|
// Returns everything but the last entry of the array. Especcialy useful on
|
||||||
|
// the arguments object. Passing **n** will return all the values in
|
||||||
|
// the array, excluding the last N. The **guard** check allows it to work with
|
||||||
|
// `_.map`.
|
||||||
|
_.initial = function(array, n, guard) {
|
||||||
|
return slice.call(array, 0, array.length - ((n == null) || guard ? 1 : n));
|
||||||
|
};
|
||||||
|
|
||||||
|
// Get the last element of an array. Passing **n** will return the last N
|
||||||
|
// values in the array. The **guard** check allows it to work with `_.map`.
|
||||||
|
_.last = function(array, n, guard) {
|
||||||
|
if ((n != null) && !guard) {
|
||||||
|
return slice.call(array, Math.max(array.length - n, 0));
|
||||||
|
} else {
|
||||||
|
return array[array.length - 1];
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// Returns everything but the first entry of the array. Aliased as `tail`.
|
||||||
|
// Especially useful on the arguments object. Passing an **index** will return
|
||||||
|
// the rest of the values in the array from that index onward. The **guard**
|
||||||
|
// check allows it to work with `_.map`.
|
||||||
|
_.rest = _.tail = function(array, index, guard) {
|
||||||
|
return slice.call(array, (index == null) || guard ? 1 : index);
|
||||||
|
};
|
||||||
|
|
||||||
|
// Trim out all falsy values from an array.
|
||||||
|
_.compact = function(array) {
|
||||||
|
return _.filter(array, function(value){ return !!value; });
|
||||||
|
};
|
||||||
|
|
||||||
|
// Return a completely flattened version of an array.
|
||||||
|
_.flatten = function(array, shallow) {
|
||||||
|
return _.reduce(array, function(memo, value) {
|
||||||
|
if (_.isArray(value)) return memo.concat(shallow ? value : _.flatten(value));
|
||||||
|
memo[memo.length] = value;
|
||||||
|
return memo;
|
||||||
|
}, []);
|
||||||
|
};
|
||||||
|
|
||||||
|
// Return a version of the array that does not contain the specified value(s).
|
||||||
|
_.without = function(array) {
|
||||||
|
return _.difference(array, slice.call(arguments, 1));
|
||||||
|
};
|
||||||
|
|
||||||
|
// Produce a duplicate-free version of the array. If the array has already
|
||||||
|
// been sorted, you have the option of using a faster algorithm.
|
||||||
|
// Aliased as `unique`.
|
||||||
|
_.uniq = _.unique = function(array, isSorted, iterator) {
|
||||||
|
var initial = iterator ? _.map(array, iterator) : array;
|
||||||
|
var result = [];
|
||||||
|
_.reduce(initial, function(memo, el, i) {
|
||||||
|
if (0 == i || (isSorted === true ? _.last(memo) != el : !_.include(memo, el))) {
|
||||||
|
memo[memo.length] = el;
|
||||||
|
result[result.length] = array[i];
|
||||||
|
}
|
||||||
|
return memo;
|
||||||
|
}, []);
|
||||||
|
return result;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Produce an array that contains the union: each distinct element from all of
|
||||||
|
// the passed-in arrays.
|
||||||
|
_.union = function() {
|
||||||
|
return _.uniq(_.flatten(arguments, true));
|
||||||
|
};
|
||||||
|
|
||||||
|
// Produce an array that contains every item shared between all the
|
||||||
|
// passed-in arrays. (Aliased as "intersect" for back-compat.)
|
||||||
|
_.intersection = _.intersect = function(array) {
|
||||||
|
var rest = slice.call(arguments, 1);
|
||||||
|
return _.filter(_.uniq(array), function(item) {
|
||||||
|
return _.every(rest, function(other) {
|
||||||
|
return _.indexOf(other, item) >= 0;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
// Take the difference between one array and a number of other arrays.
|
||||||
|
// Only the elements present in just the first array will remain.
|
||||||
|
_.difference = function(array) {
|
||||||
|
var rest = _.flatten(slice.call(arguments, 1));
|
||||||
|
return _.filter(array, function(value){ return !_.include(rest, value); });
|
||||||
|
};
|
||||||
|
|
||||||
|
// Zip together multiple lists into a single array -- elements that share
|
||||||
|
// an index go together.
|
||||||
|
_.zip = function() {
|
||||||
|
var args = slice.call(arguments);
|
||||||
|
var length = _.max(_.pluck(args, 'length'));
|
||||||
|
var results = new Array(length);
|
||||||
|
for (var i = 0; i < length; i++) results[i] = _.pluck(args, "" + i);
|
||||||
|
return results;
|
||||||
|
};
|
||||||
|
|
||||||
|
// If the browser doesn't supply us with indexOf (I'm looking at you, **MSIE**),
|
||||||
|
// we need this function. Return the position of the first occurrence of an
|
||||||
|
// item in an array, or -1 if the item is not included in the array.
|
||||||
|
// Delegates to **ECMAScript 5**'s native `indexOf` if available.
|
||||||
|
// If the array is large and already in sort order, pass `true`
|
||||||
|
// for **isSorted** to use binary search.
|
||||||
|
_.indexOf = function(array, item, isSorted) {
|
||||||
|
if (array == null) return -1;
|
||||||
|
var i, l;
|
||||||
|
if (isSorted) {
|
||||||
|
i = _.sortedIndex(array, item);
|
||||||
|
return array[i] === item ? i : -1;
|
||||||
|
}
|
||||||
|
if (nativeIndexOf && array.indexOf === nativeIndexOf) return array.indexOf(item);
|
||||||
|
for (i = 0, l = array.length; i < l; i++) if (i in array && array[i] === item) return i;
|
||||||
|
return -1;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Delegates to **ECMAScript 5**'s native `lastIndexOf` if available.
|
||||||
|
_.lastIndexOf = function(array, item) {
|
||||||
|
if (array == null) return -1;
|
||||||
|
if (nativeLastIndexOf && array.lastIndexOf === nativeLastIndexOf) return array.lastIndexOf(item);
|
||||||
|
var i = array.length;
|
||||||
|
while (i--) if (i in array && array[i] === item) return i;
|
||||||
|
return -1;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Generate an integer Array containing an arithmetic progression. A port of
|
||||||
|
// the native Python `range()` function. See
|
||||||
|
// [the Python documentation](http://docs.python.org/library/functions.html#range).
|
||||||
|
_.range = function(start, stop, step) {
|
||||||
|
if (arguments.length <= 1) {
|
||||||
|
stop = start || 0;
|
||||||
|
start = 0;
|
||||||
|
}
|
||||||
|
step = arguments[2] || 1;
|
||||||
|
|
||||||
|
var len = Math.max(Math.ceil((stop - start) / step), 0);
|
||||||
|
var idx = 0;
|
||||||
|
var range = new Array(len);
|
||||||
|
|
||||||
|
while(idx < len) {
|
||||||
|
range[idx++] = start;
|
||||||
|
start += step;
|
||||||
|
}
|
||||||
|
|
||||||
|
return range;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Function (ahem) Functions
|
||||||
|
// ------------------
|
||||||
|
|
||||||
|
// Reusable constructor function for prototype setting.
|
||||||
|
var ctor = function(){};
|
||||||
|
|
||||||
|
// Create a function bound to a given object (assigning `this`, and arguments,
|
||||||
|
// optionally). Binding with arguments is also known as `curry`.
|
||||||
|
// Delegates to **ECMAScript 5**'s native `Function.bind` if available.
|
||||||
|
// We check for `func.bind` first, to fail fast when `func` is undefined.
|
||||||
|
_.bind = function bind(func, context) {
|
||||||
|
var bound, args;
|
||||||
|
if (func.bind === nativeBind && nativeBind) return nativeBind.apply(func, slice.call(arguments, 1));
|
||||||
|
if (!_.isFunction(func)) throw new TypeError;
|
||||||
|
args = slice.call(arguments, 2);
|
||||||
|
return bound = function() {
|
||||||
|
if (!(this instanceof bound)) return func.apply(context, args.concat(slice.call(arguments)));
|
||||||
|
ctor.prototype = func.prototype;
|
||||||
|
var self = new ctor;
|
||||||
|
var result = func.apply(self, args.concat(slice.call(arguments)));
|
||||||
|
if (Object(result) === result) return result;
|
||||||
|
return self;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
// Bind all of an object's methods to that object. Useful for ensuring that
|
||||||
|
// all callbacks defined on an object belong to it.
|
||||||
|
_.bindAll = function(obj) {
|
||||||
|
var funcs = slice.call(arguments, 1);
|
||||||
|
if (funcs.length == 0) funcs = _.functions(obj);
|
||||||
|
each(funcs, function(f) { obj[f] = _.bind(obj[f], obj); });
|
||||||
|
return obj;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Memoize an expensive function by storing its results.
|
||||||
|
_.memoize = function(func, hasher) {
|
||||||
|
var memo = {};
|
||||||
|
hasher || (hasher = _.identity);
|
||||||
|
return function() {
|
||||||
|
var key = hasher.apply(this, arguments);
|
||||||
|
return _.has(memo, key) ? memo[key] : (memo[key] = func.apply(this, arguments));
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
// Delays a function for the given number of milliseconds, and then calls
|
||||||
|
// it with the arguments supplied.
|
||||||
|
_.delay = function(func, wait) {
|
||||||
|
var args = slice.call(arguments, 2);
|
||||||
|
return setTimeout(function(){ return func.apply(func, args); }, wait);
|
||||||
|
};
|
||||||
|
|
||||||
|
// Defers a function, scheduling it to run after the current call stack has
|
||||||
|
// cleared.
|
||||||
|
_.defer = function(func) {
|
||||||
|
return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1)));
|
||||||
|
};
|
||||||
|
|
||||||
|
// Returns a function, that, when invoked, will only be triggered at most once
|
||||||
|
// during a given window of time.
|
||||||
|
_.throttle = function(func, wait) {
|
||||||
|
var context, args, timeout, throttling, more;
|
||||||
|
var whenDone = _.debounce(function(){ more = throttling = false; }, wait);
|
||||||
|
return function() {
|
||||||
|
context = this; args = arguments;
|
||||||
|
var later = function() {
|
||||||
|
timeout = null;
|
||||||
|
if (more) func.apply(context, args);
|
||||||
|
whenDone();
|
||||||
|
};
|
||||||
|
if (!timeout) timeout = setTimeout(later, wait);
|
||||||
|
if (throttling) {
|
||||||
|
more = true;
|
||||||
|
} else {
|
||||||
|
func.apply(context, args);
|
||||||
|
}
|
||||||
|
whenDone();
|
||||||
|
throttling = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
// Returns a function, that, as long as it continues to be invoked, will not
|
||||||
|
// be triggered. The function will be called after it stops being called for
|
||||||
|
// N milliseconds.
|
||||||
|
_.debounce = function(func, wait) {
|
||||||
|
var timeout;
|
||||||
|
return function() {
|
||||||
|
var context = this, args = arguments;
|
||||||
|
var later = function() {
|
||||||
|
timeout = null;
|
||||||
|
func.apply(context, args);
|
||||||
|
};
|
||||||
|
clearTimeout(timeout);
|
||||||
|
timeout = setTimeout(later, wait);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
// Returns a function that will be executed at most one time, no matter how
|
||||||
|
// often you call it. Useful for lazy initialization.
|
||||||
|
_.once = function(func) {
|
||||||
|
var ran = false, memo;
|
||||||
|
return function() {
|
||||||
|
if (ran) return memo;
|
||||||
|
ran = true;
|
||||||
|
return memo = func.apply(this, arguments);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
// Returns the first function passed as an argument to the second,
|
||||||
|
// allowing you to adjust arguments, run code before and after, and
|
||||||
|
// conditionally execute the original function.
|
||||||
|
_.wrap = function(func, wrapper) {
|
||||||
|
return function() {
|
||||||
|
var args = [func].concat(slice.call(arguments, 0));
|
||||||
|
return wrapper.apply(this, args);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
// Returns a function that is the composition of a list of functions, each
|
||||||
|
// consuming the return value of the function that follows.
|
||||||
|
_.compose = function() {
|
||||||
|
var funcs = arguments;
|
||||||
|
return function() {
|
||||||
|
var args = arguments;
|
||||||
|
for (var i = funcs.length - 1; i >= 0; i--) {
|
||||||
|
args = [funcs[i].apply(this, args)];
|
||||||
|
}
|
||||||
|
return args[0];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
// Returns a function that will only be executed after being called N times.
|
||||||
|
_.after = function(times, func) {
|
||||||
|
if (times <= 0) return func();
|
||||||
|
return function() {
|
||||||
|
if (--times < 1) { return func.apply(this, arguments); }
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
// Object Functions
|
||||||
|
// ----------------
|
||||||
|
|
||||||
|
// Retrieve the names of an object's properties.
|
||||||
|
// Delegates to **ECMAScript 5**'s native `Object.keys`
|
||||||
|
_.keys = nativeKeys || function(obj) {
|
||||||
|
if (obj !== Object(obj)) throw new TypeError('Invalid object');
|
||||||
|
var keys = [];
|
||||||
|
for (var key in obj) if (_.has(obj, key)) keys[keys.length] = key;
|
||||||
|
return keys;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Retrieve the values of an object's properties.
|
||||||
|
_.values = function(obj) {
|
||||||
|
return _.map(obj, _.identity);
|
||||||
|
};
|
||||||
|
|
||||||
|
// Return a sorted list of the function names available on the object.
|
||||||
|
// Aliased as `methods`
|
||||||
|
_.functions = _.methods = function(obj) {
|
||||||
|
var names = [];
|
||||||
|
for (var key in obj) {
|
||||||
|
if (_.isFunction(obj[key])) names.push(key);
|
||||||
|
}
|
||||||
|
return names.sort();
|
||||||
|
};
|
||||||
|
|
||||||
|
// Extend a given object with all the properties in passed-in object(s).
|
||||||
|
_.extend = function(obj) {
|
||||||
|
each(slice.call(arguments, 1), function(source) {
|
||||||
|
for (var prop in source) {
|
||||||
|
obj[prop] = source[prop];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return obj;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Fill in a given object with default properties.
|
||||||
|
_.defaults = function(obj) {
|
||||||
|
each(slice.call(arguments, 1), function(source) {
|
||||||
|
for (var prop in source) {
|
||||||
|
if (obj[prop] == null) obj[prop] = source[prop];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return obj;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Create a (shallow-cloned) duplicate of an object.
|
||||||
|
_.clone = function(obj) {
|
||||||
|
if (!_.isObject(obj)) return obj;
|
||||||
|
return _.isArray(obj) ? obj.slice() : _.extend({}, obj);
|
||||||
|
};
|
||||||
|
|
||||||
|
// Invokes interceptor with the obj, and then returns obj.
|
||||||
|
// The primary purpose of this method is to "tap into" a method chain, in
|
||||||
|
// order to perform operations on intermediate results within the chain.
|
||||||
|
_.tap = function(obj, interceptor) {
|
||||||
|
interceptor(obj);
|
||||||
|
return obj;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Internal recursive comparison function.
|
||||||
|
function eq(a, b, stack) {
|
||||||
|
// Identical objects are equal. `0 === -0`, but they aren't identical.
|
||||||
|
// See the Harmony `egal` proposal: http://wiki.ecmascript.org/doku.php?id=harmony:egal.
|
||||||
|
if (a === b) return a !== 0 || 1 / a == 1 / b;
|
||||||
|
// A strict comparison is necessary because `null == undefined`.
|
||||||
|
if (a == null || b == null) return a === b;
|
||||||
|
// Unwrap any wrapped objects.
|
||||||
|
if (a._chain) a = a._wrapped;
|
||||||
|
if (b._chain) b = b._wrapped;
|
||||||
|
// Invoke a custom `isEqual` method if one is provided.
|
||||||
|
if (a.isEqual && _.isFunction(a.isEqual)) return a.isEqual(b);
|
||||||
|
if (b.isEqual && _.isFunction(b.isEqual)) return b.isEqual(a);
|
||||||
|
// Compare `[[Class]]` names.
|
||||||
|
var className = toString.call(a);
|
||||||
|
if (className != toString.call(b)) return false;
|
||||||
|
switch (className) {
|
||||||
|
// Strings, numbers, dates, and booleans are compared by value.
|
||||||
|
case '[object String]':
|
||||||
|
// Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is
|
||||||
|
// equivalent to `new String("5")`.
|
||||||
|
return a == String(b);
|
||||||
|
case '[object Number]':
|
||||||
|
// `NaN`s are equivalent, but non-reflexive. An `egal` comparison is performed for
|
||||||
|
// other numeric values.
|
||||||
|
return a != +a ? b != +b : (a == 0 ? 1 / a == 1 / b : a == +b);
|
||||||
|
case '[object Date]':
|
||||||
|
case '[object Boolean]':
|
||||||
|
// Coerce dates and booleans to numeric primitive values. Dates are compared by their
|
||||||
|
// millisecond representations. Note that invalid dates with millisecond representations
|
||||||
|
// of `NaN` are not equivalent.
|
||||||
|
return +a == +b;
|
||||||
|
// RegExps are compared by their source patterns and flags.
|
||||||
|
case '[object RegExp]':
|
||||||
|
return a.source == b.source &&
|
||||||
|
a.global == b.global &&
|
||||||
|
a.multiline == b.multiline &&
|
||||||
|
a.ignoreCase == b.ignoreCase;
|
||||||
|
}
|
||||||
|
if (typeof a != 'object' || typeof b != 'object') return false;
|
||||||
|
// Assume equality for cyclic structures. The algorithm for detecting cyclic
|
||||||
|
// structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.
|
||||||
|
var length = stack.length;
|
||||||
|
while (length--) {
|
||||||
|
// Linear search. Performance is inversely proportional to the number of
|
||||||
|
// unique nested structures.
|
||||||
|
if (stack[length] == a) return true;
|
||||||
|
}
|
||||||
|
// Add the first object to the stack of traversed objects.
|
||||||
|
stack.push(a);
|
||||||
|
var size = 0, result = true;
|
||||||
|
// Recursively compare objects and arrays.
|
||||||
|
if (className == '[object Array]') {
|
||||||
|
// Compare array lengths to determine if a deep comparison is necessary.
|
||||||
|
size = a.length;
|
||||||
|
result = size == b.length;
|
||||||
|
if (result) {
|
||||||
|
// Deep compare the contents, ignoring non-numeric properties.
|
||||||
|
while (size--) {
|
||||||
|
// Ensure commutative equality for sparse arrays.
|
||||||
|
if (!(result = size in a == size in b && eq(a[size], b[size], stack))) break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Objects with different constructors are not equivalent.
|
||||||
|
if ('constructor' in a != 'constructor' in b || a.constructor != b.constructor) return false;
|
||||||
|
// Deep compare objects.
|
||||||
|
for (var key in a) {
|
||||||
|
if (_.has(a, key)) {
|
||||||
|
// Count the expected number of properties.
|
||||||
|
size++;
|
||||||
|
// Deep compare each member.
|
||||||
|
if (!(result = _.has(b, key) && eq(a[key], b[key], stack))) break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Ensure that both objects contain the same number of properties.
|
||||||
|
if (result) {
|
||||||
|
for (key in b) {
|
||||||
|
if (_.has(b, key) && !(size--)) break;
|
||||||
|
}
|
||||||
|
result = !size;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Remove the first object from the stack of traversed objects.
|
||||||
|
stack.pop();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Perform a deep comparison to check if two objects are equal.
|
||||||
|
_.isEqual = function(a, b) {
|
||||||
|
return eq(a, b, []);
|
||||||
|
};
|
||||||
|
|
||||||
|
// Is a given array, string, or object empty?
|
||||||
|
// An "empty" object has no enumerable own-properties.
|
||||||
|
_.isEmpty = function(obj) {
|
||||||
|
if (_.isArray(obj) || _.isString(obj)) return obj.length === 0;
|
||||||
|
for (var key in obj) if (_.has(obj, key)) return false;
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Is a given value a DOM element?
|
||||||
|
_.isElement = function(obj) {
|
||||||
|
return !!(obj && obj.nodeType == 1);
|
||||||
|
};
|
||||||
|
|
||||||
|
// Is a given value an array?
|
||||||
|
// Delegates to ECMA5's native Array.isArray
|
||||||
|
_.isArray = nativeIsArray || function(obj) {
|
||||||
|
return toString.call(obj) == '[object Array]';
|
||||||
|
};
|
||||||
|
|
||||||
|
// Is a given variable an object?
|
||||||
|
_.isObject = function(obj) {
|
||||||
|
return obj === Object(obj);
|
||||||
|
};
|
||||||
|
|
||||||
|
// Is a given variable an arguments object?
|
||||||
|
_.isArguments = function(obj) {
|
||||||
|
return toString.call(obj) == '[object Arguments]';
|
||||||
|
};
|
||||||
|
if (!_.isArguments(arguments)) {
|
||||||
|
_.isArguments = function(obj) {
|
||||||
|
return !!(obj && _.has(obj, 'callee'));
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
// Is a given value a function?
|
||||||
|
_.isFunction = function(obj) {
|
||||||
|
return toString.call(obj) == '[object Function]';
|
||||||
|
};
|
||||||
|
|
||||||
|
// Is a given value a string?
|
||||||
|
_.isString = function(obj) {
|
||||||
|
return toString.call(obj) == '[object String]';
|
||||||
|
};
|
||||||
|
|
||||||
|
// Is a given value a number?
|
||||||
|
_.isNumber = function(obj) {
|
||||||
|
return toString.call(obj) == '[object Number]';
|
||||||
|
};
|
||||||
|
|
||||||
|
// Is the given value `NaN`?
|
||||||
|
_.isNaN = function(obj) {
|
||||||
|
// `NaN` is the only value for which `===` is not reflexive.
|
||||||
|
return obj !== obj;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Is a given value a boolean?
|
||||||
|
_.isBoolean = function(obj) {
|
||||||
|
return obj === true || obj === false || toString.call(obj) == '[object Boolean]';
|
||||||
|
};
|
||||||
|
|
||||||
|
// Is a given value a date?
|
||||||
|
_.isDate = function(obj) {
|
||||||
|
return toString.call(obj) == '[object Date]';
|
||||||
|
};
|
||||||
|
|
||||||
|
// Is the given value a regular expression?
|
||||||
|
_.isRegExp = function(obj) {
|
||||||
|
return toString.call(obj) == '[object RegExp]';
|
||||||
|
};
|
||||||
|
|
||||||
|
// Is a given value equal to null?
|
||||||
|
_.isNull = function(obj) {
|
||||||
|
return obj === null;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Is a given variable undefined?
|
||||||
|
_.isUndefined = function(obj) {
|
||||||
|
return obj === void 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Has own property?
|
||||||
|
_.has = function(obj, key) {
|
||||||
|
return hasOwnProperty.call(obj, key);
|
||||||
|
};
|
||||||
|
|
||||||
|
// Utility Functions
|
||||||
|
// -----------------
|
||||||
|
|
||||||
|
// Run Underscore.js in *noConflict* mode, returning the `_` variable to its
|
||||||
|
// previous owner. Returns a reference to the Underscore object.
|
||||||
|
_.noConflict = function() {
|
||||||
|
root._ = previousUnderscore;
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Keep the identity function around for default iterators.
|
||||||
|
_.identity = function(value) {
|
||||||
|
return value;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Run a function **n** times.
|
||||||
|
_.times = function (n, iterator, context) {
|
||||||
|
for (var i = 0; i < n; i++) iterator.call(context, i);
|
||||||
|
};
|
||||||
|
|
||||||
|
// Escape a string for HTML interpolation.
|
||||||
|
_.escape = function(string) {
|
||||||
|
return (''+string).replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"').replace(/'/g, ''').replace(/\//g,'/');
|
||||||
|
};
|
||||||
|
|
||||||
|
// Add your own custom functions to the Underscore object, ensuring that
|
||||||
|
// they're correctly added to the OOP wrapper as well.
|
||||||
|
_.mixin = function(obj) {
|
||||||
|
each(_.functions(obj), function(name){
|
||||||
|
addToWrapper(name, _[name] = obj[name]);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
// Generate a unique integer id (unique within the entire client session).
|
||||||
|
// Useful for temporary DOM ids.
|
||||||
|
var idCounter = 0;
|
||||||
|
_.uniqueId = function(prefix) {
|
||||||
|
var id = idCounter++;
|
||||||
|
return prefix ? prefix + id : id;
|
||||||
|
};
|
||||||
|
|
||||||
|
// By default, Underscore uses ERB-style template delimiters, change the
|
||||||
|
// following template settings to use alternative delimiters.
|
||||||
|
_.templateSettings = {
|
||||||
|
evaluate : /<%([\s\S]+?)%>/g,
|
||||||
|
interpolate : /<%=([\s\S]+?)%>/g,
|
||||||
|
escape : /<%-([\s\S]+?)%>/g
|
||||||
|
};
|
||||||
|
|
||||||
|
// When customizing `templateSettings`, if you don't want to define an
|
||||||
|
// interpolation, evaluation or escaping regex, we need one that is
|
||||||
|
// guaranteed not to match.
|
||||||
|
var noMatch = /.^/;
|
||||||
|
|
||||||
|
// Within an interpolation, evaluation, or escaping, remove HTML escaping
|
||||||
|
// that had been previously added.
|
||||||
|
var unescape = function(code) {
|
||||||
|
return code.replace(/\\\\/g, '\\').replace(/\\'/g, "'");
|
||||||
|
};
|
||||||
|
|
||||||
|
// JavaScript micro-templating, similar to John Resig's implementation.
|
||||||
|
// Underscore templating handles arbitrary delimiters, preserves whitespace,
|
||||||
|
// and correctly escapes quotes within interpolated code.
|
||||||
|
_.template = function(str, data) {
|
||||||
|
var c = _.templateSettings;
|
||||||
|
var tmpl = 'var __p=[],print=function(){__p.push.apply(__p,arguments);};' +
|
||||||
|
'with(obj||{}){__p.push(\'' +
|
||||||
|
str.replace(/\\/g, '\\\\')
|
||||||
|
.replace(/'/g, "\\'")
|
||||||
|
.replace(c.escape || noMatch, function(match, code) {
|
||||||
|
return "',_.escape(" + unescape(code) + "),'";
|
||||||
|
})
|
||||||
|
.replace(c.interpolate || noMatch, function(match, code) {
|
||||||
|
return "'," + unescape(code) + ",'";
|
||||||
|
})
|
||||||
|
.replace(c.evaluate || noMatch, function(match, code) {
|
||||||
|
return "');" + unescape(code).replace(/[\r\n\t]/g, ' ') + ";__p.push('";
|
||||||
|
})
|
||||||
|
.replace(/\r/g, '\\r')
|
||||||
|
.replace(/\n/g, '\\n')
|
||||||
|
.replace(/\t/g, '\\t')
|
||||||
|
+ "');}return __p.join('');";
|
||||||
|
var func = new Function('obj', '_', tmpl);
|
||||||
|
if (data) return func(data, _);
|
||||||
|
return function(data) {
|
||||||
|
return func.call(this, data, _);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
// Add a "chain" function, which will delegate to the wrapper.
|
||||||
|
_.chain = function(obj) {
|
||||||
|
return _(obj).chain();
|
||||||
|
};
|
||||||
|
|
||||||
|
// The OOP Wrapper
|
||||||
|
// ---------------
|
||||||
|
|
||||||
|
// If Underscore is called as a function, it returns a wrapped object that
|
||||||
|
// can be used OO-style. This wrapper holds altered versions of all the
|
||||||
|
// underscore functions. Wrapped objects may be chained.
|
||||||
|
var wrapper = function(obj) { this._wrapped = obj; };
|
||||||
|
|
||||||
|
// Expose `wrapper.prototype` as `_.prototype`
|
||||||
|
_.prototype = wrapper.prototype;
|
||||||
|
|
||||||
|
// Helper function to continue chaining intermediate results.
|
||||||
|
var result = function(obj, chain) {
|
||||||
|
return chain ? _(obj).chain() : obj;
|
||||||
|
};
|
||||||
|
|
||||||
|
// A method to easily add functions to the OOP wrapper.
|
||||||
|
var addToWrapper = function(name, func) {
|
||||||
|
wrapper.prototype[name] = function() {
|
||||||
|
var args = slice.call(arguments);
|
||||||
|
unshift.call(args, this._wrapped);
|
||||||
|
return result(func.apply(_, args), this._chain);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
// Add all of the Underscore functions to the wrapper object.
|
||||||
|
_.mixin(_);
|
||||||
|
|
||||||
|
// Add all mutator Array functions to the wrapper.
|
||||||
|
each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {
|
||||||
|
var method = ArrayProto[name];
|
||||||
|
wrapper.prototype[name] = function() {
|
||||||
|
var wrapped = this._wrapped;
|
||||||
|
method.apply(wrapped, arguments);
|
||||||
|
var length = wrapped.length;
|
||||||
|
if ((name == 'shift' || name == 'splice') && length === 0) delete wrapped[0];
|
||||||
|
return result(wrapped, this._chain);
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
// Add all accessor Array functions to the wrapper.
|
||||||
|
each(['concat', 'join', 'slice'], function(name) {
|
||||||
|
var method = ArrayProto[name];
|
||||||
|
wrapper.prototype[name] = function() {
|
||||||
|
return result(method.apply(this._wrapped, arguments), this._chain);
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
// Start chaining a wrapped Underscore object.
|
||||||
|
wrapper.prototype.chain = function() {
|
||||||
|
this._chain = true;
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Extracts the result from a wrapped and chained object.
|
||||||
|
wrapper.prototype.value = function() {
|
||||||
|
return this._wrapped;
|
||||||
|
};
|
||||||
|
|
||||||
|
}).call(this);
|
|
@ -1,23 +1,31 @@
|
||||||
// Underscore.js 0.5.5
|
// Underscore.js 1.3.1
|
||||||
// (c) 2009 Jeremy Ashkenas, DocumentCloud Inc.
|
// (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc.
|
||||||
// Underscore is freely distributable under the terms of the MIT license.
|
// Underscore is freely distributable under the MIT license.
|
||||||
// Portions of Underscore are inspired by or borrowed from Prototype.js,
|
// Portions of Underscore are inspired or borrowed from Prototype,
|
||||||
// Oliver Steele's Functional, and John Resig's Micro-Templating.
|
// Oliver Steele's Functional, and John Resig's Micro-Templating.
|
||||||
// For all details and documentation:
|
// For all details and documentation:
|
||||||
// http://documentcloud.github.com/underscore/
|
// http://documentcloud.github.com/underscore
|
||||||
(function(){var j=this,n=j._,i=function(a){this._wrapped=a},m=typeof StopIteration!=="undefined"?StopIteration:"__break__",b=j._=function(a){return new i(a)};if(typeof exports!=="undefined")exports._=b;var k=Array.prototype.slice,o=Array.prototype.unshift,p=Object.prototype.toString,q=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;b.VERSION="0.5.5";b.each=function(a,c,d){try{if(a.forEach)a.forEach(c,d);else if(b.isArray(a)||b.isArguments(a))for(var e=0,f=a.length;e<f;e++)c.call(d,
|
(function(){function q(a,c,d){if(a===c)return a!==0||1/a==1/c;if(a==null||c==null)return a===c;if(a._chain)a=a._wrapped;if(c._chain)c=c._wrapped;if(a.isEqual&&b.isFunction(a.isEqual))return a.isEqual(c);if(c.isEqual&&b.isFunction(c.isEqual))return c.isEqual(a);var e=l.call(a);if(e!=l.call(c))return false;switch(e){case "[object String]":return a==String(c);case "[object Number]":return a!=+a?c!=+c:a==0?1/a==1/c:a==+c;case "[object Date]":case "[object Boolean]":return+a==+c;case "[object RegExp]":return a.source==
|
||||||
a[e],e,a);else{var g=b.keys(a);f=g.length;for(e=0;e<f;e++)c.call(d,a[g[e]],g[e],a)}}catch(h){if(h!=m)throw h;}return a};b.map=function(a,c,d){if(a&&b.isFunction(a.map))return a.map(c,d);var e=[];b.each(a,function(f,g,h){e.push(c.call(d,f,g,h))});return e};b.reduce=function(a,c,d,e){if(a&&b.isFunction(a.reduce))return a.reduce(b.bind(d,e),c);b.each(a,function(f,g,h){c=d.call(e,c,f,g,h)});return c};b.reduceRight=function(a,c,d,e){if(a&&b.isFunction(a.reduceRight))return a.reduceRight(b.bind(d,e),c);
|
c.source&&a.global==c.global&&a.multiline==c.multiline&&a.ignoreCase==c.ignoreCase}if(typeof a!="object"||typeof c!="object")return false;for(var f=d.length;f--;)if(d[f]==a)return true;d.push(a);var f=0,g=true;if(e=="[object Array]"){if(f=a.length,g=f==c.length)for(;f--;)if(!(g=f in a==f in c&&q(a[f],c[f],d)))break}else{if("constructor"in a!="constructor"in c||a.constructor!=c.constructor)return false;for(var h in a)if(b.has(a,h)&&(f++,!(g=b.has(c,h)&&q(a[h],c[h],d))))break;if(g){for(h in c)if(b.has(c,
|
||||||
var f=b.clone(b.toArray(a)).reverse();b.each(f,function(g,h){c=d.call(e,c,g,h,a)});return c};b.detect=function(a,c,d){var e;b.each(a,function(f,g,h){if(c.call(d,f,g,h)){e=f;b.breakLoop()}});return e};b.select=function(a,c,d){if(a&&b.isFunction(a.filter))return a.filter(c,d);var e=[];b.each(a,function(f,g,h){c.call(d,f,g,h)&&e.push(f)});return e};b.reject=function(a,c,d){var e=[];b.each(a,function(f,g,h){!c.call(d,f,g,h)&&e.push(f)});return e};b.all=function(a,c,d){c=c||b.identity;if(a&&b.isFunction(a.every))return a.every(c,
|
h)&&!f--)break;g=!f}}d.pop();return g}var r=this,G=r._,n={},k=Array.prototype,o=Object.prototype,i=k.slice,H=k.unshift,l=o.toString,I=o.hasOwnProperty,w=k.forEach,x=k.map,y=k.reduce,z=k.reduceRight,A=k.filter,B=k.every,C=k.some,p=k.indexOf,D=k.lastIndexOf,o=Array.isArray,J=Object.keys,s=Function.prototype.bind,b=function(a){return new m(a)};if(typeof exports!=="undefined"){if(typeof module!=="undefined"&&module.exports)exports=module.exports=b;exports._=b}else r._=b;b.VERSION="1.3.1";var j=b.each=
|
||||||
d);var e=true;b.each(a,function(f,g,h){(e=e&&c.call(d,f,g,h))||b.breakLoop()});return e};b.any=function(a,c,d){c=c||b.identity;if(a&&b.isFunction(a.some))return a.some(c,d);var e=false;b.each(a,function(f,g,h){if(e=c.call(d,f,g,h))b.breakLoop()});return e};b.include=function(a,c){if(b.isArray(a))return b.indexOf(a,c)!=-1;var d=false;b.each(a,function(e){if(d=e===c)b.breakLoop()});return d};b.invoke=function(a,c){var d=b.rest(arguments,2);return b.map(a,function(e){return(c?e[c]:e).apply(e,d)})};b.pluck=
|
b.forEach=function(a,c,d){if(a!=null)if(w&&a.forEach===w)a.forEach(c,d);else if(a.length===+a.length)for(var e=0,f=a.length;e<f;e++){if(e in a&&c.call(d,a[e],e,a)===n)break}else for(e in a)if(b.has(a,e)&&c.call(d,a[e],e,a)===n)break};b.map=b.collect=function(a,c,b){var e=[];if(a==null)return e;if(x&&a.map===x)return a.map(c,b);j(a,function(a,g,h){e[e.length]=c.call(b,a,g,h)});if(a.length===+a.length)e.length=a.length;return e};b.reduce=b.foldl=b.inject=function(a,c,d,e){var f=arguments.length>2;a==
|
||||||
function(a,c){return b.map(a,function(d){return d[c]})};b.max=function(a,c,d){if(!c&&b.isArray(a))return Math.max.apply(Math,a);var e={computed:-Infinity};b.each(a,function(f,g,h){g=c?c.call(d,f,g,h):f;g>=e.computed&&(e={value:f,computed:g})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);var e={computed:Infinity};b.each(a,function(f,g,h){g=c?c.call(d,f,g,h):f;g<e.computed&&(e={value:f,computed:g})});return e.value};b.sortBy=function(a,c,d){return b.pluck(b.map(a,
|
null&&(a=[]);if(y&&a.reduce===y)return e&&(c=b.bind(c,e)),f?a.reduce(c,d):a.reduce(c);j(a,function(a,b,i){f?d=c.call(e,d,a,b,i):(d=a,f=true)});if(!f)throw new TypeError("Reduce of empty array with no initial value");return d};b.reduceRight=b.foldr=function(a,c,d,e){var f=arguments.length>2;a==null&&(a=[]);if(z&&a.reduceRight===z)return e&&(c=b.bind(c,e)),f?a.reduceRight(c,d):a.reduceRight(c);var g=b.toArray(a).reverse();e&&!f&&(c=b.bind(c,e));return f?b.reduce(g,c,d,e):b.reduce(g,c)};b.find=b.detect=
|
||||||
function(e,f,g){return{value:e,criteria:c.call(d,e,f,g)}}).sort(function(e,f){e=e.criteria;f=f.criteria;return e<f?-1:e>f?1:0}),"value")};b.sortedIndex=function(a,c,d){d=d||b.identity;for(var e=0,f=a.length;e<f;){var g=e+f>>1;d(a[g])<d(c)?(e=g+1):(f=g)}return e};b.toArray=function(a){if(!a)return[];if(a.toArray)return a.toArray();if(b.isArray(a))return a;if(b.isArguments(a))return k.call(a);return b.values(a)};b.size=function(a){return b.toArray(a).length};b.first=function(a,c,d){return c&&!d?k.call(a,
|
function(a,c,b){var e;E(a,function(a,g,h){if(c.call(b,a,g,h))return e=a,true});return e};b.filter=b.select=function(a,c,b){var e=[];if(a==null)return e;if(A&&a.filter===A)return a.filter(c,b);j(a,function(a,g,h){c.call(b,a,g,h)&&(e[e.length]=a)});return e};b.reject=function(a,c,b){var e=[];if(a==null)return e;j(a,function(a,g,h){c.call(b,a,g,h)||(e[e.length]=a)});return e};b.every=b.all=function(a,c,b){var e=true;if(a==null)return e;if(B&&a.every===B)return a.every(c,b);j(a,function(a,g,h){if(!(e=
|
||||||
0,c):a[0]};b.rest=function(a,c,d){return k.call(a,b.isUndefined(c)||d?1:c)};b.last=function(a){return a[a.length-1]};b.compact=function(a){return b.select(a,function(c){return!!c})};b.flatten=function(a){return b.reduce(a,[],function(c,d){if(b.isArray(d))return c.concat(b.flatten(d));c.push(d);return c})};b.without=function(a){var c=b.rest(arguments);return b.select(a,function(d){return!b.include(c,d)})};b.uniq=function(a,c){return b.reduce(a,[],function(d,e,f){if(0==f||(c===true?b.last(d)!=e:!b.include(d,
|
e&&c.call(b,a,g,h)))return n});return e};var E=b.some=b.any=function(a,c,d){c||(c=b.identity);var e=false;if(a==null)return e;if(C&&a.some===C)return a.some(c,d);j(a,function(a,b,h){if(e||(e=c.call(d,a,b,h)))return n});return!!e};b.include=b.contains=function(a,c){var b=false;if(a==null)return b;return p&&a.indexOf===p?a.indexOf(c)!=-1:b=E(a,function(a){return a===c})};b.invoke=function(a,c){var d=i.call(arguments,2);return b.map(a,function(a){return(b.isFunction(c)?c||a:a[c]).apply(a,d)})};b.pluck=
|
||||||
e)))d.push(e);return d})};b.intersect=function(a){var c=b.rest(arguments);return b.select(b.uniq(a),function(d){return b.all(c,function(e){return b.indexOf(e,d)>=0})})};b.zip=function(){for(var a=b.toArray(arguments),c=b.max(b.pluck(a,"length")),d=new Array(c),e=0;e<c;e++)d[e]=b.pluck(a,String(e));return d};b.indexOf=function(a,c){if(a.indexOf)return a.indexOf(c);for(var d=0,e=a.length;d<e;d++)if(a[d]===c)return d;return-1};b.lastIndexOf=function(a,c){if(a.lastIndexOf)return a.lastIndexOf(c);for(var d=
|
function(a,c){return b.map(a,function(a){return a[c]})};b.max=function(a,c,d){if(!c&&b.isArray(a))return Math.max.apply(Math,a);if(!c&&b.isEmpty(a))return-Infinity;var e={computed:-Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b>=e.computed&&(e={value:a,computed:b})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);if(!c&&b.isEmpty(a))return Infinity;var e={computed:Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b<e.computed&&(e={value:a,computed:b})});
|
||||||
a.length;d--;)if(a[d]===c)return d;return-1};b.range=function(a,c,d){var e=b.toArray(arguments),f=e.length<=1;a=f?0:e[0];c=f?e[0]:e[1];d=e[2]||1;e=Math.ceil((c-a)/d);if(e<=0)return[];e=new Array(e);f=a;for(var g=0;1;f+=d){if((d>0?f-c:c-f)>=0)return e;e[g++]=f}};b.bind=function(a,c){var d=b.rest(arguments,2);return function(){return a.apply(c||j,d.concat(b.toArray(arguments)))}};b.bindAll=function(a){var c=b.rest(arguments);if(c.length==0)c=b.functions(a);b.each(c,function(d){a[d]=b.bind(a[d],a)});
|
return e.value};b.shuffle=function(a){var b=[],d;j(a,function(a,f){f==0?b[0]=a:(d=Math.floor(Math.random()*(f+1)),b[f]=b[d],b[d]=a)});return b};b.sortBy=function(a,c,d){return b.pluck(b.map(a,function(a,b,g){return{value:a,criteria:c.call(d,a,b,g)}}).sort(function(a,b){var c=a.criteria,d=b.criteria;return c<d?-1:c>d?1:0}),"value")};b.groupBy=function(a,c){var d={},e=b.isFunction(c)?c:function(a){return a[c]};j(a,function(a,b){var c=e(a,b);(d[c]||(d[c]=[])).push(a)});return d};b.sortedIndex=function(a,
|
||||||
return a};b.delay=function(a,c){var d=b.rest(arguments,2);return setTimeout(function(){return a.apply(a,d)},c)};b.defer=function(a){return b.delay.apply(b,[a,1].concat(b.rest(arguments)))};b.wrap=function(a,c){return function(){var d=[a].concat(b.toArray(arguments));return c.apply(c,d)}};b.compose=function(){var a=b.toArray(arguments);return function(){for(var c=b.toArray(arguments),d=a.length-1;d>=0;d--)c=[a[d].apply(this,c)];return c[0]}};b.keys=function(a){if(b.isArray(a))return b.range(0,a.length);
|
c,d){d||(d=b.identity);for(var e=0,f=a.length;e<f;){var g=e+f>>1;d(a[g])<d(c)?e=g+1:f=g}return e};b.toArray=function(a){return!a?[]:a.toArray?a.toArray():b.isArray(a)?i.call(a):b.isArguments(a)?i.call(a):b.values(a)};b.size=function(a){return b.toArray(a).length};b.first=b.head=function(a,b,d){return b!=null&&!d?i.call(a,0,b):a[0]};b.initial=function(a,b,d){return i.call(a,0,a.length-(b==null||d?1:b))};b.last=function(a,b,d){return b!=null&&!d?i.call(a,Math.max(a.length-b,0)):a[a.length-1]};b.rest=
|
||||||
var c=[];for(var d in a)q.call(a,d)&&c.push(d);return c};b.values=function(a){return b.map(a,b.identity)};b.functions=function(a){return b.select(b.keys(a),function(c){return b.isFunction(a[c])}).sort()};b.extend=function(a,c){for(var d in c)a[d]=c[d];return a};b.clone=function(a){if(b.isArray(a))return a.slice(0);return b.extend({},a)};b.tap=function(a,c){c(a);return a};b.isEqual=function(a,c){if(a===c)return true;var d=typeof a;if(d!=typeof c)return false;if(a==c)return true;if(!a&&c||a&&!c)return false;
|
b.tail=function(a,b,d){return i.call(a,b==null||d?1:b)};b.compact=function(a){return b.filter(a,function(a){return!!a})};b.flatten=function(a,c){return b.reduce(a,function(a,e){if(b.isArray(e))return a.concat(c?e:b.flatten(e));a[a.length]=e;return a},[])};b.without=function(a){return b.difference(a,i.call(arguments,1))};b.uniq=b.unique=function(a,c,d){var d=d?b.map(a,d):a,e=[];b.reduce(d,function(d,g,h){if(0==h||(c===true?b.last(d)!=g:!b.include(d,g)))d[d.length]=g,e[e.length]=a[h];return d},[]);
|
||||||
if(a.isEqual)return a.isEqual(c);if(b.isDate(a)&&b.isDate(c))return a.getTime()===c.getTime();if(b.isNaN(a)&&b.isNaN(c))return true;if(b.isRegExp(a)&&b.isRegExp(c))return a.source===c.source&&a.global===c.global&&a.ignoreCase===c.ignoreCase&&a.multiline===c.multiline;if(d!=="object")return false;if(a.length&&a.length!==c.length)return false;d=b.keys(a);var e=b.keys(c);if(d.length!=e.length)return false;for(var f in a)if(!b.isEqual(a[f],c[f]))return false;return true};b.isEmpty=function(a){return b.keys(a).length==
|
return e};b.union=function(){return b.uniq(b.flatten(arguments,true))};b.intersection=b.intersect=function(a){var c=i.call(arguments,1);return b.filter(b.uniq(a),function(a){return b.every(c,function(c){return b.indexOf(c,a)>=0})})};b.difference=function(a){var c=b.flatten(i.call(arguments,1));return b.filter(a,function(a){return!b.include(c,a)})};b.zip=function(){for(var a=i.call(arguments),c=b.max(b.pluck(a,"length")),d=Array(c),e=0;e<c;e++)d[e]=b.pluck(a,""+e);return d};b.indexOf=function(a,c,
|
||||||
0};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=function(a){return!!(a&&a.concat&&a.unshift)};b.isArguments=function(a){return a&&b.isNumber(a.length)&&!b.isArray(a)&&!r.call(a,"length")};b.isFunction=function(a){return!!(a&&a.constructor&&a.call&&a.apply)};b.isString=function(a){return!!(a===""||a&&a.charCodeAt&&a.substr)};b.isNumber=function(a){return p.call(a)==="[object Number]"};b.isDate=function(a){return!!(a&&a.getTimezoneOffset&&a.setUTCFullYear)};b.isRegExp=function(a){return!!(a&&
|
d){if(a==null)return-1;var e;if(d)return d=b.sortedIndex(a,c),a[d]===c?d:-1;if(p&&a.indexOf===p)return a.indexOf(c);for(d=0,e=a.length;d<e;d++)if(d in a&&a[d]===c)return d;return-1};b.lastIndexOf=function(a,b){if(a==null)return-1;if(D&&a.lastIndexOf===D)return a.lastIndexOf(b);for(var d=a.length;d--;)if(d in a&&a[d]===b)return d;return-1};b.range=function(a,b,d){arguments.length<=1&&(b=a||0,a=0);for(var d=arguments[2]||1,e=Math.max(Math.ceil((b-a)/d),0),f=0,g=Array(e);f<e;)g[f++]=a,a+=d;return g};
|
||||||
a.test&&a.exec&&(a.ignoreCase||a.ignoreCase===false))};b.isNaN=function(a){return b.isNumber(a)&&isNaN(a)};b.isNull=function(a){return a===null};b.isUndefined=function(a){return typeof a=="undefined"};b.noConflict=function(){j._=n;return this};b.identity=function(a){return a};b.breakLoop=function(){throw m;};var s=0;b.uniqueId=function(a){var c=s++;return a?a+c:c};b.template=function(a,c){a=new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+a.replace(/[\r\t\n]/g,
|
var F=function(){};b.bind=function(a,c){var d,e;if(a.bind===s&&s)return s.apply(a,i.call(arguments,1));if(!b.isFunction(a))throw new TypeError;e=i.call(arguments,2);return d=function(){if(!(this instanceof d))return a.apply(c,e.concat(i.call(arguments)));F.prototype=a.prototype;var b=new F,g=a.apply(b,e.concat(i.call(arguments)));return Object(g)===g?g:b}};b.bindAll=function(a){var c=i.call(arguments,1);c.length==0&&(c=b.functions(a));j(c,function(c){a[c]=b.bind(a[c],a)});return a};b.memoize=function(a,
|
||||||
" ").replace(/'(?=[^%]*%>)/g,"\t").split("'").join("\\'").split("\t").join("'").replace(/<%=(.+?)%>/g,"',$1,'").split("<%").join("');").split("%>").join("p.push('")+"');}return p.join('');");return c?a(c):a};b.forEach=b.each;b.foldl=b.inject=b.reduce;b.foldr=b.reduceRight;b.filter=b.select;b.every=b.all;b.some=b.any;b.head=b.first;b.tail=b.rest;b.methods=b.functions;var l=function(a,c){return c?b(a).chain():a};b.each(b.functions(b),function(a){var c=b[a];i.prototype[a]=function(){var d=b.toArray(arguments);
|
c){var d={};c||(c=b.identity);return function(){var e=c.apply(this,arguments);return b.has(d,e)?d[e]:d[e]=a.apply(this,arguments)}};b.delay=function(a,b){var d=i.call(arguments,2);return setTimeout(function(){return a.apply(a,d)},b)};b.defer=function(a){return b.delay.apply(b,[a,1].concat(i.call(arguments,1)))};b.throttle=function(a,c){var d,e,f,g,h,i=b.debounce(function(){h=g=false},c);return function(){d=this;e=arguments;var b;f||(f=setTimeout(function(){f=null;h&&a.apply(d,e);i()},c));g?h=true:
|
||||||
o.call(d,this._wrapped);return l(c.apply(b,d),this._chain)}});b.each(["pop","push","reverse","shift","sort","splice","unshift"],function(a){var c=Array.prototype[a];i.prototype[a]=function(){c.apply(this._wrapped,arguments);return l(this._wrapped,this._chain)}});b.each(["concat","join","slice"],function(a){var c=Array.prototype[a];i.prototype[a]=function(){return l(c.apply(this._wrapped,arguments),this._chain)}});i.prototype.chain=function(){this._chain=true;return this};i.prototype.value=function(){return this._wrapped}})();
|
a.apply(d,e);i();g=true}};b.debounce=function(a,b){var d;return function(){var e=this,f=arguments;clearTimeout(d);d=setTimeout(function(){d=null;a.apply(e,f)},b)}};b.once=function(a){var b=false,d;return function(){if(b)return d;b=true;return d=a.apply(this,arguments)}};b.wrap=function(a,b){return function(){var d=[a].concat(i.call(arguments,0));return b.apply(this,d)}};b.compose=function(){var a=arguments;return function(){for(var b=arguments,d=a.length-1;d>=0;d--)b=[a[d].apply(this,b)];return b[0]}};
|
||||||
|
b.after=function(a,b){return a<=0?b():function(){if(--a<1)return b.apply(this,arguments)}};b.keys=J||function(a){if(a!==Object(a))throw new TypeError("Invalid object");var c=[],d;for(d in a)b.has(a,d)&&(c[c.length]=d);return c};b.values=function(a){return b.map(a,b.identity)};b.functions=b.methods=function(a){var c=[],d;for(d in a)b.isFunction(a[d])&&c.push(d);return c.sort()};b.extend=function(a){j(i.call(arguments,1),function(b){for(var d in b)a[d]=b[d]});return a};b.defaults=function(a){j(i.call(arguments,
|
||||||
|
1),function(b){for(var d in b)a[d]==null&&(a[d]=b[d])});return a};b.clone=function(a){return!b.isObject(a)?a:b.isArray(a)?a.slice():b.extend({},a)};b.tap=function(a,b){b(a);return a};b.isEqual=function(a,b){return q(a,b,[])};b.isEmpty=function(a){if(b.isArray(a)||b.isString(a))return a.length===0;for(var c in a)if(b.has(a,c))return false;return true};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=o||function(a){return l.call(a)=="[object Array]"};b.isObject=function(a){return a===Object(a)};
|
||||||
|
b.isArguments=function(a){return l.call(a)=="[object Arguments]"};if(!b.isArguments(arguments))b.isArguments=function(a){return!(!a||!b.has(a,"callee"))};b.isFunction=function(a){return l.call(a)=="[object Function]"};b.isString=function(a){return l.call(a)=="[object String]"};b.isNumber=function(a){return l.call(a)=="[object Number]"};b.isNaN=function(a){return a!==a};b.isBoolean=function(a){return a===true||a===false||l.call(a)=="[object Boolean]"};b.isDate=function(a){return l.call(a)=="[object Date]"};
|
||||||
|
b.isRegExp=function(a){return l.call(a)=="[object RegExp]"};b.isNull=function(a){return a===null};b.isUndefined=function(a){return a===void 0};b.has=function(a,b){return I.call(a,b)};b.noConflict=function(){r._=G;return this};b.identity=function(a){return a};b.times=function(a,b,d){for(var e=0;e<a;e++)b.call(d,e)};b.escape=function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'").replace(/\//g,"/")};b.mixin=function(a){j(b.functions(a),
|
||||||
|
function(c){K(c,b[c]=a[c])})};var L=0;b.uniqueId=function(a){var b=L++;return a?a+b:b};b.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var t=/.^/,u=function(a){return a.replace(/\\\\/g,"\\").replace(/\\'/g,"'")};b.template=function(a,c){var d=b.templateSettings,d="var __p=[],print=function(){__p.push.apply(__p,arguments);};with(obj||{}){__p.push('"+a.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(d.escape||t,function(a,b){return"',_.escape("+
|
||||||
|
u(b)+"),'"}).replace(d.interpolate||t,function(a,b){return"',"+u(b)+",'"}).replace(d.evaluate||t,function(a,b){return"');"+u(b).replace(/[\r\n\t]/g," ")+";__p.push('"}).replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace(/\t/g,"\\t")+"');}return __p.join('');",e=new Function("obj","_",d);return c?e(c,b):function(a){return e.call(this,a,b)}};b.chain=function(a){return b(a).chain()};var m=function(a){this._wrapped=a};b.prototype=m.prototype;var v=function(a,c){return c?b(a).chain():a},K=function(a,c){m.prototype[a]=
|
||||||
|
function(){var a=i.call(arguments);H.call(a,this._wrapped);return v(c.apply(b,a),this._chain)}};b.mixin(b);j("pop,push,reverse,shift,sort,splice,unshift".split(","),function(a){var b=k[a];m.prototype[a]=function(){var d=this._wrapped;b.apply(d,arguments);var e=d.length;(a=="shift"||a=="splice")&&e===0&&delete d[0];return v(d,this._chain)}});j(["concat","join","slice"],function(a){var b=k[a];m.prototype[a]=function(){return v(b.apply(this._wrapped,arguments),this._chain)}});m.prototype.chain=function(){this._chain=
|
||||||
|
true;return this};m.prototype.value=function(){return this._wrapped}}).call(this);
|
||||||
|
|
Before Width: | Height: | Size: 372 B After Width: | Height: | Size: 345 B |
BIN
_static/up.png
Before Width: | Height: | Size: 363 B After Width: | Height: | Size: 345 B |
|
@ -4,7 +4,7 @@
|
||||||
*
|
*
|
||||||
* sphinx.websupport utilties for all documentation.
|
* sphinx.websupport utilties for all documentation.
|
||||||
*
|
*
|
||||||
* :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
|
* :copyright: Copyright 2007-2015 by the Sphinx team, see AUTHORS.
|
||||||
* :license: BSD, see LICENSE for details.
|
* :license: BSD, see LICENSE for details.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
@ -50,51 +50,51 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
function initEvents() {
|
function initEvents() {
|
||||||
$('a.comment-close').live("click", function(event) {
|
$(document).on("click", 'a.comment-close', function(event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
hide($(this).attr('id').substring(2));
|
hide($(this).attr('id').substring(2));
|
||||||
});
|
});
|
||||||
$('a.vote').live("click", function(event) {
|
$(document).on("click", 'a.vote', function(event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
handleVote($(this));
|
handleVote($(this));
|
||||||
});
|
});
|
||||||
$('a.reply').live("click", function(event) {
|
$(document).on("click", 'a.reply', function(event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
openReply($(this).attr('id').substring(2));
|
openReply($(this).attr('id').substring(2));
|
||||||
});
|
});
|
||||||
$('a.close-reply').live("click", function(event) {
|
$(document).on("click", 'a.close-reply', function(event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
closeReply($(this).attr('id').substring(2));
|
closeReply($(this).attr('id').substring(2));
|
||||||
});
|
});
|
||||||
$('a.sort-option').live("click", function(event) {
|
$(document).on("click", 'a.sort-option', function(event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
handleReSort($(this));
|
handleReSort($(this));
|
||||||
});
|
});
|
||||||
$('a.show-proposal').live("click", function(event) {
|
$(document).on("click", 'a.show-proposal', function(event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
showProposal($(this).attr('id').substring(2));
|
showProposal($(this).attr('id').substring(2));
|
||||||
});
|
});
|
||||||
$('a.hide-proposal').live("click", function(event) {
|
$(document).on("click", 'a.hide-proposal', function(event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
hideProposal($(this).attr('id').substring(2));
|
hideProposal($(this).attr('id').substring(2));
|
||||||
});
|
});
|
||||||
$('a.show-propose-change').live("click", function(event) {
|
$(document).on("click", 'a.show-propose-change', function(event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
showProposeChange($(this).attr('id').substring(2));
|
showProposeChange($(this).attr('id').substring(2));
|
||||||
});
|
});
|
||||||
$('a.hide-propose-change').live("click", function(event) {
|
$(document).on("click", 'a.hide-propose-change', function(event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
hideProposeChange($(this).attr('id').substring(2));
|
hideProposeChange($(this).attr('id').substring(2));
|
||||||
});
|
});
|
||||||
$('a.accept-comment').live("click", function(event) {
|
$(document).on("click", 'a.accept-comment', function(event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
acceptComment($(this).attr('id').substring(2));
|
acceptComment($(this).attr('id').substring(2));
|
||||||
});
|
});
|
||||||
$('a.delete-comment').live("click", function(event) {
|
$(document).on("click", 'a.delete-comment', function(event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
deleteComment($(this).attr('id').substring(2));
|
deleteComment($(this).attr('id').substring(2));
|
||||||
});
|
});
|
||||||
$('a.comment-markup').live("click", function(event) {
|
$(document).on("click", 'a.comment-markup', function(event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
toggleCommentMarkupBox($(this).attr('id').substring(2));
|
toggleCommentMarkupBox($(this).attr('id').substring(2));
|
||||||
});
|
});
|
||||||
|
@ -700,8 +700,8 @@
|
||||||
(<a href="#" class="comment-markup" id="ab<%id%>">markup</a>):</p>\
|
(<a href="#" class="comment-markup" id="ab<%id%>">markup</a>):</p>\
|
||||||
<div class="comment-markup-box" id="mb<%id%>">\
|
<div class="comment-markup-box" id="mb<%id%>">\
|
||||||
reStructured text markup: <i>*emph*</i>, <b>**strong**</b>, \
|
reStructured text markup: <i>*emph*</i>, <b>**strong**</b>, \
|
||||||
<tt>``code``</tt>, \
|
<code>``code``</code>, \
|
||||||
code blocks: <tt>::</tt> and an indented block after blank line</div>\
|
code blocks: <code>::</code> and an indented block after blank line</div>\
|
||||||
<form method="post" id="cf<%id%>" class="comment-form" action="">\
|
<form method="post" id="cf<%id%>" class="comment-form" action="">\
|
||||||
<textarea name="comment" cols="80"></textarea>\
|
<textarea name="comment" cols="80"></textarea>\
|
||||||
<p class="propose-button">\
|
<p class="propose-button">\
|
||||||
|
|
|
@ -1,7 +1,4 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
|
||||||
|
@ -12,12 +9,12 @@
|
||||||
|
|
||||||
<title>Index — pokedex 0.1 documentation</title>
|
<title>Index — pokedex 0.1 documentation</title>
|
||||||
|
|
||||||
<link rel="stylesheet" href="_static/default.css" type="text/css" />
|
<link rel="stylesheet" href="_static/classic.css" type="text/css" />
|
||||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var DOCUMENTATION_OPTIONS = {
|
var DOCUMENTATION_OPTIONS = {
|
||||||
URL_ROOT: '',
|
URL_ROOT: './',
|
||||||
VERSION: '0.1',
|
VERSION: '0.1',
|
||||||
COLLAPSE_INDEX: false,
|
COLLAPSE_INDEX: false,
|
||||||
FILE_SUFFIX: '.html',
|
FILE_SUFFIX: '.html',
|
||||||
|
@ -29,8 +26,8 @@
|
||||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||||
<link rel="top" title="pokedex 0.1 documentation" href="index.html" />
|
<link rel="top" title="pokedex 0.1 documentation" href="index.html" />
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body role="document">
|
||||||
<div class="related">
|
<div class="related" role="navigation" aria-label="related navigation">
|
||||||
<h3>Navigation</h3>
|
<h3>Navigation</h3>
|
||||||
<ul>
|
<ul>
|
||||||
<li class="right" style="margin-right: 10px">
|
<li class="right" style="margin-right: 10px">
|
||||||
|
@ -39,14 +36,14 @@
|
||||||
<li class="right" >
|
<li class="right" >
|
||||||
<a href="py-modindex.html" title="Python Module Index"
|
<a href="py-modindex.html" title="Python Module Index"
|
||||||
>modules</a> |</li>
|
>modules</a> |</li>
|
||||||
<li><a href="index.html">pokedex 0.1 documentation</a> »</li>
|
<li class="nav-item nav-item-0"><a href="index.html">pokedex 0.1 documentation</a> »</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="document">
|
<div class="document">
|
||||||
<div class="documentwrapper">
|
<div class="documentwrapper">
|
||||||
<div class="bodywrapper">
|
<div class="bodywrapper">
|
||||||
<div class="body">
|
<div class="body" role="main">
|
||||||
|
|
||||||
|
|
||||||
<h1 id="index">Index</h1>
|
<h1 id="index">Index</h1>
|
||||||
|
@ -124,6 +121,10 @@
|
||||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||||
<td style="width: 33%" valign="top"><dl>
|
<td style="width: 33%" valign="top"><dl>
|
||||||
|
|
||||||
|
<dt><a href="main-tables.html#pokedex.db.tables.Characteristic">Characteristic (mapped class)</a>
|
||||||
|
</dt>
|
||||||
|
|
||||||
|
|
||||||
<dt><a href="usage.html#pokedex.db.connect">connect() (in module pokedex.db)</a>
|
<dt><a href="usage.html#pokedex.db.connect">connect() (in module pokedex.db)</a>
|
||||||
</dt>
|
</dt>
|
||||||
|
|
||||||
|
@ -175,12 +176,12 @@
|
||||||
<dt><a href="main-tables.html#pokedex.db.tables.ConquestPokemonStat">ConquestPokemonStat (mapped class)</a>
|
<dt><a href="main-tables.html#pokedex.db.tables.ConquestPokemonStat">ConquestPokemonStat (mapped class)</a>
|
||||||
</dt>
|
</dt>
|
||||||
|
|
||||||
|
</dl></td>
|
||||||
|
<td style="width: 33%" valign="top"><dl>
|
||||||
|
|
||||||
<dt><a href="main-tables.html#pokedex.db.tables.ConquestStat">ConquestStat (mapped class)</a>
|
<dt><a href="main-tables.html#pokedex.db.tables.ConquestStat">ConquestStat (mapped class)</a>
|
||||||
</dt>
|
</dt>
|
||||||
|
|
||||||
</dl></td>
|
|
||||||
<td style="width: 33%" valign="top"><dl>
|
|
||||||
|
|
||||||
<dt><a href="main-tables.html#pokedex.db.tables.ConquestTransformationPokemon">ConquestTransformationPokemon (mapped class)</a>
|
<dt><a href="main-tables.html#pokedex.db.tables.ConquestTransformationPokemon">ConquestTransformationPokemon (mapped class)</a>
|
||||||
</dt>
|
</dt>
|
||||||
|
@ -602,6 +603,12 @@
|
||||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||||
<td style="width: 33%" valign="top"><dl>
|
<td style="width: 33%" valign="top"><dl>
|
||||||
|
|
||||||
|
<dt><a href="main-tables.html#pokedex.db.tables.MoveMeta.recoil">recoil (pokedex.db.tables.MoveMeta attribute)</a>
|
||||||
|
</dt>
|
||||||
|
|
||||||
|
</dl></td>
|
||||||
|
<td style="width: 33%" valign="top"><dl>
|
||||||
|
|
||||||
<dt><a href="main-tables.html#pokedex.db.tables.Region">Region (mapped class)</a>
|
<dt><a href="main-tables.html#pokedex.db.tables.Region">Region (mapped class)</a>
|
||||||
</dt>
|
</dt>
|
||||||
|
|
||||||
|
@ -626,10 +633,6 @@
|
||||||
</dl></td>
|
</dl></td>
|
||||||
<td style="width: 33%" valign="top"><dl>
|
<td style="width: 33%" valign="top"><dl>
|
||||||
|
|
||||||
<dt><a href="main-tables.html#pokedex.db.tables.StatHint">StatHint (mapped class)</a>
|
|
||||||
</dt>
|
|
||||||
|
|
||||||
|
|
||||||
<dt><a href="main-tables.html#pokedex.db.tables.SuperContestCombo">SuperContestCombo (mapped class)</a>
|
<dt><a href="main-tables.html#pokedex.db.tables.SuperContestCombo">SuperContestCombo (mapped class)</a>
|
||||||
</dt>
|
</dt>
|
||||||
|
|
||||||
|
@ -689,12 +692,12 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="sphinxsidebar">
|
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||||
<div class="sphinxsidebarwrapper">
|
<div class="sphinxsidebarwrapper">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div id="searchbox" style="display: none">
|
<div id="searchbox" style="display: none" role="search">
|
||||||
<h3>Quick search</h3>
|
<h3>Quick search</h3>
|
||||||
<form class="search" action="search.html" method="get">
|
<form class="search" action="search.html" method="get">
|
||||||
<input type="text" name="q" />
|
<input type="text" name="q" />
|
||||||
|
@ -711,7 +714,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="clearer"></div>
|
<div class="clearer"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="related">
|
<div class="related" role="navigation" aria-label="related navigation">
|
||||||
<h3>Navigation</h3>
|
<h3>Navigation</h3>
|
||||||
<ul>
|
<ul>
|
||||||
<li class="right" style="margin-right: 10px">
|
<li class="right" style="margin-right: 10px">
|
||||||
|
@ -720,11 +723,11 @@
|
||||||
<li class="right" >
|
<li class="right" >
|
||||||
<a href="py-modindex.html" title="Python Module Index"
|
<a href="py-modindex.html" title="Python Module Index"
|
||||||
>modules</a> |</li>
|
>modules</a> |</li>
|
||||||
<li><a href="index.html">pokedex 0.1 documentation</a> »</li>
|
<li class="nav-item nav-item-0"><a href="index.html">pokedex 0.1 documentation</a> »</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="footer">
|
<div class="footer" role="contentinfo">
|
||||||
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
|
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.3.1.
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
46
index.html
|
@ -1,5 +1,3 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
|
||||||
|
@ -10,12 +8,12 @@
|
||||||
|
|
||||||
<title>The pokedex documentation — pokedex 0.1 documentation</title>
|
<title>The pokedex documentation — pokedex 0.1 documentation</title>
|
||||||
|
|
||||||
<link rel="stylesheet" href="_static/default.css" type="text/css" />
|
<link rel="stylesheet" href="_static/classic.css" type="text/css" />
|
||||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var DOCUMENTATION_OPTIONS = {
|
var DOCUMENTATION_OPTIONS = {
|
||||||
URL_ROOT: '',
|
URL_ROOT: './',
|
||||||
VERSION: '0.1',
|
VERSION: '0.1',
|
||||||
COLLAPSE_INDEX: false,
|
COLLAPSE_INDEX: false,
|
||||||
FILE_SUFFIX: '.html',
|
FILE_SUFFIX: '.html',
|
||||||
|
@ -28,8 +26,8 @@
|
||||||
<link rel="top" title="pokedex 0.1 documentation" href="#" />
|
<link rel="top" title="pokedex 0.1 documentation" href="#" />
|
||||||
<link rel="next" title="Installing the pokedex library" href="installing.html" />
|
<link rel="next" title="Installing the pokedex library" href="installing.html" />
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body role="document">
|
||||||
<div class="related">
|
<div class="related" role="navigation" aria-label="related navigation">
|
||||||
<h3>Navigation</h3>
|
<h3>Navigation</h3>
|
||||||
<ul>
|
<ul>
|
||||||
<li class="right" style="margin-right: 10px">
|
<li class="right" style="margin-right: 10px">
|
||||||
|
@ -41,14 +39,14 @@
|
||||||
<li class="right" >
|
<li class="right" >
|
||||||
<a href="installing.html" title="Installing the pokedex library"
|
<a href="installing.html" title="Installing the pokedex library"
|
||||||
accesskey="N">next</a> |</li>
|
accesskey="N">next</a> |</li>
|
||||||
<li><a href="#">pokedex 0.1 documentation</a> »</li>
|
<li class="nav-item nav-item-0"><a href="#">pokedex 0.1 documentation</a> »</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="document">
|
<div class="document">
|
||||||
<div class="documentwrapper">
|
<div class="documentwrapper">
|
||||||
<div class="bodywrapper">
|
<div class="bodywrapper">
|
||||||
<div class="body">
|
<div class="body" role="main">
|
||||||
|
|
||||||
<div class="section" id="the-pokedex-documentation">
|
<div class="section" id="the-pokedex-documentation">
|
||||||
<h1>The pokedex documentation<a class="headerlink" href="#the-pokedex-documentation" title="Permalink to this headline">¶</a></h1>
|
<h1>The pokedex documentation<a class="headerlink" href="#the-pokedex-documentation" title="Permalink to this headline">¶</a></h1>
|
||||||
|
@ -82,8 +80,8 @@
|
||||||
<div class="section" id="indices-and-tables">
|
<div class="section" id="indices-and-tables">
|
||||||
<h1>Indices and tables<a class="headerlink" href="#indices-and-tables" title="Permalink to this headline">¶</a></h1>
|
<h1>Indices and tables<a class="headerlink" href="#indices-and-tables" title="Permalink to this headline">¶</a></h1>
|
||||||
<ul class="simple">
|
<ul class="simple">
|
||||||
<li><a class="reference internal" href="genindex.html"><em>Index</em></a></li>
|
<li><a class="reference internal" href="genindex.html"><span>Index</span></a></li>
|
||||||
<li><a class="reference internal" href="search.html"><em>Search Page</em></a></li>
|
<li><a class="reference internal" href="search.html"><span>Search Page</span></a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -91,25 +89,25 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="sphinxsidebar">
|
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||||
<div class="sphinxsidebarwrapper">
|
<div class="sphinxsidebarwrapper">
|
||||||
<h3><a href="#">Table Of Contents</a></h3>
|
<h3><a href="#">Table Of Contents</a></h3>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a class="reference internal" href="#">The pokedex documentation</a><ul>
|
<li><a class="reference internal" href="#">The pokedex documentation</a></li>
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li><a class="reference internal" href="#indices-and-tables">Indices and tables</a></li>
|
<li><a class="reference internal" href="#indices-and-tables">Indices and tables</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<h4>Next topic</h4>
|
<h4>Next topic</h4>
|
||||||
<p class="topless"><a href="installing.html"
|
<p class="topless"><a href="installing.html"
|
||||||
title="next chapter">Installing the pokedex library</a></p>
|
title="next chapter">Installing the pokedex library</a></p>
|
||||||
<h3>This Page</h3>
|
<div role="note" aria-label="source link">
|
||||||
<ul class="this-page-menu">
|
<h3>This Page</h3>
|
||||||
<li><a href="_sources/index.txt"
|
<ul class="this-page-menu">
|
||||||
rel="nofollow">Show Source</a></li>
|
<li><a href="_sources/index.txt"
|
||||||
</ul>
|
rel="nofollow">Show Source</a></li>
|
||||||
<div id="searchbox" style="display: none">
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div id="searchbox" style="display: none" role="search">
|
||||||
<h3>Quick search</h3>
|
<h3>Quick search</h3>
|
||||||
<form class="search" action="search.html" method="get">
|
<form class="search" action="search.html" method="get">
|
||||||
<input type="text" name="q" />
|
<input type="text" name="q" />
|
||||||
|
@ -126,7 +124,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="clearer"></div>
|
<div class="clearer"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="related">
|
<div class="related" role="navigation" aria-label="related navigation">
|
||||||
<h3>Navigation</h3>
|
<h3>Navigation</h3>
|
||||||
<ul>
|
<ul>
|
||||||
<li class="right" style="margin-right: 10px">
|
<li class="right" style="margin-right: 10px">
|
||||||
|
@ -138,11 +136,11 @@
|
||||||
<li class="right" >
|
<li class="right" >
|
||||||
<a href="installing.html" title="Installing the pokedex library"
|
<a href="installing.html" title="Installing the pokedex library"
|
||||||
>next</a> |</li>
|
>next</a> |</li>
|
||||||
<li><a href="#">pokedex 0.1 documentation</a> »</li>
|
<li class="nav-item nav-item-0"><a href="#">pokedex 0.1 documentation</a> »</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="footer">
|
<div class="footer" role="contentinfo">
|
||||||
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
|
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.3.1.
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
|
@ -1,5 +1,3 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
|
||||||
|
@ -10,12 +8,12 @@
|
||||||
|
|
||||||
<title>Installing the pokedex library — pokedex 0.1 documentation</title>
|
<title>Installing the pokedex library — pokedex 0.1 documentation</title>
|
||||||
|
|
||||||
<link rel="stylesheet" href="_static/default.css" type="text/css" />
|
<link rel="stylesheet" href="_static/classic.css" type="text/css" />
|
||||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var DOCUMENTATION_OPTIONS = {
|
var DOCUMENTATION_OPTIONS = {
|
||||||
URL_ROOT: '',
|
URL_ROOT: './',
|
||||||
VERSION: '0.1',
|
VERSION: '0.1',
|
||||||
COLLAPSE_INDEX: false,
|
COLLAPSE_INDEX: false,
|
||||||
FILE_SUFFIX: '.html',
|
FILE_SUFFIX: '.html',
|
||||||
|
@ -29,8 +27,8 @@
|
||||||
<link rel="next" title="Using pokedex" href="usage.html" />
|
<link rel="next" title="Using pokedex" href="usage.html" />
|
||||||
<link rel="prev" title="The pokedex documentation" href="index.html" />
|
<link rel="prev" title="The pokedex documentation" href="index.html" />
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body role="document">
|
||||||
<div class="related">
|
<div class="related" role="navigation" aria-label="related navigation">
|
||||||
<h3>Navigation</h3>
|
<h3>Navigation</h3>
|
||||||
<ul>
|
<ul>
|
||||||
<li class="right" style="margin-right: 10px">
|
<li class="right" style="margin-right: 10px">
|
||||||
|
@ -45,29 +43,30 @@
|
||||||
<li class="right" >
|
<li class="right" >
|
||||||
<a href="index.html" title="The pokedex documentation"
|
<a href="index.html" title="The pokedex documentation"
|
||||||
accesskey="P">previous</a> |</li>
|
accesskey="P">previous</a> |</li>
|
||||||
<li><a href="index.html">pokedex 0.1 documentation</a> »</li>
|
<li class="nav-item nav-item-0"><a href="index.html">pokedex 0.1 documentation</a> »</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="document">
|
<div class="document">
|
||||||
<div class="documentwrapper">
|
<div class="documentwrapper">
|
||||||
<div class="bodywrapper">
|
<div class="bodywrapper">
|
||||||
<div class="body">
|
<div class="body" role="main">
|
||||||
|
|
||||||
<div class="section" id="installing-the-pokedex-library">
|
<div class="section" id="installing-the-pokedex-library">
|
||||||
<h1>Installing the pokedex library<a class="headerlink" href="#installing-the-pokedex-library" title="Permalink to this headline">¶</a></h1>
|
<h1>Installing the pokedex library<a class="headerlink" href="#installing-the-pokedex-library" title="Permalink to this headline">¶</a></h1>
|
||||||
<div class="section" id="quick-startup-with-ubuntu-debian-like-systems">
|
<div class="section" id="quick-startup-with-ubuntu-debian-like-systems">
|
||||||
<h2>Quick startup with Ubuntu/Debian-like systems<a class="headerlink" href="#quick-startup-with-ubuntu-debian-like-systems" title="Permalink to this headline">¶</a></h2>
|
<h2>Quick startup with Ubuntu/Debian-like systems<a class="headerlink" href="#quick-startup-with-ubuntu-debian-like-systems" title="Permalink to this headline">¶</a></h2>
|
||||||
<p>Run the following from an empty directory:</p>
|
<p>Run the following from an empty directory:</p>
|
||||||
<div class="highlight-python"><pre>$ sudo apt-get install git python python-pip python-sqlalchemy
|
<div class="highlight-python"><div class="highlight"><pre>$ sudo apt-get install git python python-pip python-sqlalchemy
|
||||||
$ git clone git://github.com/veekun/pokedex.git
|
$ git clone git://github.com/veekun/pokedex.git
|
||||||
$ pip install -E env -e pokedex
|
$ pip install -E env -e pokedex
|
||||||
$ source env/bin/activate
|
$ source env/bin/activate
|
||||||
(env)$ pokedex setup -v
|
(env)$ pokedex setup -v
|
||||||
(env)$ pokedex lookup eevee</pre>
|
(env)$ pokedex lookup eevee
|
||||||
|
</pre></div>
|
||||||
</div>
|
</div>
|
||||||
<p>If it all goes smoothly, you can now use <tt class="docutils literal"><span class="pre">env/bin/pokedex</span></tt>, the command-line
|
<p>If it all goes smoothly, you can now use <code class="docutils literal"><span class="pre">env/bin/pokedex</span></code>, the command-line
|
||||||
tool, and <tt class="docutils literal"><span class="pre">env/bin/python</span></tt>, a Python interpreter configured to use the
|
tool, and <code class="docutils literal"><span class="pre">env/bin/python</span></code>, a Python interpreter configured to use the
|
||||||
pokedex library.</p>
|
pokedex library.</p>
|
||||||
<p>That is all you need. Feel free to skip the rest of this chapter if you’re not
|
<p>That is all you need. Feel free to skip the rest of this chapter if you’re not
|
||||||
interested in the details.</p>
|
interested in the details.</p>
|
||||||
|
@ -77,7 +76,8 @@ interested in the details.</p>
|
||||||
<div class="section" id="linux">
|
<div class="section" id="linux">
|
||||||
<h3>Linux<a class="headerlink" href="#linux" title="Permalink to this headline">¶</a></h3>
|
<h3>Linux<a class="headerlink" href="#linux" title="Permalink to this headline">¶</a></h3>
|
||||||
<p>Ubuntu/Debian users should run the following:</p>
|
<p>Ubuntu/Debian users should run the following:</p>
|
||||||
<div class="highlight-python"><pre>$ sudo apt-get install git python python-pip</pre>
|
<div class="highlight-python"><div class="highlight"><pre>$ sudo apt-get install git python python-pip
|
||||||
|
</pre></div>
|
||||||
</div>
|
</div>
|
||||||
<p>With other Linuxes, install the packages for git, python (2.6 or 2.7,
|
<p>With other Linuxes, install the packages for git, python (2.6 or 2.7,
|
||||||
<em>not</em> 3.x), and python-pip.</p>
|
<em>not</em> 3.x), and python-pip.</p>
|
||||||
|
@ -106,8 +106,9 @@ will install pokedex’s own copy anyway.)</p>
|
||||||
<div class="section" id="getting-and-installing-pokedex">
|
<div class="section" id="getting-and-installing-pokedex">
|
||||||
<h2>Getting and installing pokedex<a class="headerlink" href="#getting-and-installing-pokedex" title="Permalink to this headline">¶</a></h2>
|
<h2>Getting and installing pokedex<a class="headerlink" href="#getting-and-installing-pokedex" title="Permalink to this headline">¶</a></h2>
|
||||||
<p>Run the following from an empty directory:</p>
|
<p>Run the following from an empty directory:</p>
|
||||||
<div class="highlight-python"><pre>$ git clone git://github.com/veekun/pokedex.git
|
<div class="highlight-python"><div class="highlight"><pre>$ git clone git://github.com/veekun/pokedex.git
|
||||||
$ pip install -E env -e pokedex</pre>
|
$ pip install -E env -e pokedex
|
||||||
|
</pre></div>
|
||||||
</div>
|
</div>
|
||||||
<p>This will give you two directories: pokedex (containing the source code and
|
<p>This will give you two directories: pokedex (containing the source code and
|
||||||
data), and env (a <a class="reference external" href="http://www.virtualenv.org/en/latest/">virtualenv</a>).</p>
|
data), and env (a <a class="reference external" href="http://www.virtualenv.org/en/latest/">virtualenv</a>).</p>
|
||||||
|
@ -115,51 +116,54 @@ data), and env (a <a class="reference external" href="http://www.virtualenv.org/
|
||||||
<ul class="simple">
|
<ul class="simple">
|
||||||
<li>pokedex: The pokedex program</li>
|
<li>pokedex: The pokedex program</li>
|
||||||
<li>python: A copy of Python that knows about pokedex and its prerequisites.</li>
|
<li>python: A copy of Python that knows about pokedex and its prerequisites.</li>
|
||||||
<li>activate: Typing <tt class="docutils literal"><span class="pre">source</span> <span class="pre">env/bin/activate</span></tt> in a shell will put
|
<li>activate: Typing <code class="docutils literal"><span class="pre">source</span> <span class="pre">env/bin/activate</span></code> in a shell will put
|
||||||
pokedex and our bin/python on the $PATH, and generally set things up to work
|
pokedex and our bin/python on the $PATH, and generally set things up to work
|
||||||
with them. Your prompt will change to let you know of this. You can end such
|
with them. Your prompt will change to let you know of this. You can end such
|
||||||
a session by typing <tt class="docutils literal"><span class="pre">deactivate</span></tt>.</li>
|
a session by typing <code class="docutils literal"><span class="pre">deactivate</span></code>.</li>
|
||||||
</ul>
|
</ul>
|
||||||
<p>This documentation will assume that you’ve activated the virtualenv, so
|
<p>This documentation will assume that you’ve activated the virtualenv, so
|
||||||
<tt class="docutils literal"><span class="pre">pokedex</span></tt> means <tt class="docutils literal"><span class="pre">env/bin/pokedex</span></tt>.</p>
|
<code class="docutils literal"><span class="pre">pokedex</span></code> means <code class="docutils literal"><span class="pre">env/bin/pokedex</span></code>.</p>
|
||||||
<div class="section" id="advanced">
|
<div class="section" id="advanced">
|
||||||
<h3>Advanced<a class="headerlink" href="#advanced" title="Permalink to this headline">¶</a></h3>
|
<h3>Advanced<a class="headerlink" href="#advanced" title="Permalink to this headline">¶</a></h3>
|
||||||
<p>You can of course install into an existing virtualenv, by either using its pip
|
<p>You can of course install into an existing virtualenv, by either using its pip
|
||||||
and leaving out the <tt class="docutils literal"><span class="pre">-E</span> <span class="pre">env</span></tt>, or running the setup script directly:</p>
|
and leaving out the <code class="docutils literal"><span class="pre">-E</span> <span class="pre">env</span></code>, or running the setup script directly:</p>
|
||||||
<div class="highlight-python"><pre>(anotherenv)$ cd pokedex
|
<div class="highlight-python"><div class="highlight"><pre>(anotherenv)$ cd pokedex
|
||||||
(anotherenv)pokedex$ python setup.py develop</pre>
|
(anotherenv)pokedex$ python setup.py develop
|
||||||
|
</pre></div>
|
||||||
</div>
|
</div>
|
||||||
<p>It is also possible to install pokedex system-wide. There are problems with
|
<p>It is also possible to install pokedex system-wide. There are problems with
|
||||||
that. Don’t do it. The only time you need <tt class="docutils literal"><span class="pre">sudo</span></tt> is for getting the
|
that. Don’t do it. The only time you need <code class="docutils literal"><span class="pre">sudo</span></code> is for getting the
|
||||||
prerequisites.</p>
|
prerequisites.</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="section" id="loading-the-database">
|
<div class="section" id="loading-the-database">
|
||||||
<h2>Loading the database<a class="headerlink" href="#loading-the-database" title="Permalink to this headline">¶</a></h2>
|
<h2>Loading the database<a class="headerlink" href="#loading-the-database" title="Permalink to this headline">¶</a></h2>
|
||||||
<p>Before you can do anything useful with pokedex, you need to load the database:</p>
|
<p>Before you can do anything useful with pokedex, you need to load the database:</p>
|
||||||
<div class="highlight-python"><pre>$ pokedex setup -v</pre>
|
<div class="highlight-python"><div class="highlight"><pre>$ pokedex setup -v
|
||||||
|
</pre></div>
|
||||||
</div>
|
</div>
|
||||||
<p>This will load the data into a default SQLite database and create a default
|
<p>This will load the data into a default SQLite database and create a default
|
||||||
Whoosh index.</p>
|
Whoosh index.</p>
|
||||||
<div class="section" id="id2">
|
<div class="section" id="id2">
|
||||||
<h3>Advanced<a class="headerlink" href="#id2" title="Permalink to this headline">¶</a></h3>
|
<h3>Advanced<a class="headerlink" href="#id2" title="Permalink to this headline">¶</a></h3>
|
||||||
<p>If you want to use another database, make sure you have the corresponding
|
<p>If you want to use another database, make sure you have the corresponding
|
||||||
<a class="reference external" href="http://www.sqlalchemy.org/docs/core/engines.html">SQLAlchemy engine</a> for it and either use the <tt class="docutils literal"><span class="pre">-e</span></tt> switch, (e.g.
|
<a class="reference external" href="http://www.sqlalchemy.org/docs/core/engines.html">SQLAlchemy engine</a> for it and either use the <code class="docutils literal"><span class="pre">-e</span></code> switch, (e.g.
|
||||||
<tt class="docutils literal"><span class="pre">-e</span> <span class="pre">postgresql://@/pokedex</span></tt>), or set the <tt class="docutils literal"><span class="pre">POKEDEX_DB_ENGINE</span></tt> environment
|
<code class="docutils literal"><span class="pre">-e</span> <span class="pre">postgresql://@/pokedex</span></code>), or set the <code class="docutils literal"><span class="pre">POKEDEX_DB_ENGINE</span></code> environment
|
||||||
variable.</p>
|
variable.</p>
|
||||||
<p>To use another lookup index directory, specify it with <tt class="docutils literal"><span class="pre">-i</span></tt> or the
|
<p>To use another lookup index directory, specify it with <code class="docutils literal"><span class="pre">-i</span></code> or the
|
||||||
<tt class="docutils literal"><span class="pre">POKEDEX_INDEX_DIR</span></tt> variable.</p>
|
<code class="docutils literal"><span class="pre">POKEDEX_INDEX_DIR</span></code> variable.</p>
|
||||||
<p>Make sure you always use the same options whenever you use pokedex.</p>
|
<p>Make sure you always use the same options whenever you use pokedex.</p>
|
||||||
<p>If you’re confused about what pokedex thinks its settings are, check
|
<p>If you’re confused about what pokedex thinks its settings are, check
|
||||||
<tt class="docutils literal"><span class="pre">pokedex</span> <span class="pre">status</span></tt>.</p>
|
<code class="docutils literal"><span class="pre">pokedex</span> <span class="pre">status</span></code>.</p>
|
||||||
<p>See <tt class="docutils literal"><span class="pre">pokedex</span> <span class="pre">help</span></tt> for even more options.</p>
|
<p>See <code class="docutils literal"><span class="pre">pokedex</span> <span class="pre">help</span></code> for even more options.</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="section" id="all-done">
|
<div class="section" id="all-done">
|
||||||
<h2>All done<a class="headerlink" href="#all-done" title="Permalink to this headline">¶</a></h2>
|
<h2>All done<a class="headerlink" href="#all-done" title="Permalink to this headline">¶</a></h2>
|
||||||
<p>To verify that all went smoothly, check that the pokedex tool finds your
|
<p>To verify that all went smoothly, check that the pokedex tool finds your
|
||||||
favorite pokémon:</p>
|
favorite pokémon:</p>
|
||||||
<div class="highlight-python"><pre>$ pokedex lookup eevee</pre>
|
<div class="highlight-python"><div class="highlight"><pre>$ pokedex lookup eevee
|
||||||
|
</pre></div>
|
||||||
</div>
|
</div>
|
||||||
<p>Yes, that was a bit anti-climatic. The command-line tool doesn’t do much,
|
<p>Yes, that was a bit anti-climatic. The command-line tool doesn’t do much,
|
||||||
currently.</p>
|
currently.</p>
|
||||||
|
@ -179,7 +183,7 @@ use it, so naturally he can’t write instructions for it.</td></tr>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="sphinxsidebar">
|
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||||
<div class="sphinxsidebarwrapper">
|
<div class="sphinxsidebarwrapper">
|
||||||
<h3><a href="index.html">Table Of Contents</a></h3>
|
<h3><a href="index.html">Table Of Contents</a></h3>
|
||||||
<ul>
|
<ul>
|
||||||
|
@ -209,12 +213,14 @@ use it, so naturally he can’t write instructions for it.</td></tr>
|
||||||
<h4>Next topic</h4>
|
<h4>Next topic</h4>
|
||||||
<p class="topless"><a href="usage.html"
|
<p class="topless"><a href="usage.html"
|
||||||
title="next chapter">Using pokedex</a></p>
|
title="next chapter">Using pokedex</a></p>
|
||||||
<h3>This Page</h3>
|
<div role="note" aria-label="source link">
|
||||||
<ul class="this-page-menu">
|
<h3>This Page</h3>
|
||||||
<li><a href="_sources/installing.txt"
|
<ul class="this-page-menu">
|
||||||
rel="nofollow">Show Source</a></li>
|
<li><a href="_sources/installing.txt"
|
||||||
</ul>
|
rel="nofollow">Show Source</a></li>
|
||||||
<div id="searchbox" style="display: none">
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div id="searchbox" style="display: none" role="search">
|
||||||
<h3>Quick search</h3>
|
<h3>Quick search</h3>
|
||||||
<form class="search" action="search.html" method="get">
|
<form class="search" action="search.html" method="get">
|
||||||
<input type="text" name="q" />
|
<input type="text" name="q" />
|
||||||
|
@ -231,7 +237,7 @@ use it, so naturally he can’t write instructions for it.</td></tr>
|
||||||
</div>
|
</div>
|
||||||
<div class="clearer"></div>
|
<div class="clearer"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="related">
|
<div class="related" role="navigation" aria-label="related navigation">
|
||||||
<h3>Navigation</h3>
|
<h3>Navigation</h3>
|
||||||
<ul>
|
<ul>
|
||||||
<li class="right" style="margin-right: 10px">
|
<li class="right" style="margin-right: 10px">
|
||||||
|
@ -246,11 +252,11 @@ use it, so naturally he can’t write instructions for it.</td></tr>
|
||||||
<li class="right" >
|
<li class="right" >
|
||||||
<a href="index.html" title="The pokedex documentation"
|
<a href="index.html" title="The pokedex documentation"
|
||||||
>previous</a> |</li>
|
>previous</a> |</li>
|
||||||
<li><a href="index.html">pokedex 0.1 documentation</a> »</li>
|
<li class="nav-item nav-item-0"><a href="index.html">pokedex 0.1 documentation</a> »</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="footer">
|
<div class="footer" role="contentinfo">
|
||||||
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
|
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.3.1.
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
1420
main-tables.html
BIN
objects.inv
|
@ -1,5 +1,3 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
|
||||||
|
@ -10,12 +8,12 @@
|
||||||
|
|
||||||
<title>Python Module Index — pokedex 0.1 documentation</title>
|
<title>Python Module Index — pokedex 0.1 documentation</title>
|
||||||
|
|
||||||
<link rel="stylesheet" href="_static/default.css" type="text/css" />
|
<link rel="stylesheet" href="_static/classic.css" type="text/css" />
|
||||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var DOCUMENTATION_OPTIONS = {
|
var DOCUMENTATION_OPTIONS = {
|
||||||
URL_ROOT: '',
|
URL_ROOT: './',
|
||||||
VERSION: '0.1',
|
VERSION: '0.1',
|
||||||
COLLAPSE_INDEX: false,
|
COLLAPSE_INDEX: false,
|
||||||
FILE_SUFFIX: '.html',
|
FILE_SUFFIX: '.html',
|
||||||
|
@ -30,8 +28,8 @@
|
||||||
|
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body role="document">
|
||||||
<div class="related">
|
<div class="related" role="navigation" aria-label="related navigation">
|
||||||
<h3>Navigation</h3>
|
<h3>Navigation</h3>
|
||||||
<ul>
|
<ul>
|
||||||
<li class="right" style="margin-right: 10px">
|
<li class="right" style="margin-right: 10px">
|
||||||
|
@ -40,14 +38,14 @@
|
||||||
<li class="right" >
|
<li class="right" >
|
||||||
<a href="#" title="Python Module Index"
|
<a href="#" title="Python Module Index"
|
||||||
>modules</a> |</li>
|
>modules</a> |</li>
|
||||||
<li><a href="index.html">pokedex 0.1 documentation</a> »</li>
|
<li class="nav-item nav-item-0"><a href="index.html">pokedex 0.1 documentation</a> »</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="document">
|
<div class="document">
|
||||||
<div class="documentwrapper">
|
<div class="documentwrapper">
|
||||||
<div class="bodywrapper">
|
<div class="bodywrapper">
|
||||||
<div class="body">
|
<div class="body" role="main">
|
||||||
|
|
||||||
|
|
||||||
<h1>Python Module Index</h1>
|
<h1>Python Module Index</h1>
|
||||||
|
@ -64,12 +62,12 @@
|
||||||
<td><img src="_static/minus.png" class="toggler"
|
<td><img src="_static/minus.png" class="toggler"
|
||||||
id="toggle-1" style="display: none" alt="-" /></td>
|
id="toggle-1" style="display: none" alt="-" /></td>
|
||||||
<td>
|
<td>
|
||||||
<tt class="xref">pokedex</tt></td><td>
|
<code class="xref">pokedex</code></td><td>
|
||||||
<em></em></td></tr>
|
<em></em></td></tr>
|
||||||
<tr class="cg-1">
|
<tr class="cg-1">
|
||||||
<td></td>
|
<td></td>
|
||||||
<td>
|
<td>
|
||||||
<a href="main-tables.html#module-pokedex.db.tables"><tt class="xref">pokedex.db.tables</tt></a></td><td>
|
<a href="main-tables.html#module-pokedex.db.tables"><code class="xref">pokedex.db.tables</code></a></td><td>
|
||||||
<em></em></td></tr>
|
<em></em></td></tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
@ -77,9 +75,9 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="sphinxsidebar">
|
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||||
<div class="sphinxsidebarwrapper">
|
<div class="sphinxsidebarwrapper">
|
||||||
<div id="searchbox" style="display: none">
|
<div id="searchbox" style="display: none" role="search">
|
||||||
<h3>Quick search</h3>
|
<h3>Quick search</h3>
|
||||||
<form class="search" action="search.html" method="get">
|
<form class="search" action="search.html" method="get">
|
||||||
<input type="text" name="q" />
|
<input type="text" name="q" />
|
||||||
|
@ -96,7 +94,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="clearer"></div>
|
<div class="clearer"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="related">
|
<div class="related" role="navigation" aria-label="related navigation">
|
||||||
<h3>Navigation</h3>
|
<h3>Navigation</h3>
|
||||||
<ul>
|
<ul>
|
||||||
<li class="right" style="margin-right: 10px">
|
<li class="right" style="margin-right: 10px">
|
||||||
|
@ -105,11 +103,11 @@
|
||||||
<li class="right" >
|
<li class="right" >
|
||||||
<a href="#" title="Python Module Index"
|
<a href="#" title="Python Module Index"
|
||||||
>modules</a> |</li>
|
>modules</a> |</li>
|
||||||
<li><a href="index.html">pokedex 0.1 documentation</a> »</li>
|
<li class="nav-item nav-item-0"><a href="index.html">pokedex 0.1 documentation</a> »</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="footer">
|
<div class="footer" role="contentinfo">
|
||||||
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
|
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.3.1.
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
40
schema.html
|
@ -1,5 +1,3 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
|
||||||
|
@ -10,12 +8,12 @@
|
||||||
|
|
||||||
<title>The database schema — pokedex 0.1 documentation</title>
|
<title>The database schema — pokedex 0.1 documentation</title>
|
||||||
|
|
||||||
<link rel="stylesheet" href="_static/default.css" type="text/css" />
|
<link rel="stylesheet" href="_static/classic.css" type="text/css" />
|
||||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var DOCUMENTATION_OPTIONS = {
|
var DOCUMENTATION_OPTIONS = {
|
||||||
URL_ROOT: '',
|
URL_ROOT: './',
|
||||||
VERSION: '0.1',
|
VERSION: '0.1',
|
||||||
COLLAPSE_INDEX: false,
|
COLLAPSE_INDEX: false,
|
||||||
FILE_SUFFIX: '.html',
|
FILE_SUFFIX: '.html',
|
||||||
|
@ -29,8 +27,8 @@
|
||||||
<link rel="next" title="The pokédex tables" href="main-tables.html" />
|
<link rel="next" title="The pokédex tables" href="main-tables.html" />
|
||||||
<link rel="prev" title="Using pokedex" href="usage.html" />
|
<link rel="prev" title="Using pokedex" href="usage.html" />
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body role="document">
|
||||||
<div class="related">
|
<div class="related" role="navigation" aria-label="related navigation">
|
||||||
<h3>Navigation</h3>
|
<h3>Navigation</h3>
|
||||||
<ul>
|
<ul>
|
||||||
<li class="right" style="margin-right: 10px">
|
<li class="right" style="margin-right: 10px">
|
||||||
|
@ -45,14 +43,14 @@
|
||||||
<li class="right" >
|
<li class="right" >
|
||||||
<a href="usage.html" title="Using pokedex"
|
<a href="usage.html" title="Using pokedex"
|
||||||
accesskey="P">previous</a> |</li>
|
accesskey="P">previous</a> |</li>
|
||||||
<li><a href="index.html">pokedex 0.1 documentation</a> »</li>
|
<li class="nav-item nav-item-0"><a href="index.html">pokedex 0.1 documentation</a> »</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="document">
|
<div class="document">
|
||||||
<div class="documentwrapper">
|
<div class="documentwrapper">
|
||||||
<div class="bodywrapper">
|
<div class="bodywrapper">
|
||||||
<div class="body">
|
<div class="body" role="main">
|
||||||
|
|
||||||
<div class="section" id="the-database-schema">
|
<div class="section" id="the-database-schema">
|
||||||
<h1>The database schema<a class="headerlink" href="#the-database-schema" title="Permalink to this headline">¶</a></h1>
|
<h1>The database schema<a class="headerlink" href="#the-database-schema" title="Permalink to this headline">¶</a></h1>
|
||||||
|
@ -190,7 +188,7 @@
|
||||||
<li class="toctree-l2"><a class="reference internal" href="main-tables.html#mics-tables">Mics tables</a><ul>
|
<li class="toctree-l2"><a class="reference internal" href="main-tables.html#mics-tables">Mics tables</a><ul>
|
||||||
<li class="toctree-l3"><a class="reference internal" href="main-tables.html#dex-table-experience">Experience</a></li>
|
<li class="toctree-l3"><a class="reference internal" href="main-tables.html#dex-table-experience">Experience</a></li>
|
||||||
<li class="toctree-l3"><a class="reference internal" href="main-tables.html#dex-table-palpark">PalPark</a></li>
|
<li class="toctree-l3"><a class="reference internal" href="main-tables.html#dex-table-palpark">PalPark</a></li>
|
||||||
<li class="toctree-l3"><a class="reference internal" href="main-tables.html#dex-table-stathint">StatHint</a></li>
|
<li class="toctree-l3"><a class="reference internal" href="main-tables.html#dex-table-characteristic">Characteristic</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li class="toctree-l2"><a class="reference internal" href="main-tables.html#conquest-tables">Conquest tables</a><ul>
|
<li class="toctree-l2"><a class="reference internal" href="main-tables.html#conquest-tables">Conquest tables</a><ul>
|
||||||
|
@ -229,7 +227,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="sphinxsidebar">
|
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||||
<div class="sphinxsidebarwrapper">
|
<div class="sphinxsidebarwrapper">
|
||||||
<h4>Previous topic</h4>
|
<h4>Previous topic</h4>
|
||||||
<p class="topless"><a href="usage.html"
|
<p class="topless"><a href="usage.html"
|
||||||
|
@ -237,12 +235,14 @@
|
||||||
<h4>Next topic</h4>
|
<h4>Next topic</h4>
|
||||||
<p class="topless"><a href="main-tables.html"
|
<p class="topless"><a href="main-tables.html"
|
||||||
title="next chapter">The pokédex tables</a></p>
|
title="next chapter">The pokédex tables</a></p>
|
||||||
<h3>This Page</h3>
|
<div role="note" aria-label="source link">
|
||||||
<ul class="this-page-menu">
|
<h3>This Page</h3>
|
||||||
<li><a href="_sources/schema.txt"
|
<ul class="this-page-menu">
|
||||||
rel="nofollow">Show Source</a></li>
|
<li><a href="_sources/schema.txt"
|
||||||
</ul>
|
rel="nofollow">Show Source</a></li>
|
||||||
<div id="searchbox" style="display: none">
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div id="searchbox" style="display: none" role="search">
|
||||||
<h3>Quick search</h3>
|
<h3>Quick search</h3>
|
||||||
<form class="search" action="search.html" method="get">
|
<form class="search" action="search.html" method="get">
|
||||||
<input type="text" name="q" />
|
<input type="text" name="q" />
|
||||||
|
@ -259,7 +259,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="clearer"></div>
|
<div class="clearer"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="related">
|
<div class="related" role="navigation" aria-label="related navigation">
|
||||||
<h3>Navigation</h3>
|
<h3>Navigation</h3>
|
||||||
<ul>
|
<ul>
|
||||||
<li class="right" style="margin-right: 10px">
|
<li class="right" style="margin-right: 10px">
|
||||||
|
@ -274,11 +274,11 @@
|
||||||
<li class="right" >
|
<li class="right" >
|
||||||
<a href="usage.html" title="Using pokedex"
|
<a href="usage.html" title="Using pokedex"
|
||||||
>previous</a> |</li>
|
>previous</a> |</li>
|
||||||
<li><a href="index.html">pokedex 0.1 documentation</a> »</li>
|
<li class="nav-item nav-item-0"><a href="index.html">pokedex 0.1 documentation</a> »</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="footer">
|
<div class="footer" role="contentinfo">
|
||||||
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
|
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.3.1.
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
26
search.html
|
@ -1,5 +1,3 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
|
||||||
|
@ -10,12 +8,12 @@
|
||||||
|
|
||||||
<title>Search — pokedex 0.1 documentation</title>
|
<title>Search — pokedex 0.1 documentation</title>
|
||||||
|
|
||||||
<link rel="stylesheet" href="_static/default.css" type="text/css" />
|
<link rel="stylesheet" href="_static/classic.css" type="text/css" />
|
||||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var DOCUMENTATION_OPTIONS = {
|
var DOCUMENTATION_OPTIONS = {
|
||||||
URL_ROOT: '',
|
URL_ROOT: './',
|
||||||
VERSION: '0.1',
|
VERSION: '0.1',
|
||||||
COLLAPSE_INDEX: false,
|
COLLAPSE_INDEX: false,
|
||||||
FILE_SUFFIX: '.html',
|
FILE_SUFFIX: '.html',
|
||||||
|
@ -30,11 +28,13 @@
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
jQuery(function() { Search.loadIndex("searchindex.js"); });
|
jQuery(function() { Search.loadIndex("searchindex.js"); });
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
<script type="text/javascript" id="searchindexloader"></script>
|
||||||
|
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body role="document">
|
||||||
<div class="related">
|
<div class="related" role="navigation" aria-label="related navigation">
|
||||||
<h3>Navigation</h3>
|
<h3>Navigation</h3>
|
||||||
<ul>
|
<ul>
|
||||||
<li class="right" style="margin-right: 10px">
|
<li class="right" style="margin-right: 10px">
|
||||||
|
@ -43,14 +43,14 @@
|
||||||
<li class="right" >
|
<li class="right" >
|
||||||
<a href="py-modindex.html" title="Python Module Index"
|
<a href="py-modindex.html" title="Python Module Index"
|
||||||
>modules</a> |</li>
|
>modules</a> |</li>
|
||||||
<li><a href="index.html">pokedex 0.1 documentation</a> »</li>
|
<li class="nav-item nav-item-0"><a href="index.html">pokedex 0.1 documentation</a> »</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="document">
|
<div class="document">
|
||||||
<div class="documentwrapper">
|
<div class="documentwrapper">
|
||||||
<div class="bodywrapper">
|
<div class="bodywrapper">
|
||||||
<div class="body">
|
<div class="body" role="main">
|
||||||
|
|
||||||
<h1 id="search-documentation">Search</h1>
|
<h1 id="search-documentation">Search</h1>
|
||||||
<div id="fallback" class="admonition warning">
|
<div id="fallback" class="admonition warning">
|
||||||
|
@ -79,13 +79,13 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="sphinxsidebar">
|
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||||
<div class="sphinxsidebarwrapper">
|
<div class="sphinxsidebarwrapper">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="clearer"></div>
|
<div class="clearer"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="related">
|
<div class="related" role="navigation" aria-label="related navigation">
|
||||||
<h3>Navigation</h3>
|
<h3>Navigation</h3>
|
||||||
<ul>
|
<ul>
|
||||||
<li class="right" style="margin-right: 10px">
|
<li class="right" style="margin-right: 10px">
|
||||||
|
@ -94,11 +94,11 @@
|
||||||
<li class="right" >
|
<li class="right" >
|
||||||
<a href="py-modindex.html" title="Python Module Index"
|
<a href="py-modindex.html" title="Python Module Index"
|
||||||
>modules</a> |</li>
|
>modules</a> |</li>
|
||||||
<li><a href="index.html">pokedex 0.1 documentation</a> »</li>
|
<li class="nav-item nav-item-0"><a href="index.html">pokedex 0.1 documentation</a> »</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="footer">
|
<div class="footer" role="contentinfo">
|
||||||
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
|
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.3.1.
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
80
usage.html
|
@ -1,5 +1,3 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
|
||||||
|
@ -10,12 +8,12 @@
|
||||||
|
|
||||||
<title>Using pokedex — pokedex 0.1 documentation</title>
|
<title>Using pokedex — pokedex 0.1 documentation</title>
|
||||||
|
|
||||||
<link rel="stylesheet" href="_static/default.css" type="text/css" />
|
<link rel="stylesheet" href="_static/classic.css" type="text/css" />
|
||||||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var DOCUMENTATION_OPTIONS = {
|
var DOCUMENTATION_OPTIONS = {
|
||||||
URL_ROOT: '',
|
URL_ROOT: './',
|
||||||
VERSION: '0.1',
|
VERSION: '0.1',
|
||||||
COLLAPSE_INDEX: false,
|
COLLAPSE_INDEX: false,
|
||||||
FILE_SUFFIX: '.html',
|
FILE_SUFFIX: '.html',
|
||||||
|
@ -29,8 +27,8 @@
|
||||||
<link rel="next" title="The database schema" href="schema.html" />
|
<link rel="next" title="The database schema" href="schema.html" />
|
||||||
<link rel="prev" title="Installing the pokedex library" href="installing.html" />
|
<link rel="prev" title="Installing the pokedex library" href="installing.html" />
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body role="document">
|
||||||
<div class="related">
|
<div class="related" role="navigation" aria-label="related navigation">
|
||||||
<h3>Navigation</h3>
|
<h3>Navigation</h3>
|
||||||
<ul>
|
<ul>
|
||||||
<li class="right" style="margin-right: 10px">
|
<li class="right" style="margin-right: 10px">
|
||||||
|
@ -45,14 +43,14 @@
|
||||||
<li class="right" >
|
<li class="right" >
|
||||||
<a href="installing.html" title="Installing the pokedex library"
|
<a href="installing.html" title="Installing the pokedex library"
|
||||||
accesskey="P">previous</a> |</li>
|
accesskey="P">previous</a> |</li>
|
||||||
<li><a href="index.html">pokedex 0.1 documentation</a> »</li>
|
<li class="nav-item nav-item-0"><a href="index.html">pokedex 0.1 documentation</a> »</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="document">
|
<div class="document">
|
||||||
<div class="documentwrapper">
|
<div class="documentwrapper">
|
||||||
<div class="bodywrapper">
|
<div class="bodywrapper">
|
||||||
<div class="body">
|
<div class="body" role="main">
|
||||||
|
|
||||||
<div class="section" id="using-pokedex">
|
<div class="section" id="using-pokedex">
|
||||||
<h1>Using pokedex<a class="headerlink" href="#using-pokedex" title="Permalink to this headline">¶</a></h1>
|
<h1>Using pokedex<a class="headerlink" href="#using-pokedex" title="Permalink to this headline">¶</a></h1>
|
||||||
|
@ -72,31 +70,31 @@ you’ll need to learn <a class="reference external" href="http://www.python
|
||||||
<div class="section" id="connecting">
|
<div class="section" id="connecting">
|
||||||
<h2>Connecting<a class="headerlink" href="#connecting" title="Permalink to this headline">¶</a></h2>
|
<h2>Connecting<a class="headerlink" href="#connecting" title="Permalink to this headline">¶</a></h2>
|
||||||
<p>To get information out of the Pokédex, you will need to create a
|
<p>To get information out of the Pokédex, you will need to create a
|
||||||
<tt class="xref py py-class docutils literal"><span class="pre">Session</span></tt>. To do that, use
|
<code class="xref py py-class docutils literal"><span class="pre">Session</span></code>. To do that, use
|
||||||
<a class="reference internal" href="#pokedex.db.connect" title="pokedex.db.connect"><tt class="xref py py-func docutils literal"><span class="pre">pokedex.db.connect()</span></tt></a>. For simple uses, you don’t need to give it any
|
<a class="reference internal" href="#pokedex.db.connect" title="pokedex.db.connect"><code class="xref py py-func docutils literal"><span class="pre">pokedex.db.connect()</span></code></a>. For simple uses, you don’t need to give it any
|
||||||
arguments: it uses the database that <tt class="docutils literal"><span class="pre">pokedex</span> <span class="pre">load</span></tt> fills up by default. If
|
arguments: it uses the database that <code class="docutils literal"><span class="pre">pokedex</span> <span class="pre">load</span></code> fills up by default. If
|
||||||
you need to select another database, give its URI as the first argument.</p>
|
you need to select another database, give its URI as the first argument.</p>
|
||||||
<p>The object <a class="reference internal" href="#pokedex.db.connect" title="pokedex.db.connect"><tt class="xref py py-func docutils literal"><span class="pre">connect()</span></tt></a> gives you is actually a
|
<p>The object <a class="reference internal" href="#pokedex.db.connect" title="pokedex.db.connect"><code class="xref py py-func docutils literal"><span class="pre">connect()</span></code></a> gives you is actually a
|
||||||
<a class="reference external" href="http://www.sqlalchemy.org/docs/orm/session.html#sqlalchemy.orm.session.Session" title="(in SQLAlchemy v0.9)"><tt class="xref py py-class docutils literal"><span class="pre">SQLAlchemy</span> <span class="pre">session</span></tt></a>, giving you the
|
<a class="reference external" href="http://www.sqlalchemy.org/docs/orm/session_api.html#sqlalchemy.orm.session.Session" title="(in SQLAlchemy v1.0)"><code class="xref py py-class docutils literal"><span class="pre">SQLAlchemy</span> <span class="pre">session</span></code></a>, giving you the
|
||||||
full power of SQLAlchemy for working with the data. We’ll cover some basics
|
full power of SQLAlchemy for working with the data. We’ll cover some basics
|
||||||
here, but if you intend to do some serious work, do read SQLAlchemy’s docs.</p>
|
here, but if you intend to do some serious work, do read SQLAlchemy’s docs.</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="section" id="pokedex-tables">
|
<div class="section" id="pokedex-tables">
|
||||||
<h2>Pokédex tables<a class="headerlink" href="#pokedex-tables" title="Permalink to this headline">¶</a></h2>
|
<h2>Pokédex tables<a class="headerlink" href="#pokedex-tables" title="Permalink to this headline">¶</a></h2>
|
||||||
<p>Data in the pokédex is organized in tables, defined in
|
<p>Data in the pokédex is organized in tables, defined in
|
||||||
<a class="reference internal" href="main-tables.html#module-pokedex.db.tables" title="pokedex.db.tables"><tt class="xref py py-mod docutils literal"><span class="pre">pokedex.db.tables</span></tt></a>.
|
<a class="reference internal" href="main-tables.html#module-pokedex.db.tables" title="pokedex.db.tables"><code class="xref py py-mod docutils literal"><span class="pre">pokedex.db.tables</span></code></a>.
|
||||||
There is quite a few or them. To get you started, here are a few common ones:</p>
|
There is quite a few or them. To get you started, here are a few common ones:</p>
|
||||||
<ul class="simple">
|
<ul class="simple">
|
||||||
<li><a class="reference internal" href="main-tables.html#pokedex.db.tables.PokemonSpecies" title="pokedex.db.tables.PokemonSpecies"><tt class="xref py py-class docutils literal"><span class="pre">PokemonSpecies</span></tt></a></li>
|
<li><a class="reference internal" href="main-tables.html#pokedex.db.tables.PokemonSpecies" title="pokedex.db.tables.PokemonSpecies"><code class="xref py py-class docutils literal"><span class="pre">PokemonSpecies</span></code></a></li>
|
||||||
<li><a class="reference internal" href="main-tables.html#pokedex.db.tables.Move" title="pokedex.db.tables.Move"><tt class="xref py py-class docutils literal"><span class="pre">Move</span></tt></a></li>
|
<li><a class="reference internal" href="main-tables.html#pokedex.db.tables.Move" title="pokedex.db.tables.Move"><code class="xref py py-class docutils literal"><span class="pre">Move</span></code></a></li>
|
||||||
<li><a class="reference internal" href="main-tables.html#pokedex.db.tables.Item" title="pokedex.db.tables.Item"><tt class="xref py py-class docutils literal"><span class="pre">Item</span></tt></a></li>
|
<li><a class="reference internal" href="main-tables.html#pokedex.db.tables.Item" title="pokedex.db.tables.Item"><code class="xref py py-class docutils literal"><span class="pre">Item</span></code></a></li>
|
||||||
<li><a class="reference internal" href="main-tables.html#pokedex.db.tables.Type" title="pokedex.db.tables.Type"><tt class="xref py py-class docutils literal"><span class="pre">Type</span></tt></a></li>
|
<li><a class="reference internal" href="main-tables.html#pokedex.db.tables.Type" title="pokedex.db.tables.Type"><code class="xref py py-class docutils literal"><span class="pre">Type</span></code></a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="section" id="getting-things">
|
<div class="section" id="getting-things">
|
||||||
<h2>Getting things<a class="headerlink" href="#getting-things" title="Permalink to this headline">¶</a></h2>
|
<h2>Getting things<a class="headerlink" href="#getting-things" title="Permalink to this headline">¶</a></h2>
|
||||||
<p>If you know what you want from the pokédex, you can use the
|
<p>If you know what you want from the pokédex, you can use the
|
||||||
<a class="reference internal" href="#pokedex.db.util.get" title="pokedex.db.util.get"><tt class="xref py py-func docutils literal"><span class="pre">pokedex.db.util.get()</span></tt></a> function. It looks up a thing in a table, based on
|
<a class="reference internal" href="#pokedex.db.util.get" title="pokedex.db.util.get"><code class="xref py py-func docutils literal"><span class="pre">pokedex.db.util.get()</span></code></a> function. It looks up a thing in a table, based on
|
||||||
its identifier, name, or ID, and returns it.</p>
|
its identifier, name, or ID, and returns it.</p>
|
||||||
<div class="highlight-python"><div class="highlight"><pre><span class="k">def</span> <span class="nf">print_pokemon</span><span class="p">(</span><span class="n">pokemon</span><span class="p">):</span>
|
<div class="highlight-python"><div class="highlight"><pre><span class="k">def</span> <span class="nf">print_pokemon</span><span class="p">(</span><span class="n">pokemon</span><span class="p">):</span>
|
||||||
<span class="k">print</span> <span class="s">u'{0.name}, the {0.genus} Pokemon'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">pokemon</span><span class="p">)</span>
|
<span class="k">print</span> <span class="s">u'{0.name}, the {0.genus} Pokemon'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">pokemon</span><span class="p">)</span>
|
||||||
|
@ -125,15 +123,15 @@ Fresh Water: $200
|
||||||
<div class="section" id="querying">
|
<div class="section" id="querying">
|
||||||
<h2>Querying<a class="headerlink" href="#querying" title="Permalink to this headline">¶</a></h2>
|
<h2>Querying<a class="headerlink" href="#querying" title="Permalink to this headline">¶</a></h2>
|
||||||
<p>So, how do you get data from the session? You use the session’s
|
<p>So, how do you get data from the session? You use the session’s
|
||||||
<a class="reference external" href="http://www.sqlalchemy.org/docs/orm/session.html#sqlalchemy.orm.session.Session.query" title="(in SQLAlchemy v0.9)"><tt class="xref py py-meth docutils literal"><span class="pre">query()</span></tt></a> method, and give it a pokédex
|
<a class="reference external" href="http://www.sqlalchemy.org/docs/orm/session_api.html#sqlalchemy.orm.session.Session.query" title="(in SQLAlchemy v1.0)"><code class="xref py py-meth docutils literal"><span class="pre">query()</span></code></a> method, and give it a pokédex
|
||||||
Table as an argument. This will give you a <a class="reference external" href="http://www.sqlalchemy.org/docs/orm/query.html#sqlalchemy.orm.query.Query" title="(in SQLAlchemy v0.9)"><tt class="xref py py-class docutils literal"><span class="pre">SQLAlchemy</span> <span class="pre">query</span></tt></a>.</p>
|
Table as an argument. This will give you a <a class="reference external" href="http://www.sqlalchemy.org/docs/orm/query.html#sqlalchemy.orm.query.Query" title="(in SQLAlchemy v1.0)"><code class="xref py py-class docutils literal"><span class="pre">SQLAlchemy</span> <span class="pre">query</span></code></a>.</p>
|
||||||
<div class="section" id="ordering">
|
<div class="section" id="ordering">
|
||||||
<h3>Ordering<a class="headerlink" href="#ordering" title="Permalink to this headline">¶</a></h3>
|
<h3>Ordering<a class="headerlink" href="#ordering" title="Permalink to this headline">¶</a></h3>
|
||||||
<p>As always with SQL, you should not rely on query results being in some
|
<p>As always with SQL, you should not rely on query results being in some
|
||||||
particular order – unless you have ordered the query first. This means that
|
particular order – unless you have ordered the query first. This means that
|
||||||
you’ll want to sort just about every query you will make.</p>
|
you’ll want to sort just about every query you will make.</p>
|
||||||
<p>For example, you can get a list of all pokémon species, sorted by their
|
<p>For example, you can get a list of all pokémon species, sorted by their
|
||||||
<tt class="xref py py-attr docutils literal"><span class="pre">id</span></tt>, like so:</p>
|
<code class="xref py py-attr docutils literal"><span class="pre">id</span></code>, like so:</p>
|
||||||
<div class="highlight-python"><div class="highlight"><pre><span class="k">for</span> <span class="n">pokemon</span> <span class="ow">in</span> <span class="n">session</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="n">tables</span><span class="o">.</span><span class="n">PokemonSpecies</span><span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="n">tables</span><span class="o">.</span><span class="n">PokemonSpecies</span><span class="o">.</span><span class="n">id</span><span class="p">):</span>
|
<div class="highlight-python"><div class="highlight"><pre><span class="k">for</span> <span class="n">pokemon</span> <span class="ow">in</span> <span class="n">session</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="n">tables</span><span class="o">.</span><span class="n">PokemonSpecies</span><span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="n">tables</span><span class="o">.</span><span class="n">PokemonSpecies</span><span class="o">.</span><span class="n">id</span><span class="p">):</span>
|
||||||
<span class="k">print</span> <span class="n">pokemon</span><span class="o">.</span><span class="n">name</span>
|
<span class="k">print</span> <span class="n">pokemon</span><span class="o">.</span><span class="n">name</span>
|
||||||
</pre></div>
|
</pre></div>
|
||||||
|
@ -149,7 +147,7 @@ Yveltal
|
||||||
Zygarde
|
Zygarde
|
||||||
</pre></div>
|
</pre></div>
|
||||||
</div>
|
</div>
|
||||||
<p>Or to order by <tt class="xref py py-attr docutils literal"><span class="pre">name</span></tt>:</p>
|
<p>Or to order by <code class="xref py py-attr docutils literal"><span class="pre">name</span></code>:</p>
|
||||||
<div class="highlight-python"><div class="highlight"><pre><span class="k">for</span> <span class="n">pokemon</span> <span class="ow">in</span> <span class="n">session</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="n">tables</span><span class="o">.</span><span class="n">PokemonSpecies</span><span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="n">tables</span><span class="o">.</span><span class="n">PokemonSpecies</span><span class="o">.</span><span class="n">name</span><span class="p">):</span>
|
<div class="highlight-python"><div class="highlight"><pre><span class="k">for</span> <span class="n">pokemon</span> <span class="ow">in</span> <span class="n">session</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="n">tables</span><span class="o">.</span><span class="n">PokemonSpecies</span><span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="n">tables</span><span class="o">.</span><span class="n">PokemonSpecies</span><span class="o">.</span><span class="n">name</span><span class="p">):</span>
|
||||||
<span class="k">print</span> <span class="n">pokemon</span><span class="o">.</span><span class="n">name</span>
|
<span class="k">print</span> <span class="n">pokemon</span><span class="o">.</span><span class="n">name</span>
|
||||||
</pre></div>
|
</pre></div>
|
||||||
|
@ -163,8 +161,8 @@ Zygarde
|
||||||
<div class="section" id="filtering">
|
<div class="section" id="filtering">
|
||||||
<h3>Filtering<a class="headerlink" href="#filtering" title="Permalink to this headline">¶</a></h3>
|
<h3>Filtering<a class="headerlink" href="#filtering" title="Permalink to this headline">¶</a></h3>
|
||||||
<p>Another major operation on queries is filtering, using the query’s
|
<p>Another major operation on queries is filtering, using the query’s
|
||||||
<a class="reference external" href="http://www.sqlalchemy.org/docs/orm/query.html#sqlalchemy.orm.query.Query.filter" title="(in SQLAlchemy v0.9)"><tt class="xref py py-meth docutils literal"><span class="pre">filter()</span></tt></a> or
|
<a class="reference external" href="http://www.sqlalchemy.org/docs/orm/query.html#sqlalchemy.orm.query.Query.filter" title="(in SQLAlchemy v1.0)"><code class="xref py py-meth docutils literal"><span class="pre">filter()</span></code></a> or
|
||||||
<a class="reference external" href="http://www.sqlalchemy.org/docs/orm/query.html#sqlalchemy.orm.query.Query.filter_by" title="(in SQLAlchemy v0.9)"><tt class="xref py py-meth docutils literal"><span class="pre">filter_by()</span></tt></a> methods:</p>
|
<a class="reference external" href="http://www.sqlalchemy.org/docs/orm/query.html#sqlalchemy.orm.query.Query.filter_by" title="(in SQLAlchemy v1.0)"><code class="xref py py-meth docutils literal"><span class="pre">filter_by()</span></code></a> methods:</p>
|
||||||
<div class="highlight-python"><div class="highlight"><pre><span class="k">for</span> <span class="n">move</span> <span class="ow">in</span> <span class="n">session</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="n">tables</span><span class="o">.</span><span class="n">Move</span><span class="p">)</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">tables</span><span class="o">.</span><span class="n">Move</span><span class="o">.</span><span class="n">power</span> <span class="o">></span> <span class="mi">200</span><span class="p">):</span>
|
<div class="highlight-python"><div class="highlight"><pre><span class="k">for</span> <span class="n">move</span> <span class="ow">in</span> <span class="n">session</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="n">tables</span><span class="o">.</span><span class="n">Move</span><span class="p">)</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">tables</span><span class="o">.</span><span class="n">Move</span><span class="o">.</span><span class="n">power</span> <span class="o">></span> <span class="mi">200</span><span class="p">):</span>
|
||||||
<span class="k">print</span> <span class="n">move</span><span class="o">.</span><span class="n">name</span>
|
<span class="k">print</span> <span class="n">move</span><span class="o">.</span><span class="n">name</span>
|
||||||
</pre></div>
|
</pre></div>
|
||||||
|
@ -176,7 +174,7 @@ Zygarde
|
||||||
<div class="section" id="joining">
|
<div class="section" id="joining">
|
||||||
<h3>Joining<a class="headerlink" href="#joining" title="Permalink to this headline">¶</a></h3>
|
<h3>Joining<a class="headerlink" href="#joining" title="Permalink to this headline">¶</a></h3>
|
||||||
<p>The final operation we’ll cover here is joining other tables to the query,
|
<p>The final operation we’ll cover here is joining other tables to the query,
|
||||||
using the query’s <a class="reference external" href="http://www.sqlalchemy.org/docs/orm/query.html#sqlalchemy.orm.query.Query.join" title="(in SQLAlchemy v0.9)"><tt class="xref py py-meth docutils literal"><span class="pre">join()</span></tt></a>.
|
using the query’s <a class="reference external" href="http://www.sqlalchemy.org/docs/orm/query.html#sqlalchemy.orm.query.Query.join" title="(in SQLAlchemy v1.0)"><code class="xref py py-meth docutils literal"><span class="pre">join()</span></code></a>.
|
||||||
You will usually want to join on a relationship, such as in the following
|
You will usually want to join on a relationship, such as in the following
|
||||||
example:</p>
|
example:</p>
|
||||||
<div class="highlight-python"><div class="highlight"><pre><span class="n">query</span> <span class="o">=</span> <span class="n">session</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="n">tables</span><span class="o">.</span><span class="n">Move</span><span class="p">)</span>
|
<div class="highlight-python"><div class="highlight"><pre><span class="n">query</span> <span class="o">=</span> <span class="n">session</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="n">tables</span><span class="o">.</span><span class="n">Move</span><span class="p">)</span>
|
||||||
|
@ -209,18 +207,18 @@ If you need to do more, consult the <a class="reference external" href="http://w
|
||||||
<h2>API documentation<a class="headerlink" href="#api-documentation" title="Permalink to this headline">¶</a></h2>
|
<h2>API documentation<a class="headerlink" href="#api-documentation" title="Permalink to this headline">¶</a></h2>
|
||||||
<dl class="function">
|
<dl class="function">
|
||||||
<dt id="pokedex.db.connect">
|
<dt id="pokedex.db.connect">
|
||||||
<tt class="descclassname">pokedex.db.</tt><tt class="descname">connect</tt><big>(</big><em>uri=None</em>, <em>session_args={}</em>, <em>engine_args={}</em>, <em>engine_prefix=''</em><big>)</big><a class="headerlink" href="#pokedex.db.connect" title="Permalink to this definition">¶</a></dt>
|
<code class="descclassname">pokedex.db.</code><code class="descname">connect</code><span class="sig-paren">(</span><em>uri=None</em>, <em>session_args={}</em>, <em>engine_args={}</em>, <em>engine_prefix=''</em><span class="sig-paren">)</span><a class="headerlink" href="#pokedex.db.connect" title="Permalink to this definition">¶</a></dt>
|
||||||
<dd><p>Connects to the requested URI. Returns a session object.</p>
|
<dd><p>Connects to the requested URI. Returns a session object.</p>
|
||||||
<p>With the URI omitted, attempts to connect to a default SQLite database
|
<p>With the URI omitted, attempts to connect to a default SQLite database
|
||||||
contained within the package directory.</p>
|
contained within the package directory.</p>
|
||||||
<p>Calling this function also binds the metadata object to the created engine.</p>
|
<p>Calling this function also binds the metadata object to the created engine.</p>
|
||||||
<p>See <a class="reference external" href="http://www.sqlalchemy.org/docs/orm/session.html#sqlalchemy.orm.session.Session" title="(in SQLAlchemy v0.9)"><tt class="xref py py-class docutils literal"><span class="pre">sqlalchemy.orm.session.Session</span></tt></a> for more documentation on the
|
<p>See <a class="reference external" href="http://www.sqlalchemy.org/docs/orm/session_api.html#sqlalchemy.orm.session.Session" title="(in SQLAlchemy v1.0)"><code class="xref py py-class docutils literal"><span class="pre">sqlalchemy.orm.session.Session</span></code></a> for more documentation on the
|
||||||
returned object.</p>
|
returned object.</p>
|
||||||
</dd></dl>
|
</dd></dl>
|
||||||
|
|
||||||
<dl class="function">
|
<dl class="function">
|
||||||
<dt id="pokedex.db.util.get">
|
<dt id="pokedex.db.util.get">
|
||||||
<tt class="descclassname">pokedex.db.util.</tt><tt class="descname">get</tt><big>(</big><em>session</em>, <em>table</em>, <em>identifier=None</em>, <em>name=None</em>, <em>id=None</em>, <em>language=None</em><big>)</big><a class="headerlink" href="#pokedex.db.util.get" title="Permalink to this definition">¶</a></dt>
|
<code class="descclassname">pokedex.db.util.</code><code class="descname">get</code><span class="sig-paren">(</span><em>session</em>, <em>table</em>, <em>identifier=None</em>, <em>name=None</em>, <em>id=None</em>, <em>language=None</em><span class="sig-paren">)</span><a class="headerlink" href="#pokedex.db.util.get" title="Permalink to this definition">¶</a></dt>
|
||||||
<dd><p>Get one object from the database.</p>
|
<dd><p>Get one object from the database.</p>
|
||||||
<p>session: The session to use (from pokedex.db.connect())
|
<p>session: The session to use (from pokedex.db.connect())
|
||||||
table: The table to select from (such as pokedex.db.tables.Move)</p>
|
table: The table to select from (such as pokedex.db.tables.Move)</p>
|
||||||
|
@ -241,7 +239,7 @@ appropriate SQLAlchemy exception is raised.</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="sphinxsidebar">
|
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||||
<div class="sphinxsidebarwrapper">
|
<div class="sphinxsidebarwrapper">
|
||||||
<h3><a href="index.html">Table Of Contents</a></h3>
|
<h3><a href="index.html">Table Of Contents</a></h3>
|
||||||
<ul>
|
<ul>
|
||||||
|
@ -266,12 +264,14 @@ appropriate SQLAlchemy exception is raised.</p>
|
||||||
<h4>Next topic</h4>
|
<h4>Next topic</h4>
|
||||||
<p class="topless"><a href="schema.html"
|
<p class="topless"><a href="schema.html"
|
||||||
title="next chapter">The database schema</a></p>
|
title="next chapter">The database schema</a></p>
|
||||||
<h3>This Page</h3>
|
<div role="note" aria-label="source link">
|
||||||
<ul class="this-page-menu">
|
<h3>This Page</h3>
|
||||||
<li><a href="_sources/usage.txt"
|
<ul class="this-page-menu">
|
||||||
rel="nofollow">Show Source</a></li>
|
<li><a href="_sources/usage.txt"
|
||||||
</ul>
|
rel="nofollow">Show Source</a></li>
|
||||||
<div id="searchbox" style="display: none">
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div id="searchbox" style="display: none" role="search">
|
||||||
<h3>Quick search</h3>
|
<h3>Quick search</h3>
|
||||||
<form class="search" action="search.html" method="get">
|
<form class="search" action="search.html" method="get">
|
||||||
<input type="text" name="q" />
|
<input type="text" name="q" />
|
||||||
|
@ -288,7 +288,7 @@ appropriate SQLAlchemy exception is raised.</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="clearer"></div>
|
<div class="clearer"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="related">
|
<div class="related" role="navigation" aria-label="related navigation">
|
||||||
<h3>Navigation</h3>
|
<h3>Navigation</h3>
|
||||||
<ul>
|
<ul>
|
||||||
<li class="right" style="margin-right: 10px">
|
<li class="right" style="margin-right: 10px">
|
||||||
|
@ -303,11 +303,11 @@ appropriate SQLAlchemy exception is raised.</p>
|
||||||
<li class="right" >
|
<li class="right" >
|
||||||
<a href="installing.html" title="Installing the pokedex library"
|
<a href="installing.html" title="Installing the pokedex library"
|
||||||
>previous</a> |</li>
|
>previous</a> |</li>
|
||||||
<li><a href="index.html">pokedex 0.1 documentation</a> »</li>
|
<li class="nav-item nav-item-0"><a href="index.html">pokedex 0.1 documentation</a> »</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="footer">
|
<div class="footer" role="contentinfo">
|
||||||
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
|
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.3.1.
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|