├── Makefile ├── README.md ├── _build ├── doctrees │ ├── environment.pickle │ └── index.doctree └── html │ ├── .buildinfo │ ├── _sources │ └── index.txt │ ├── _static │ ├── basic.css │ ├── default.css │ ├── doctools.js │ ├── file.png │ ├── jquery.js │ ├── minus.png │ ├── plus.png │ ├── pygments.css │ └── searchtools.js │ ├── genindex.html │ ├── index.html │ ├── objects.inv │ ├── search.html │ └── searchindex.js ├── conf.py ├── index.rst └── make.bat /Makefile: -------------------------------------------------------------------------------- 1 | # Makefile for Sphinx documentation 2 | # 3 | 4 | # You can set these variables from the command line. 5 | SPHINXOPTS = 6 | SPHINXBUILD = sphinx-build 7 | PAPER = 8 | BUILDDIR = _build 9 | 10 | # Internal variables. 11 | PAPEROPT_a4 = -D latex_paper_size=a4 12 | PAPEROPT_letter = -D latex_paper_size=letter 13 | ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . 14 | 15 | .PHONY: help clean html dirhtml pickle json htmlhelp qthelp latex changes linkcheck doctest 16 | 17 | help: 18 | @echo "Please use \`make ' where is one of" 19 | @echo " html to make standalone HTML files" 20 | @echo " dirhtml to make HTML files named index.html in directories" 21 | @echo " pickle to make pickle files" 22 | @echo " json to make JSON files" 23 | @echo " htmlhelp to make HTML files and a HTML help project" 24 | @echo " qthelp to make HTML files and a qthelp project" 25 | @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" 26 | @echo " changes to make an overview of all changed/added/deprecated items" 27 | @echo " linkcheck to check all external links for integrity" 28 | @echo " doctest to run all doctests embedded in the documentation (if enabled)" 29 | 30 | clean: 31 | -rm -rf $(BUILDDIR)/* 32 | 33 | html: 34 | $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html 35 | @echo 36 | @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." 37 | 38 | dirhtml: 39 | $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml 40 | @echo 41 | @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." 42 | 43 | pickle: 44 | $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle 45 | @echo 46 | @echo "Build finished; now you can process the pickle files." 47 | 48 | json: 49 | $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json 50 | @echo 51 | @echo "Build finished; now you can process the JSON files." 52 | 53 | htmlhelp: 54 | $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp 55 | @echo 56 | @echo "Build finished; now you can run HTML Help Workshop with the" \ 57 | ".hhp project file in $(BUILDDIR)/htmlhelp." 58 | 59 | qthelp: 60 | $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp 61 | @echo 62 | @echo "Build finished; now you can run "qcollectiongenerator" with the" \ 63 | ".qhcp project file in $(BUILDDIR)/qthelp, like this:" 64 | @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/Expluit0.qhcp" 65 | @echo "To view the help file:" 66 | @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/Expluit0.qhc" 67 | 68 | latex: 69 | $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex 70 | @echo 71 | @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." 72 | @echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \ 73 | "run these through (pdf)latex." 74 | 75 | changes: 76 | $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes 77 | @echo 78 | @echo "The overview file is in $(BUILDDIR)/changes." 79 | 80 | linkcheck: 81 | $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck 82 | @echo 83 | @echo "Link check complete; look for any errors in the above output " \ 84 | "or in $(BUILDDIR)/linkcheck/output.txt." 85 | 86 | doctest: 87 | $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest 88 | @echo "Testing of doctests in the sources finished, look at the " \ 89 | "results in $(BUILDDIR)/doctest/output.txt." 90 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Expluit0-docs 2 | ============= 3 | 4 | Docs for Expluit0 Project -------------------------------------------------------------------------------- /_build/doctrees/environment.pickle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posquit0/Expluit0-docs/11e90574ebb8273cd8f1b4766afe4ed09325effe/_build/doctrees/environment.pickle -------------------------------------------------------------------------------- /_build/doctrees/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posquit0/Expluit0-docs/11e90574ebb8273cd8f1b4766afe4ed09325effe/_build/doctrees/index.doctree -------------------------------------------------------------------------------- /_build/html/.buildinfo: -------------------------------------------------------------------------------- 1 | # Sphinx build info version 1 2 | # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. 3 | config: 37c29e8f10898b102c22e6784c79f136 4 | tags: fbb0d17656682115ca4d033fb2f83ba1 5 | -------------------------------------------------------------------------------- /_build/html/_sources/index.txt: -------------------------------------------------------------------------------- 1 | .. Expluit0 documentation master file, created by 2 | sphinx-quickstart on Sun Jul 15 23:06:32 2012. 3 | You can adapt this file completely to your liking, but it should at least 4 | contain the root `toctree` directive. 5 | 6 | Welcome to Expluit0's documentation! 7 | ==================================== 8 | 9 | Contents: 10 | 11 | .. toctree:: 12 | :maxdepth: 2 13 | 14 | Indices and tables 15 | ================== 16 | 17 | * :ref:`genindex` 18 | * :ref:`modindex` 19 | * :ref:`search` 20 | 21 | -------------------------------------------------------------------------------- /_build/html/_static/basic.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Sphinx stylesheet -- basic theme 3 | * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4 | */ 5 | 6 | /* -- main layout ----------------------------------------------------------- */ 7 | 8 | div.clearer { 9 | clear: both; 10 | } 11 | 12 | /* -- relbar ---------------------------------------------------------------- */ 13 | 14 | div.related { 15 | width: 100%; 16 | font-size: 90%; 17 | } 18 | 19 | div.related h3 { 20 | display: none; 21 | } 22 | 23 | div.related ul { 24 | margin: 0; 25 | padding: 0 0 0 10px; 26 | list-style: none; 27 | } 28 | 29 | div.related li { 30 | display: inline; 31 | } 32 | 33 | div.related li.right { 34 | float: right; 35 | margin-right: 5px; 36 | } 37 | 38 | /* -- sidebar --------------------------------------------------------------- */ 39 | 40 | div.sphinxsidebarwrapper { 41 | padding: 10px 5px 0 10px; 42 | } 43 | 44 | div.sphinxsidebar { 45 | float: left; 46 | width: 230px; 47 | margin-left: -100%; 48 | font-size: 90%; 49 | } 50 | 51 | div.sphinxsidebar ul { 52 | list-style: none; 53 | } 54 | 55 | div.sphinxsidebar ul ul, 56 | div.sphinxsidebar ul.want-points { 57 | margin-left: 20px; 58 | list-style: square; 59 | } 60 | 61 | div.sphinxsidebar ul ul { 62 | margin-top: 0; 63 | margin-bottom: 0; 64 | } 65 | 66 | div.sphinxsidebar form { 67 | margin-top: 10px; 68 | } 69 | 70 | div.sphinxsidebar input { 71 | border: 1px solid #98dbcc; 72 | font-family: sans-serif; 73 | font-size: 1em; 74 | } 75 | 76 | img { 77 | border: 0; 78 | } 79 | 80 | /* -- search page ----------------------------------------------------------- */ 81 | 82 | ul.search { 83 | margin: 10px 0 0 20px; 84 | padding: 0; 85 | } 86 | 87 | ul.search li { 88 | padding: 5px 0 5px 20px; 89 | background-image: url(file.png); 90 | background-repeat: no-repeat; 91 | background-position: 0 7px; 92 | } 93 | 94 | ul.search li a { 95 | font-weight: bold; 96 | } 97 | 98 | ul.search li div.context { 99 | color: #888; 100 | margin: 2px 0 0 30px; 101 | text-align: left; 102 | } 103 | 104 | ul.keywordmatches li.goodmatch a { 105 | font-weight: bold; 106 | } 107 | 108 | /* -- index page ------------------------------------------------------------ */ 109 | 110 | table.contentstable { 111 | width: 90%; 112 | } 113 | 114 | table.contentstable p.biglink { 115 | line-height: 150%; 116 | } 117 | 118 | a.biglink { 119 | font-size: 1.3em; 120 | } 121 | 122 | span.linkdescr { 123 | font-style: italic; 124 | padding-top: 5px; 125 | font-size: 90%; 126 | } 127 | 128 | /* -- general index --------------------------------------------------------- */ 129 | 130 | table.indextable td { 131 | text-align: left; 132 | vertical-align: top; 133 | } 134 | 135 | table.indextable dl, table.indextable dd { 136 | margin-top: 0; 137 | margin-bottom: 0; 138 | } 139 | 140 | table.indextable tr.pcap { 141 | height: 10px; 142 | } 143 | 144 | table.indextable tr.cap { 145 | margin-top: 10px; 146 | background-color: #f2f2f2; 147 | } 148 | 149 | img.toggler { 150 | margin-right: 3px; 151 | margin-top: 3px; 152 | cursor: pointer; 153 | } 154 | 155 | /* -- general body styles --------------------------------------------------- */ 156 | 157 | a.headerlink { 158 | visibility: hidden; 159 | } 160 | 161 | h1:hover > a.headerlink, 162 | h2:hover > a.headerlink, 163 | h3:hover > a.headerlink, 164 | h4:hover > a.headerlink, 165 | h5:hover > a.headerlink, 166 | h6:hover > a.headerlink, 167 | dt:hover > a.headerlink { 168 | visibility: visible; 169 | } 170 | 171 | div.body p.caption { 172 | text-align: inherit; 173 | } 174 | 175 | div.body td { 176 | text-align: left; 177 | } 178 | 179 | .field-list ul { 180 | padding-left: 1em; 181 | } 182 | 183 | .first { 184 | margin-top: 0 !important; 185 | } 186 | 187 | p.rubric { 188 | margin-top: 30px; 189 | font-weight: bold; 190 | } 191 | 192 | /* -- sidebars -------------------------------------------------------------- */ 193 | 194 | div.sidebar { 195 | margin: 0 0 0.5em 1em; 196 | border: 1px solid #ddb; 197 | padding: 7px 7px 0 7px; 198 | background-color: #ffe; 199 | width: 40%; 200 | float: right; 201 | } 202 | 203 | p.sidebar-title { 204 | font-weight: bold; 205 | } 206 | 207 | /* -- topics ---------------------------------------------------------------- */ 208 | 209 | div.topic { 210 | border: 1px solid #ccc; 211 | padding: 7px 7px 0 7px; 212 | margin: 10px 0 10px 0; 213 | } 214 | 215 | p.topic-title { 216 | font-size: 1.1em; 217 | font-weight: bold; 218 | margin-top: 10px; 219 | } 220 | 221 | /* -- admonitions ----------------------------------------------------------- */ 222 | 223 | div.admonition { 224 | margin-top: 10px; 225 | margin-bottom: 10px; 226 | padding: 7px; 227 | } 228 | 229 | div.admonition dt { 230 | font-weight: bold; 231 | } 232 | 233 | div.admonition dl { 234 | margin-bottom: 0; 235 | } 236 | 237 | p.admonition-title { 238 | margin: 0px 10px 5px 0px; 239 | font-weight: bold; 240 | } 241 | 242 | div.body p.centered { 243 | text-align: center; 244 | margin-top: 25px; 245 | } 246 | 247 | /* -- tables ---------------------------------------------------------------- */ 248 | 249 | table.docutils { 250 | border: 0; 251 | border-collapse: collapse; 252 | } 253 | 254 | table.docutils td, table.docutils th { 255 | padding: 1px 8px 1px 0; 256 | border-top: 0; 257 | border-left: 0; 258 | border-right: 0; 259 | border-bottom: 1px solid #aaa; 260 | } 261 | 262 | table.field-list td, table.field-list th { 263 | border: 0 !important; 264 | } 265 | 266 | table.footnote td, table.footnote th { 267 | border: 0 !important; 268 | } 269 | 270 | th { 271 | text-align: left; 272 | padding-right: 5px; 273 | } 274 | 275 | /* -- other body styles ----------------------------------------------------- */ 276 | 277 | dl { 278 | margin-bottom: 15px; 279 | } 280 | 281 | dd p { 282 | margin-top: 0px; 283 | } 284 | 285 | dd ul, dd table { 286 | margin-bottom: 10px; 287 | } 288 | 289 | dd { 290 | margin-top: 3px; 291 | margin-bottom: 10px; 292 | margin-left: 30px; 293 | } 294 | 295 | dt:target, .highlight { 296 | background-color: #fbe54e; 297 | } 298 | 299 | dl.glossary dt { 300 | font-weight: bold; 301 | font-size: 1.1em; 302 | } 303 | 304 | .field-list ul { 305 | margin: 0; 306 | padding-left: 1em; 307 | } 308 | 309 | .field-list p { 310 | margin: 0; 311 | } 312 | 313 | .refcount { 314 | color: #060; 315 | } 316 | 317 | .optional { 318 | font-size: 1.3em; 319 | } 320 | 321 | .versionmodified { 322 | font-style: italic; 323 | } 324 | 325 | .system-message { 326 | background-color: #fda; 327 | padding: 5px; 328 | border: 3px solid red; 329 | } 330 | 331 | .footnote:target { 332 | background-color: #ffa 333 | } 334 | 335 | .line-block { 336 | display: block; 337 | margin-top: 1em; 338 | margin-bottom: 1em; 339 | } 340 | 341 | .line-block .line-block { 342 | margin-top: 0; 343 | margin-bottom: 0; 344 | margin-left: 1.5em; 345 | } 346 | 347 | /* -- code displays --------------------------------------------------------- */ 348 | 349 | pre { 350 | overflow: auto; 351 | } 352 | 353 | td.linenos pre { 354 | padding: 5px 0px; 355 | border: 0; 356 | background-color: transparent; 357 | color: #aaa; 358 | } 359 | 360 | table.highlighttable { 361 | margin-left: 0.5em; 362 | } 363 | 364 | table.highlighttable td { 365 | padding: 0 0.5em 0 0.5em; 366 | } 367 | 368 | tt.descname { 369 | background-color: transparent; 370 | font-weight: bold; 371 | font-size: 1.2em; 372 | } 373 | 374 | tt.descclassname { 375 | background-color: transparent; 376 | } 377 | 378 | tt.xref, a tt { 379 | background-color: transparent; 380 | font-weight: bold; 381 | } 382 | 383 | h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt { 384 | background-color: transparent; 385 | } 386 | 387 | /* -- math display ---------------------------------------------------------- */ 388 | 389 | img.math { 390 | vertical-align: middle; 391 | } 392 | 393 | div.body div.math p { 394 | text-align: center; 395 | } 396 | 397 | span.eqno { 398 | float: right; 399 | } 400 | 401 | /* -- printout stylesheet --------------------------------------------------- */ 402 | 403 | @media print { 404 | div.document, 405 | div.documentwrapper, 406 | div.bodywrapper { 407 | margin: 0 !important; 408 | width: 100%; 409 | } 410 | 411 | div.sphinxsidebar, 412 | div.related, 413 | div.footer, 414 | #top-link { 415 | display: none; 416 | } 417 | } 418 | -------------------------------------------------------------------------------- /_build/html/_static/default.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Sphinx stylesheet -- default theme 3 | * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4 | */ 5 | 6 | @import url("basic.css"); 7 | 8 | /* -- page layout ----------------------------------------------------------- */ 9 | 10 | body { 11 | font-family: sans-serif; 12 | font-size: 100%; 13 | background-color: #11303d; 14 | color: #000; 15 | margin: 0; 16 | padding: 0; 17 | } 18 | 19 | div.document { 20 | background-color: #1c4e63; 21 | } 22 | 23 | div.documentwrapper { 24 | float: left; 25 | width: 100%; 26 | } 27 | 28 | div.bodywrapper { 29 | margin: 0 0 0 230px; 30 | } 31 | 32 | div.body { 33 | background-color: #ffffff; 34 | color: #000000; 35 | padding: 0 20px 30px 20px; 36 | } 37 | 38 | div.footer { 39 | color: #ffffff; 40 | width: 100%; 41 | padding: 9px 0 9px 0; 42 | text-align: center; 43 | font-size: 75%; 44 | } 45 | 46 | div.footer a { 47 | color: #ffffff; 48 | text-decoration: underline; 49 | } 50 | 51 | div.related { 52 | background-color: #133f52; 53 | line-height: 30px; 54 | color: #ffffff; 55 | } 56 | 57 | div.related a { 58 | color: #ffffff; 59 | } 60 | 61 | div.sphinxsidebar { 62 | } 63 | 64 | div.sphinxsidebar h3 { 65 | font-family: 'Trebuchet MS', sans-serif; 66 | color: #ffffff; 67 | font-size: 1.4em; 68 | font-weight: normal; 69 | margin: 0; 70 | padding: 0; 71 | } 72 | 73 | div.sphinxsidebar h3 a { 74 | color: #ffffff; 75 | } 76 | 77 | div.sphinxsidebar h4 { 78 | font-family: 'Trebuchet MS', sans-serif; 79 | color: #ffffff; 80 | font-size: 1.3em; 81 | font-weight: normal; 82 | margin: 5px 0 0 0; 83 | padding: 0; 84 | } 85 | 86 | div.sphinxsidebar p { 87 | color: #ffffff; 88 | } 89 | 90 | div.sphinxsidebar p.topless { 91 | margin: 5px 10px 10px 10px; 92 | } 93 | 94 | div.sphinxsidebar ul { 95 | margin: 10px; 96 | padding: 0; 97 | color: #ffffff; 98 | } 99 | 100 | div.sphinxsidebar a { 101 | color: #98dbcc; 102 | } 103 | 104 | div.sphinxsidebar input { 105 | border: 1px solid #98dbcc; 106 | font-family: sans-serif; 107 | font-size: 1em; 108 | } 109 | 110 | /* -- body styles ----------------------------------------------------------- */ 111 | 112 | a { 113 | color: #355f7c; 114 | text-decoration: none; 115 | } 116 | 117 | a:hover { 118 | text-decoration: underline; 119 | } 120 | 121 | div.body p, div.body dd, div.body li { 122 | text-align: justify; 123 | line-height: 130%; 124 | } 125 | 126 | div.body h1, 127 | div.body h2, 128 | div.body h3, 129 | div.body h4, 130 | div.body h5, 131 | div.body h6 { 132 | font-family: 'Trebuchet MS', sans-serif; 133 | background-color: #f2f2f2; 134 | font-weight: normal; 135 | color: #20435c; 136 | border-bottom: 1px solid #ccc; 137 | margin: 20px -20px 10px -20px; 138 | padding: 3px 0 3px 10px; 139 | } 140 | 141 | div.body h1 { margin-top: 0; font-size: 200%; } 142 | div.body h2 { font-size: 160%; } 143 | div.body h3 { font-size: 140%; } 144 | div.body h4 { font-size: 120%; } 145 | div.body h5 { font-size: 110%; } 146 | div.body h6 { font-size: 100%; } 147 | 148 | a.headerlink { 149 | color: #c60f0f; 150 | font-size: 0.8em; 151 | padding: 0 4px 0 4px; 152 | text-decoration: none; 153 | } 154 | 155 | a.headerlink:hover { 156 | background-color: #c60f0f; 157 | color: white; 158 | } 159 | 160 | div.body p, div.body dd, div.body li { 161 | text-align: justify; 162 | line-height: 130%; 163 | } 164 | 165 | div.admonition p.admonition-title + p { 166 | display: inline; 167 | } 168 | 169 | div.admonition p { 170 | margin-bottom: 5px; 171 | } 172 | 173 | div.admonition pre { 174 | margin-bottom: 5px; 175 | } 176 | 177 | div.admonition ul, div.admonition ol { 178 | margin-bottom: 5px; 179 | } 180 | 181 | div.note { 182 | background-color: #eee; 183 | border: 1px solid #ccc; 184 | } 185 | 186 | div.seealso { 187 | background-color: #ffc; 188 | border: 1px solid #ff6; 189 | } 190 | 191 | div.topic { 192 | background-color: #eee; 193 | } 194 | 195 | div.warning { 196 | background-color: #ffe4e4; 197 | border: 1px solid #f66; 198 | } 199 | 200 | p.admonition-title { 201 | display: inline; 202 | } 203 | 204 | p.admonition-title:after { 205 | content: ":"; 206 | } 207 | 208 | pre { 209 | padding: 5px; 210 | background-color: #eeffcc; 211 | color: #333333; 212 | line-height: 120%; 213 | border: 1px solid #ac9; 214 | border-left: none; 215 | border-right: none; 216 | } 217 | 218 | tt { 219 | background-color: #ecf0f3; 220 | padding: 0 1px 0 1px; 221 | font-size: 0.95em; 222 | } 223 | 224 | .warning tt { 225 | background: #efc2c2; 226 | } 227 | 228 | .note tt { 229 | background: #d6d6d6; 230 | } -------------------------------------------------------------------------------- /_build/html/_static/doctools.js: -------------------------------------------------------------------------------- 1 | /// XXX: make it cross browser 2 | 3 | /** 4 | * make the code below compatible with browsers without 5 | * an installed firebug like debugger 6 | */ 7 | if (!window.console || !console.firebug) { 8 | var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml", 9 | "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"]; 10 | window.console = {}; 11 | for (var i = 0; i < names.length; ++i) 12 | window.console[names[i]] = function() {} 13 | } 14 | 15 | /** 16 | * small helper function to urldecode strings 17 | */ 18 | jQuery.urldecode = function(x) { 19 | return decodeURIComponent(x).replace(/\+/g, ' '); 20 | } 21 | 22 | /** 23 | * small helper function to urlencode strings 24 | */ 25 | jQuery.urlencode = encodeURIComponent; 26 | 27 | /** 28 | * This function returns the parsed url parameters of the 29 | * current request. Multiple values per key are supported, 30 | * it will always return arrays of strings for the value parts. 31 | */ 32 | jQuery.getQueryParameters = function(s) { 33 | if (typeof s == 'undefined') 34 | s = document.location.search; 35 | var parts = s.substr(s.indexOf('?') + 1).split('&'); 36 | var result = {}; 37 | for (var i = 0; i < parts.length; i++) { 38 | var tmp = parts[i].split('=', 2); 39 | var key = jQuery.urldecode(tmp[0]); 40 | var value = jQuery.urldecode(tmp[1]); 41 | if (key in result) 42 | result[key].push(value); 43 | else 44 | result[key] = [value]; 45 | } 46 | return result; 47 | } 48 | 49 | /** 50 | * small function to check if an array contains 51 | * a given item. 52 | */ 53 | jQuery.contains = function(arr, item) { 54 | for (var i = 0; i < arr.length; i++) { 55 | if (arr[i] == item) 56 | return true; 57 | } 58 | return false; 59 | } 60 | 61 | /** 62 | * highlight a given string on a jquery object by wrapping it in 63 | * span elements with the given class name. 64 | */ 65 | jQuery.fn.highlightText = function(text, className) { 66 | function highlight(node) { 67 | if (node.nodeType == 3) { 68 | var val = node.nodeValue; 69 | var pos = val.toLowerCase().indexOf(text); 70 | if (pos >= 0 && !jQuery.className.has(node.parentNode, className)) { 71 | var span = document.createElement("span"); 72 | span.className = className; 73 | span.appendChild(document.createTextNode(val.substr(pos, text.length))); 74 | node.parentNode.insertBefore(span, node.parentNode.insertBefore( 75 | document.createTextNode(val.substr(pos + text.length)), 76 | node.nextSibling)); 77 | node.nodeValue = val.substr(0, pos); 78 | } 79 | } 80 | else if (!jQuery(node).is("button, select, textarea")) { 81 | jQuery.each(node.childNodes, function() { 82 | highlight(this) 83 | }); 84 | } 85 | } 86 | return this.each(function() { 87 | highlight(this); 88 | }); 89 | } 90 | 91 | /** 92 | * Small JavaScript module for the documentation. 93 | */ 94 | var Documentation = { 95 | 96 | init : function() { 97 | this.fixFirefoxAnchorBug(); 98 | this.highlightSearchWords(); 99 | this.initModIndex(); 100 | }, 101 | 102 | /** 103 | * i18n support 104 | */ 105 | TRANSLATIONS : {}, 106 | PLURAL_EXPR : function(n) { return n == 1 ? 0 : 1; }, 107 | LOCALE : 'unknown', 108 | 109 | // gettext and ngettext don't access this so that the functions 110 | // can savely bound to a different name (_ = Documentation.gettext) 111 | gettext : function(string) { 112 | var translated = Documentation.TRANSLATIONS[string]; 113 | if (typeof translated == 'undefined') 114 | return string; 115 | return (typeof translated == 'string') ? translated : translated[0]; 116 | }, 117 | 118 | ngettext : function(singular, plural, n) { 119 | var translated = Documentation.TRANSLATIONS[singular]; 120 | if (typeof translated == 'undefined') 121 | return (n == 1) ? singular : plural; 122 | return translated[Documentation.PLURALEXPR(n)]; 123 | }, 124 | 125 | addTranslations : function(catalog) { 126 | for (var key in catalog.messages) 127 | this.TRANSLATIONS[key] = catalog.messages[key]; 128 | this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')'); 129 | this.LOCALE = catalog.locale; 130 | }, 131 | 132 | /** 133 | * add context elements like header anchor links 134 | */ 135 | addContextElements : function() { 136 | $('div[id] > :header:first').each(function() { 137 | $('\u00B6'). 138 | attr('href', '#' + this.id). 139 | attr('title', _('Permalink to this headline')). 140 | appendTo(this); 141 | }); 142 | $('dt[id]').each(function() { 143 | $('\u00B6'). 144 | attr('href', '#' + this.id). 145 | attr('title', _('Permalink to this definition')). 146 | appendTo(this); 147 | }); 148 | }, 149 | 150 | /** 151 | * workaround a firefox stupidity 152 | */ 153 | fixFirefoxAnchorBug : function() { 154 | if (document.location.hash && $.browser.mozilla) 155 | window.setTimeout(function() { 156 | document.location.href += ''; 157 | }, 10); 158 | }, 159 | 160 | /** 161 | * highlight the search words provided in the url in the text 162 | */ 163 | highlightSearchWords : function() { 164 | var params = $.getQueryParameters(); 165 | var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; 166 | if (terms.length) { 167 | var body = $('div.body'); 168 | window.setTimeout(function() { 169 | $.each(terms, function() { 170 | body.highlightText(this.toLowerCase(), 'highlight'); 171 | }); 172 | }, 10); 173 | $('') 175 | .appendTo($('.sidebar .this-page-menu')); 176 | } 177 | }, 178 | 179 | /** 180 | * init the modindex toggle buttons 181 | */ 182 | initModIndex : function() { 183 | var togglers = $('img.toggler').click(function() { 184 | var src = $(this).attr('src'); 185 | var idnum = $(this).attr('id').substr(7); 186 | console.log($('tr.cg-' + idnum).toggle()); 187 | if (src.substr(-9) == 'minus.png') 188 | $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); 189 | else 190 | $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); 191 | }).css('display', ''); 192 | if (DOCUMENTATION_OPTIONS.COLLAPSE_MODINDEX) { 193 | togglers.click(); 194 | } 195 | }, 196 | 197 | /** 198 | * helper function to hide the search marks again 199 | */ 200 | hideSearchWords : function() { 201 | $('.sidebar .this-page-menu li.highlight-link').fadeOut(300); 202 | $('span.highlight').removeClass('highlight'); 203 | }, 204 | 205 | /** 206 | * make the url absolute 207 | */ 208 | makeURL : function(relativeURL) { 209 | return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; 210 | }, 211 | 212 | /** 213 | * get the current relative url 214 | */ 215 | getCurrentURL : function() { 216 | var path = document.location.pathname; 217 | var parts = path.split(/\//); 218 | $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { 219 | if (this == '..') 220 | parts.pop(); 221 | }); 222 | var url = parts.join('/'); 223 | return path.substring(url.lastIndexOf('/') + 1, path.length - 1); 224 | } 225 | }; 226 | 227 | // quick alias for translations 228 | _ = Documentation.gettext; 229 | 230 | $(document).ready(function() { 231 | Documentation.init(); 232 | }); 233 | -------------------------------------------------------------------------------- /_build/html/_static/file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posquit0/Expluit0-docs/11e90574ebb8273cd8f1b4766afe4ed09325effe/_build/html/_static/file.png -------------------------------------------------------------------------------- /_build/html/_static/minus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posquit0/Expluit0-docs/11e90574ebb8273cd8f1b4766afe4ed09325effe/_build/html/_static/minus.png -------------------------------------------------------------------------------- /_build/html/_static/plus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posquit0/Expluit0-docs/11e90574ebb8273cd8f1b4766afe4ed09325effe/_build/html/_static/plus.png -------------------------------------------------------------------------------- /_build/html/_static/pygments.css: -------------------------------------------------------------------------------- 1 | .hll { background-color: #ffffcc } 2 | .c { color: #408090; font-style: italic } /* Comment */ 3 | .err { border: 1px solid #FF0000 } /* Error */ 4 | .k { color: #007020; font-weight: bold } /* Keyword */ 5 | .o { color: #666666 } /* Operator */ 6 | .cm { color: #408090; font-style: italic } /* Comment.Multiline */ 7 | .cp { color: #007020 } /* Comment.Preproc */ 8 | .c1 { color: #408090; font-style: italic } /* Comment.Single */ 9 | .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */ 10 | .gd { color: #A00000 } /* Generic.Deleted */ 11 | .ge { font-style: italic } /* Generic.Emph */ 12 | .gr { color: #FF0000 } /* Generic.Error */ 13 | .gh { color: #000080; font-weight: bold } /* Generic.Heading */ 14 | .gi { color: #00A000 } /* Generic.Inserted */ 15 | .go { color: #303030 } /* Generic.Output */ 16 | .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */ 17 | .gs { font-weight: bold } /* Generic.Strong */ 18 | .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ 19 | .gt { color: #0040D0 } /* Generic.Traceback */ 20 | .kc { color: #007020; font-weight: bold } /* Keyword.Constant */ 21 | .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */ 22 | .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */ 23 | .kp { color: #007020 } /* Keyword.Pseudo */ 24 | .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */ 25 | .kt { color: #902000 } /* Keyword.Type */ 26 | .m { color: #208050 } /* Literal.Number */ 27 | .s { color: #4070a0 } /* Literal.String */ 28 | .na { color: #4070a0 } /* Name.Attribute */ 29 | .nb { color: #007020 } /* Name.Builtin */ 30 | .nc { color: #0e84b5; font-weight: bold } /* Name.Class */ 31 | .no { color: #60add5 } /* Name.Constant */ 32 | .nd { color: #555555; font-weight: bold } /* Name.Decorator */ 33 | .ni { color: #d55537; font-weight: bold } /* Name.Entity */ 34 | .ne { color: #007020 } /* Name.Exception */ 35 | .nf { color: #06287e } /* Name.Function */ 36 | .nl { color: #002070; font-weight: bold } /* Name.Label */ 37 | .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */ 38 | .nt { color: #062873; font-weight: bold } /* Name.Tag */ 39 | .nv { color: #bb60d5 } /* Name.Variable */ 40 | .ow { color: #007020; font-weight: bold } /* Operator.Word */ 41 | .w { color: #bbbbbb } /* Text.Whitespace */ 42 | .mf { color: #208050 } /* Literal.Number.Float */ 43 | .mh { color: #208050 } /* Literal.Number.Hex */ 44 | .mi { color: #208050 } /* Literal.Number.Integer */ 45 | .mo { color: #208050 } /* Literal.Number.Oct */ 46 | .sb { color: #4070a0 } /* Literal.String.Backtick */ 47 | .sc { color: #4070a0 } /* Literal.String.Char */ 48 | .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */ 49 | .s2 { color: #4070a0 } /* Literal.String.Double */ 50 | .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */ 51 | .sh { color: #4070a0 } /* Literal.String.Heredoc */ 52 | .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */ 53 | .sx { color: #c65d09 } /* Literal.String.Other */ 54 | .sr { color: #235388 } /* Literal.String.Regex */ 55 | .s1 { color: #4070a0 } /* Literal.String.Single */ 56 | .ss { color: #517918 } /* Literal.String.Symbol */ 57 | .bp { color: #007020 } /* Name.Builtin.Pseudo */ 58 | .vc { color: #bb60d5 } /* Name.Variable.Class */ 59 | .vg { color: #bb60d5 } /* Name.Variable.Global */ 60 | .vi { color: #bb60d5 } /* Name.Variable.Instance */ 61 | .il { color: #208050 } /* Literal.Number.Integer.Long */ -------------------------------------------------------------------------------- /_build/html/_static/searchtools.js: -------------------------------------------------------------------------------- 1 | /** 2 | * helper function to return a node containing the 3 | * search summary for a given text. keywords is a list 4 | * of stemmed words, hlwords is the list of normal, unstemmed 5 | * words. the first one is used to find the occurance, the 6 | * latter for highlighting it. 7 | */ 8 | 9 | jQuery.makeSearchSummary = function(text, keywords, hlwords) { 10 | var textLower = text.toLowerCase(); 11 | var start = 0; 12 | $.each(keywords, function() { 13 | var i = textLower.indexOf(this.toLowerCase()); 14 | if (i > -1) 15 | start = i; 16 | }); 17 | start = Math.max(start - 120, 0); 18 | var excerpt = ((start > 0) ? '...' : '') + 19 | $.trim(text.substr(start, 240)) + 20 | ((start + 240 - text.length) ? '...' : ''); 21 | var rv = $('
').text(excerpt); 22 | $.each(hlwords, function() { 23 | rv = rv.highlightText(this, 'highlight'); 24 | }); 25 | return rv; 26 | } 27 | 28 | /** 29 | * Porter Stemmer 30 | */ 31 | var PorterStemmer = function() { 32 | 33 | var step2list = { 34 | ational: 'ate', 35 | tional: 'tion', 36 | enci: 'ence', 37 | anci: 'ance', 38 | izer: 'ize', 39 | bli: 'ble', 40 | alli: 'al', 41 | entli: 'ent', 42 | eli: 'e', 43 | ousli: 'ous', 44 | ization: 'ize', 45 | ation: 'ate', 46 | ator: 'ate', 47 | alism: 'al', 48 | iveness: 'ive', 49 | fulness: 'ful', 50 | ousness: 'ous', 51 | aliti: 'al', 52 | iviti: 'ive', 53 | biliti: 'ble', 54 | logi: 'log' 55 | }; 56 | 57 | var step3list = { 58 | icate: 'ic', 59 | ative: '', 60 | alize: 'al', 61 | iciti: 'ic', 62 | ical: 'ic', 63 | ful: '', 64 | ness: '' 65 | }; 66 | 67 | var c = "[^aeiou]"; // consonant 68 | var v = "[aeiouy]"; // vowel 69 | var C = c + "[^aeiouy]*"; // consonant sequence 70 | var V = v + "[aeiou]*"; // vowel sequence 71 | 72 | var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 73 | var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 74 | var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 75 | var s_v = "^(" + C + ")?" + v; // vowel in stem 76 | 77 | this.stemWord = function (w) { 78 | var stem; 79 | var suffix; 80 | var firstch; 81 | var origword = w; 82 | 83 | if (w.length < 3) 84 | return w; 85 | 86 | var re; 87 | var re2; 88 | var re3; 89 | var re4; 90 | 91 | firstch = w.substr(0,1); 92 | if (firstch == "y") 93 | w = firstch.toUpperCase() + w.substr(1); 94 | 95 | // Step 1a 96 | re = /^(.+?)(ss|i)es$/; 97 | re2 = /^(.+?)([^s])s$/; 98 | 99 | if (re.test(w)) 100 | w = w.replace(re,"$1$2"); 101 | else if (re2.test(w)) 102 | w = w.replace(re2,"$1$2"); 103 | 104 | // Step 1b 105 | re = /^(.+?)eed$/; 106 | re2 = /^(.+?)(ed|ing)$/; 107 | if (re.test(w)) { 108 | var fp = re.exec(w); 109 | re = new RegExp(mgr0); 110 | if (re.test(fp[1])) { 111 | re = /.$/; 112 | w = w.replace(re,""); 113 | } 114 | } 115 | else if (re2.test(w)) { 116 | var fp = re2.exec(w); 117 | stem = fp[1]; 118 | re2 = new RegExp(s_v); 119 | if (re2.test(stem)) { 120 | w = stem; 121 | re2 = /(at|bl|iz)$/; 122 | re3 = new RegExp("([^aeiouylsz])\\1$"); 123 | re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); 124 | if (re2.test(w)) 125 | w = w + "e"; 126 | else if (re3.test(w)) { 127 | re = /.$/; 128 | w = w.replace(re,""); 129 | } 130 | else if (re4.test(w)) 131 | w = w + "e"; 132 | } 133 | } 134 | 135 | // Step 1c 136 | re = /^(.+?)y$/; 137 | if (re.test(w)) { 138 | var fp = re.exec(w); 139 | stem = fp[1]; 140 | re = new RegExp(s_v); 141 | if (re.test(stem)) 142 | w = stem + "i"; 143 | } 144 | 145 | // Step 2 146 | re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; 147 | if (re.test(w)) { 148 | var fp = re.exec(w); 149 | stem = fp[1]; 150 | suffix = fp[2]; 151 | re = new RegExp(mgr0); 152 | if (re.test(stem)) 153 | w = stem + step2list[suffix]; 154 | } 155 | 156 | // Step 3 157 | re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; 158 | if (re.test(w)) { 159 | var fp = re.exec(w); 160 | stem = fp[1]; 161 | suffix = fp[2]; 162 | re = new RegExp(mgr0); 163 | if (re.test(stem)) 164 | w = stem + step3list[suffix]; 165 | } 166 | 167 | // Step 4 168 | re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; 169 | re2 = /^(.+?)(s|t)(ion)$/; 170 | if (re.test(w)) { 171 | var fp = re.exec(w); 172 | stem = fp[1]; 173 | re = new RegExp(mgr1); 174 | if (re.test(stem)) 175 | w = stem; 176 | } 177 | else if (re2.test(w)) { 178 | var fp = re2.exec(w); 179 | stem = fp[1] + fp[2]; 180 | re2 = new RegExp(mgr1); 181 | if (re2.test(stem)) 182 | w = stem; 183 | } 184 | 185 | // Step 5 186 | re = /^(.+?)e$/; 187 | if (re.test(w)) { 188 | var fp = re.exec(w); 189 | stem = fp[1]; 190 | re = new RegExp(mgr1); 191 | re2 = new RegExp(meq1); 192 | re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); 193 | if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) 194 | w = stem; 195 | } 196 | re = /ll$/; 197 | re2 = new RegExp(mgr1); 198 | if (re.test(w) && re2.test(w)) { 199 | re = /.$/; 200 | w = w.replace(re,""); 201 | } 202 | 203 | // and turn initial Y back to y 204 | if (firstch == "y") 205 | w = firstch.toLowerCase() + w.substr(1); 206 | return w; 207 | } 208 | } 209 | 210 | 211 | /** 212 | * Search Module 213 | */ 214 | var Search = { 215 | 216 | _index : null, 217 | _queued_query : null, 218 | _pulse_status : -1, 219 | 220 | init : function() { 221 | var params = $.getQueryParameters(); 222 | if (params.q) { 223 | var query = params.q[0]; 224 | $('input[name="q"]')[0].value = query; 225 | this.performSearch(query); 226 | } 227 | }, 228 | 229 | /** 230 | * Sets the index 231 | */ 232 | setIndex : function(index) { 233 | var q; 234 | this._index = index; 235 | if ((q = this._queued_query) !== null) { 236 | this._queued_query = null; 237 | Search.query(q); 238 | } 239 | }, 240 | 241 | hasIndex : function() { 242 | return this._index !== null; 243 | }, 244 | 245 | deferQuery : function(query) { 246 | this._queued_query = query; 247 | }, 248 | 249 | stopPulse : function() { 250 | this._pulse_status = 0; 251 | }, 252 | 253 | startPulse : function() { 254 | if (this._pulse_status >= 0) 255 | return; 256 | function pulse() { 257 | Search._pulse_status = (Search._pulse_status + 1) % 4; 258 | var dotString = ''; 259 | for (var i = 0; i < Search._pulse_status; i++) 260 | dotString += '.'; 261 | Search.dots.text(dotString); 262 | if (Search._pulse_status > -1) 263 | window.setTimeout(pulse, 500); 264 | }; 265 | pulse(); 266 | }, 267 | 268 | /** 269 | * perform a search for something 270 | */ 271 | performSearch : function(query) { 272 | // create the required interface elements 273 | this.out = $('#search-results'); 274 | this.title = $('

' + _('Searching') + '

').appendTo(this.out); 275 | this.dots = $('').appendTo(this.title); 276 | this.status = $('

').appendTo(this.out); 277 | this.output = $('