sphinx build 2015-05-30 23:15:38-07:00

This commit is contained in:
Andrew Ekstedt 2015-05-30 23:15:38 -07:00
parent 8c8f361d8f
commit 61ad858e90
30 changed files with 12842 additions and 1253 deletions

View file

@ -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

View file

@ -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
--------------- ---------------

View file

@ -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
View 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;
}

View file

@ -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');

Binary file not shown.

Before

Width:  |  Height:  |  Size: 368 B

After

Width:  |  Height:  |  Size: 347 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 363 B

After

Width:  |  Height:  |  Size: 347 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 392 B

After

Width:  |  Height:  |  Size: 358 B

10308
_static/jquery-1.11.1.js vendored Normal file

File diff suppressed because it is too large Load diff

158
_static/jquery.js vendored

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 199 B

After

Width:  |  Height:  |  Size: 173 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 199 B

After

Width:  |  Height:  |  Size: 173 B

View file

@ -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 */

View file

@ -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();

View file

@ -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
View 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, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;').replace(/'/g, '&#x27;').replace(/\//g,'&#x2F;');
};
// 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);

View file

@ -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,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;").replace(/\//g,"&#x2F;")};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);

Binary file not shown.

Before

Width:  |  Height:  |  Size: 372 B

After

Width:  |  Height:  |  Size: 345 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 363 B

After

Width:  |  Height:  |  Size: 345 B

View file

@ -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">\

View file

@ -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 &mdash; pokedex 0.1 documentation</title> <title>Index &mdash; 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> &raquo;</li> <li class="nav-item nav-item-0"><a href="index.html">pokedex 0.1 documentation</a> &raquo;</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> &raquo;</li> <li class="nav-item nav-item-0"><a href="index.html">pokedex 0.1 documentation</a> &raquo;</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>

View file

@ -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 &mdash; pokedex 0.1 documentation</title> <title>The pokedex documentation &mdash; 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> &raquo;</li> <li class="nav-item nav-item-0"><a href="#">pokedex 0.1 documentation</a> &raquo;</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> &raquo;</li> <li class="nav-item nav-item-0"><a href="#">pokedex 0.1 documentation</a> &raquo;</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>

View file

@ -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 &mdash; pokedex 0.1 documentation</title> <title>Installing the pokedex library &mdash; 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> &raquo;</li> <li class="nav-item nav-item-0"><a href="index.html">pokedex 0.1 documentation</a> &raquo;</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&#8217;re not <p>That is all you need. Feel free to skip the rest of this chapter if you&#8217;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&#8217;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&#8217;ve activated the virtualenv, so <p>This documentation will assume that you&#8217;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&#8217;t do it. The only time you need <tt class="docutils literal"><span class="pre">sudo</span></tt> is for getting the that. Don&#8217;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://&#64;/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://&#64;/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&#8217;re confused about what pokedex thinks its settings are, check <p>If you&#8217;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&#8217;t do much, <p>Yes, that was a bit anti-climatic. The command-line tool doesn&#8217;t do much,
currently.</p> currently.</p>
@ -179,7 +183,7 @@ use it, so naturally he can&#8217;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&#8217;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&#8217;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&#8217;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> &raquo;</li> <li class="nav-item nav-item-0"><a href="index.html">pokedex 0.1 documentation</a> &raquo;</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>

File diff suppressed because it is too large Load diff

Binary file not shown.

View file

@ -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 &mdash; pokedex 0.1 documentation</title> <title>Python Module Index &mdash; 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> &raquo;</li> <li class="nav-item nav-item-0"><a href="index.html">pokedex 0.1 documentation</a> &raquo;</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>&nbsp;&nbsp;&nbsp; <td>&nbsp;&nbsp;&nbsp;
<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> &raquo;</li> <li class="nav-item nav-item-0"><a href="index.html">pokedex 0.1 documentation</a> &raquo;</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>

View file

@ -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 &mdash; pokedex 0.1 documentation</title> <title>The database schema &mdash; 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> &raquo;</li> <li class="nav-item nav-item-0"><a href="index.html">pokedex 0.1 documentation</a> &raquo;</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> &raquo;</li> <li class="nav-item nav-item-0"><a href="index.html">pokedex 0.1 documentation</a> &raquo;</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>

View file

@ -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 &mdash; pokedex 0.1 documentation</title> <title>Search &mdash; 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> &raquo;</li> <li class="nav-item nav-item-0"><a href="index.html">pokedex 0.1 documentation</a> &raquo;</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> &raquo;</li> <li class="nav-item nav-item-0"><a href="index.html">pokedex 0.1 documentation</a> &raquo;</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>

File diff suppressed because one or more lines are too long

View file

@ -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 &mdash; pokedex 0.1 documentation</title> <title>Using pokedex &mdash; 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> &raquo;</li> <li class="nav-item nav-item-0"><a href="index.html">pokedex 0.1 documentation</a> &raquo;</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&#8217;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&#8217;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&#8217;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&#8217;ll cover some basics full power of SQLAlchemy for working with the data. We&#8217;ll cover some basics
here, but if you intend to do some serious work, do read SQLAlchemy&#8217;s docs.</p> here, but if you intend to do some serious work, do read SQLAlchemy&#8217;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&#39;{0.name}, the {0.genus} Pokemon&#39;</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&#39;{0.name}, the {0.genus} Pokemon&#39;</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&#8217;s <p>So, how do you get data from the session? You use the session&#8217;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&#8217;ll want to sort just about every query you will make.</p> you&#8217;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&#8217;s <p>Another major operation on queries is filtering, using the query&#8217;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">&gt;</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">&gt;</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&#8217;ll cover here is joining other tables to the query, <p>The final operation we&#8217;ll cover here is joining other tables to the query,
using the query&#8217;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&#8217;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> &raquo;</li> <li class="nav-item nav-item-0"><a href="index.html">pokedex 0.1 documentation</a> &raquo;</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>