build based on cc32af8
This commit is contained in:
parent
9b890d99b7
commit
d9efb7f459
12 changed files with 16232 additions and 0 deletions
264
dev/assets/documenter.js
Normal file
264
dev/assets/documenter.js
Normal file
|
@ -0,0 +1,264 @@
|
||||||
|
// Generated by Documenter.jl
|
||||||
|
requirejs.config({
|
||||||
|
paths: {
|
||||||
|
'highlight-julia': 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.0.1/languages/julia.min',
|
||||||
|
'headroom': 'https://cdnjs.cloudflare.com/ajax/libs/headroom/0.12.0/headroom.min',
|
||||||
|
'jqueryui': 'https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min',
|
||||||
|
'katex-auto-render': 'https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.11/contrib/auto-render.min',
|
||||||
|
'jquery': 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min',
|
||||||
|
'headroom-jquery': 'https://cdnjs.cloudflare.com/ajax/libs/headroom/0.12.0/jQuery.headroom.min',
|
||||||
|
'katex': 'https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.11/katex.min',
|
||||||
|
'highlight': 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.0.1/highlight.min',
|
||||||
|
'highlight-julia-repl': 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.0.1/languages/julia-repl.min',
|
||||||
|
},
|
||||||
|
shim: {
|
||||||
|
"highlight-julia": {
|
||||||
|
"deps": [
|
||||||
|
"highlight"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"katex-auto-render": {
|
||||||
|
"deps": [
|
||||||
|
"katex"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"headroom-jquery": {
|
||||||
|
"deps": [
|
||||||
|
"jquery",
|
||||||
|
"headroom"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"highlight-julia-repl": {
|
||||||
|
"deps": [
|
||||||
|
"highlight"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
require(['jquery', 'katex', 'katex-auto-render'], function($, katex, renderMathInElement) {
|
||||||
|
$(document).ready(function() {
|
||||||
|
renderMathInElement(
|
||||||
|
document.body,
|
||||||
|
{
|
||||||
|
"delimiters": [
|
||||||
|
{
|
||||||
|
"left": "$",
|
||||||
|
"right": "$",
|
||||||
|
"display": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"left": "$$",
|
||||||
|
"right": "$$",
|
||||||
|
"display": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"left": "\\[",
|
||||||
|
"right": "\\]",
|
||||||
|
"display": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
);
|
||||||
|
})
|
||||||
|
|
||||||
|
})
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
require(['jquery', 'highlight', 'highlight-julia', 'highlight-julia-repl'], function($) {
|
||||||
|
$(document).ready(function() {
|
||||||
|
hljs.highlightAll();
|
||||||
|
})
|
||||||
|
|
||||||
|
})
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
require(['jquery', 'headroom', 'headroom-jquery'], function($, Headroom) {
|
||||||
|
|
||||||
|
// Manages the top navigation bar (hides it when the user starts scrolling down on the
|
||||||
|
// mobile).
|
||||||
|
window.Headroom = Headroom; // work around buggy module loading?
|
||||||
|
$(document).ready(function() {
|
||||||
|
$('#documenter .docs-navbar').headroom({
|
||||||
|
"tolerance": {"up": 10, "down": 10},
|
||||||
|
});
|
||||||
|
})
|
||||||
|
|
||||||
|
})
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
require(['jquery'], function($) {
|
||||||
|
|
||||||
|
// Modal settings dialog
|
||||||
|
$(document).ready(function() {
|
||||||
|
var settings = $('#documenter-settings');
|
||||||
|
$('#documenter-settings-button').click(function(){
|
||||||
|
settings.toggleClass('is-active');
|
||||||
|
});
|
||||||
|
// Close the dialog if X is clicked
|
||||||
|
$('#documenter-settings button.delete').click(function(){
|
||||||
|
settings.removeClass('is-active');
|
||||||
|
});
|
||||||
|
// Close dialog if ESC is pressed
|
||||||
|
$(document).keyup(function(e) {
|
||||||
|
if (e.keyCode == 27) settings.removeClass('is-active');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
})
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
require(['jquery'], function($) {
|
||||||
|
|
||||||
|
// Manages the showing and hiding of the sidebar.
|
||||||
|
$(document).ready(function() {
|
||||||
|
var sidebar = $("#documenter > .docs-sidebar");
|
||||||
|
var sidebar_button = $("#documenter-sidebar-button")
|
||||||
|
sidebar_button.click(function(ev) {
|
||||||
|
ev.preventDefault();
|
||||||
|
sidebar.toggleClass('visible');
|
||||||
|
if (sidebar.hasClass('visible')) {
|
||||||
|
// Makes sure that the current menu item is visible in the sidebar.
|
||||||
|
$("#documenter .docs-menu a.is-active").focus();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$("#documenter > .docs-main").bind('click', function(ev) {
|
||||||
|
if ($(ev.target).is(sidebar_button)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (sidebar.hasClass('visible')) {
|
||||||
|
sidebar.removeClass('visible');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})
|
||||||
|
|
||||||
|
// Resizes the package name / sitename in the sidebar if it is too wide.
|
||||||
|
// Inspired by: https://github.com/davatron5000/FitText.js
|
||||||
|
$(document).ready(function() {
|
||||||
|
e = $("#documenter .docs-autofit");
|
||||||
|
function resize() {
|
||||||
|
var L = parseInt(e.css('max-width'), 10);
|
||||||
|
var L0 = e.width();
|
||||||
|
if(L0 > L) {
|
||||||
|
var h0 = parseInt(e.css('font-size'), 10);
|
||||||
|
e.css('font-size', L * h0 / L0);
|
||||||
|
// TODO: make sure it survives resizes?
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// call once and then register events
|
||||||
|
resize();
|
||||||
|
$(window).resize(resize);
|
||||||
|
$(window).on('orientationchange', resize);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Scroll the navigation bar to the currently selected menu item
|
||||||
|
$(document).ready(function() {
|
||||||
|
var sidebar = $("#documenter .docs-menu").get(0);
|
||||||
|
var active = $("#documenter .docs-menu .is-active").get(0);
|
||||||
|
if(typeof active !== 'undefined') {
|
||||||
|
sidebar.scrollTop = active.offsetTop - sidebar.offsetTop - 15;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
})
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
require(['jquery'], function($) {
|
||||||
|
|
||||||
|
function set_theme(theme) {
|
||||||
|
var active = null;
|
||||||
|
var disabled = [];
|
||||||
|
for (var i = 0; i < document.styleSheets.length; i++) {
|
||||||
|
var ss = document.styleSheets[i];
|
||||||
|
var themename = ss.ownerNode.getAttribute("data-theme-name");
|
||||||
|
if(themename === null) continue; // ignore non-theme stylesheets
|
||||||
|
// Find the active theme
|
||||||
|
if(themename === theme) active = ss;
|
||||||
|
else disabled.push(ss);
|
||||||
|
}
|
||||||
|
if(active !== null) {
|
||||||
|
active.disabled = false;
|
||||||
|
if(active.ownerNode.getAttribute("data-theme-primary") === null) {
|
||||||
|
document.getElementsByTagName('html')[0].className = "theme--" + theme;
|
||||||
|
} else {
|
||||||
|
document.getElementsByTagName('html')[0].className = "";
|
||||||
|
}
|
||||||
|
disabled.forEach(function(ss){
|
||||||
|
ss.disabled = true;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Store the theme in localStorage
|
||||||
|
if(typeof(window.localStorage) !== "undefined") {
|
||||||
|
window.localStorage.setItem("documenter-theme", theme);
|
||||||
|
} else {
|
||||||
|
console.error("Browser does not support window.localStorage");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Theme picker setup
|
||||||
|
$(document).ready(function() {
|
||||||
|
// onchange callback
|
||||||
|
$('#documenter-themepicker').change(function themepick_callback(ev){
|
||||||
|
var themename = $('#documenter-themepicker option:selected').attr('value');
|
||||||
|
set_theme(themename);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Make sure that the themepicker displays the correct theme when the theme is retrieved
|
||||||
|
// from localStorage
|
||||||
|
if(typeof(window.localStorage) !== "undefined") {
|
||||||
|
var theme = window.localStorage.getItem("documenter-theme");
|
||||||
|
if(theme !== null) {
|
||||||
|
$('#documenter-themepicker option').each(function(i,e) {
|
||||||
|
e.selected = (e.value === theme);
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
$('#documenter-themepicker option').each(function(i,e) {
|
||||||
|
e.selected = $("html").hasClass(`theme--${e.value}`);
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
})
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
require(['jquery'], function($) {
|
||||||
|
|
||||||
|
// update the version selector with info from the siteinfo.js and ../versions.js files
|
||||||
|
$(document).ready(function() {
|
||||||
|
var version_selector = $("#documenter .docs-version-selector");
|
||||||
|
var version_selector_select = $("#documenter .docs-version-selector select");
|
||||||
|
|
||||||
|
version_selector_select.change(function(x) {
|
||||||
|
target_href = version_selector_select.children("option:selected").get(0).value;
|
||||||
|
window.location.href = target_href;
|
||||||
|
});
|
||||||
|
|
||||||
|
// add the current version to the selector based on siteinfo.js, but only if the selector is empty
|
||||||
|
if (typeof DOCUMENTER_CURRENT_VERSION !== 'undefined' && $('#version-selector > option').length == 0) {
|
||||||
|
var option = $("<option value='#' selected='selected'>" + DOCUMENTER_CURRENT_VERSION + "</option>");
|
||||||
|
version_selector_select.append(option);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof DOC_VERSIONS !== 'undefined') {
|
||||||
|
var existing_versions = version_selector_select.children("option");
|
||||||
|
var existing_versions_texts = existing_versions.map(function(i,x){return x.text});
|
||||||
|
DOC_VERSIONS.forEach(function(each) {
|
||||||
|
var version_url = documenterBaseURL + "/../" + each;
|
||||||
|
var existing_id = $.inArray(each, existing_versions_texts);
|
||||||
|
// if not already in the version selector, add it as a new option,
|
||||||
|
// otherwise update the old option with the URL and enable it
|
||||||
|
if (existing_id == -1) {
|
||||||
|
var option = $("<option value='" + version_url + "'>" + each + "</option>");
|
||||||
|
version_selector_select.append(option);
|
||||||
|
} else {
|
||||||
|
var option = existing_versions[existing_id];
|
||||||
|
option.value = version_url;
|
||||||
|
option.disabled = false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// only show the version selector if the selector has been populated
|
||||||
|
if (version_selector_select.children("option").length > 0) {
|
||||||
|
version_selector.toggleClass("visible");
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
})
|
251
dev/assets/search.js
Normal file
251
dev/assets/search.js
Normal file
|
@ -0,0 +1,251 @@
|
||||||
|
// Generated by Documenter.jl
|
||||||
|
requirejs.config({
|
||||||
|
paths: {
|
||||||
|
'lunr': 'https://cdnjs.cloudflare.com/ajax/libs/lunr.js/2.3.9/lunr.min',
|
||||||
|
'lodash': 'https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min',
|
||||||
|
'jquery': 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min',
|
||||||
|
}
|
||||||
|
});
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
require(['jquery', 'lunr', 'lodash'], function($, lunr, _) {
|
||||||
|
|
||||||
|
$(document).ready(function() {
|
||||||
|
// parseUri 1.2.2
|
||||||
|
// (c) Steven Levithan <stevenlevithan.com>
|
||||||
|
// MIT License
|
||||||
|
function parseUri (str) {
|
||||||
|
var o = parseUri.options,
|
||||||
|
m = o.parser[o.strictMode ? "strict" : "loose"].exec(str),
|
||||||
|
uri = {},
|
||||||
|
i = 14;
|
||||||
|
|
||||||
|
while (i--) uri[o.key[i]] = m[i] || "";
|
||||||
|
|
||||||
|
uri[o.q.name] = {};
|
||||||
|
uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) {
|
||||||
|
if ($1) uri[o.q.name][$1] = $2;
|
||||||
|
});
|
||||||
|
|
||||||
|
return uri;
|
||||||
|
};
|
||||||
|
parseUri.options = {
|
||||||
|
strictMode: false,
|
||||||
|
key: ["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],
|
||||||
|
q: {
|
||||||
|
name: "queryKey",
|
||||||
|
parser: /(?:^|&)([^&=]*)=?([^&]*)/g
|
||||||
|
},
|
||||||
|
parser: {
|
||||||
|
strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
|
||||||
|
loose: /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
$("#search-form").submit(function(e) {
|
||||||
|
e.preventDefault()
|
||||||
|
})
|
||||||
|
|
||||||
|
// list below is the lunr 2.1.3 list minus the intersect with names(Base)
|
||||||
|
// (all, any, get, in, is, only, which) and (do, else, for, let, where, while, with)
|
||||||
|
// ideally we'd just filter the original list but it's not available as a variable
|
||||||
|
lunr.stopWordFilter = lunr.generateStopWordFilter([
|
||||||
|
'a',
|
||||||
|
'able',
|
||||||
|
'about',
|
||||||
|
'across',
|
||||||
|
'after',
|
||||||
|
'almost',
|
||||||
|
'also',
|
||||||
|
'am',
|
||||||
|
'among',
|
||||||
|
'an',
|
||||||
|
'and',
|
||||||
|
'are',
|
||||||
|
'as',
|
||||||
|
'at',
|
||||||
|
'be',
|
||||||
|
'because',
|
||||||
|
'been',
|
||||||
|
'but',
|
||||||
|
'by',
|
||||||
|
'can',
|
||||||
|
'cannot',
|
||||||
|
'could',
|
||||||
|
'dear',
|
||||||
|
'did',
|
||||||
|
'does',
|
||||||
|
'either',
|
||||||
|
'ever',
|
||||||
|
'every',
|
||||||
|
'from',
|
||||||
|
'got',
|
||||||
|
'had',
|
||||||
|
'has',
|
||||||
|
'have',
|
||||||
|
'he',
|
||||||
|
'her',
|
||||||
|
'hers',
|
||||||
|
'him',
|
||||||
|
'his',
|
||||||
|
'how',
|
||||||
|
'however',
|
||||||
|
'i',
|
||||||
|
'if',
|
||||||
|
'into',
|
||||||
|
'it',
|
||||||
|
'its',
|
||||||
|
'just',
|
||||||
|
'least',
|
||||||
|
'like',
|
||||||
|
'likely',
|
||||||
|
'may',
|
||||||
|
'me',
|
||||||
|
'might',
|
||||||
|
'most',
|
||||||
|
'must',
|
||||||
|
'my',
|
||||||
|
'neither',
|
||||||
|
'no',
|
||||||
|
'nor',
|
||||||
|
'not',
|
||||||
|
'of',
|
||||||
|
'off',
|
||||||
|
'often',
|
||||||
|
'on',
|
||||||
|
'or',
|
||||||
|
'other',
|
||||||
|
'our',
|
||||||
|
'own',
|
||||||
|
'rather',
|
||||||
|
'said',
|
||||||
|
'say',
|
||||||
|
'says',
|
||||||
|
'she',
|
||||||
|
'should',
|
||||||
|
'since',
|
||||||
|
'so',
|
||||||
|
'some',
|
||||||
|
'than',
|
||||||
|
'that',
|
||||||
|
'the',
|
||||||
|
'their',
|
||||||
|
'them',
|
||||||
|
'then',
|
||||||
|
'there',
|
||||||
|
'these',
|
||||||
|
'they',
|
||||||
|
'this',
|
||||||
|
'tis',
|
||||||
|
'to',
|
||||||
|
'too',
|
||||||
|
'twas',
|
||||||
|
'us',
|
||||||
|
'wants',
|
||||||
|
'was',
|
||||||
|
'we',
|
||||||
|
'were',
|
||||||
|
'what',
|
||||||
|
'when',
|
||||||
|
'who',
|
||||||
|
'whom',
|
||||||
|
'why',
|
||||||
|
'will',
|
||||||
|
'would',
|
||||||
|
'yet',
|
||||||
|
'you',
|
||||||
|
'your'
|
||||||
|
])
|
||||||
|
|
||||||
|
// add . as a separator, because otherwise "title": "Documenter.Anchors.add!"
|
||||||
|
// would not find anything if searching for "add!", only for the entire qualification
|
||||||
|
lunr.tokenizer.separator = /[\s\-\.]+/
|
||||||
|
|
||||||
|
// custom trimmer that doesn't strip @ and !, which are used in julia macro and function names
|
||||||
|
lunr.trimmer = function (token) {
|
||||||
|
return token.update(function (s) {
|
||||||
|
return s.replace(/^[^a-zA-Z0-9@!]+/, '').replace(/[^a-zA-Z0-9@!]+$/, '')
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
lunr.Pipeline.registerFunction(lunr.stopWordFilter, 'juliaStopWordFilter')
|
||||||
|
lunr.Pipeline.registerFunction(lunr.trimmer, 'juliaTrimmer')
|
||||||
|
|
||||||
|
var index = lunr(function () {
|
||||||
|
this.ref('location')
|
||||||
|
this.field('title',{boost: 100})
|
||||||
|
this.field('text')
|
||||||
|
documenterSearchIndex['docs'].forEach(function(e) {
|
||||||
|
this.add(e)
|
||||||
|
}, this)
|
||||||
|
})
|
||||||
|
var store = {}
|
||||||
|
|
||||||
|
documenterSearchIndex['docs'].forEach(function(e) {
|
||||||
|
store[e.location] = {title: e.title, category: e.category, page: e.page}
|
||||||
|
})
|
||||||
|
|
||||||
|
$(function(){
|
||||||
|
searchresults = $('#documenter-search-results');
|
||||||
|
searchinfo = $('#documenter-search-info');
|
||||||
|
searchbox = $('#documenter-search-query');
|
||||||
|
function update_search(querystring) {
|
||||||
|
tokens = lunr.tokenizer(querystring)
|
||||||
|
results = index.query(function (q) {
|
||||||
|
tokens.forEach(function (t) {
|
||||||
|
q.term(t.toString(), {
|
||||||
|
fields: ["title"],
|
||||||
|
boost: 100,
|
||||||
|
usePipeline: true,
|
||||||
|
editDistance: 0,
|
||||||
|
wildcard: lunr.Query.wildcard.NONE
|
||||||
|
})
|
||||||
|
q.term(t.toString(), {
|
||||||
|
fields: ["title"],
|
||||||
|
boost: 10,
|
||||||
|
usePipeline: true,
|
||||||
|
editDistance: 2,
|
||||||
|
wildcard: lunr.Query.wildcard.NONE
|
||||||
|
})
|
||||||
|
q.term(t.toString(), {
|
||||||
|
fields: ["text"],
|
||||||
|
boost: 1,
|
||||||
|
usePipeline: true,
|
||||||
|
editDistance: 0,
|
||||||
|
wildcard: lunr.Query.wildcard.NONE
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
searchinfo.text("Number of results: " + results.length)
|
||||||
|
searchresults.empty()
|
||||||
|
results.forEach(function(result) {
|
||||||
|
data = store[result.ref]
|
||||||
|
link = $('<a class="docs-label">'+data.title+'</a>')
|
||||||
|
link.attr('href', documenterBaseURL+'/'+result.ref)
|
||||||
|
if (data.category != "page"){
|
||||||
|
cat = $('<span class="docs-category">('+data.category+', '+data.page+')</span>')
|
||||||
|
} else {
|
||||||
|
cat = $('<span class="docs-category">('+data.category+')</span>')
|
||||||
|
}
|
||||||
|
li = $('<li>').append(link).append(" ").append(cat)
|
||||||
|
searchresults.append(li)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
function update_search_box() {
|
||||||
|
querystring = searchbox.val()
|
||||||
|
update_search(querystring)
|
||||||
|
}
|
||||||
|
|
||||||
|
searchbox.keyup(_.debounce(update_search_box, 250))
|
||||||
|
searchbox.change(update_search_box)
|
||||||
|
|
||||||
|
search_query_uri = parseUri(window.location).queryKey["q"]
|
||||||
|
if(search_query_uri !== undefined) {
|
||||||
|
search_query = decodeURIComponent(search_query_uri.replace(/\+/g, '%20'))
|
||||||
|
searchbox.val(search_query)
|
||||||
|
}
|
||||||
|
update_search_box();
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
})
|
7752
dev/assets/themes/documenter-dark.css
Normal file
7752
dev/assets/themes/documenter-dark.css
Normal file
File diff suppressed because it is too large
Load diff
7810
dev/assets/themes/documenter-light.css
Normal file
7810
dev/assets/themes/documenter-light.css
Normal file
File diff suppressed because it is too large
Load diff
66
dev/assets/themeswap.js
Normal file
66
dev/assets/themeswap.js
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
// Small function to quickly swap out themes. Gets put into the <head> tag..
|
||||||
|
function set_theme_from_local_storage() {
|
||||||
|
// Intialize the theme to null, which means default
|
||||||
|
var theme = null;
|
||||||
|
// If the browser supports the localstorage and is not disabled then try to get the
|
||||||
|
// documenter theme
|
||||||
|
if(window.localStorage != null) {
|
||||||
|
// Get the user-picked theme from localStorage. May be `null`, which means the default
|
||||||
|
// theme.
|
||||||
|
theme = window.localStorage.getItem("documenter-theme");
|
||||||
|
}
|
||||||
|
// Check if the browser supports user color preference
|
||||||
|
var darkPreference = false;
|
||||||
|
// Check if the users preference is for dark color scheme
|
||||||
|
if(window.matchMedia('(prefers-color-scheme: dark)').matches === true) {
|
||||||
|
darkPreference = true;
|
||||||
|
}
|
||||||
|
// Initialize a few variables for the loop:
|
||||||
|
//
|
||||||
|
// - active: will contain the index of the theme that should be active. Note that there
|
||||||
|
// is no guarantee that localStorage contains sane values. If `active` stays `null`
|
||||||
|
// we either could not find the theme or it is the default (primary) theme anyway.
|
||||||
|
// Either way, we then need to stick to the primary theme.
|
||||||
|
//
|
||||||
|
// - disabled: style sheets that should be disabled (i.e. all the theme style sheets
|
||||||
|
// that are not the currently active theme)
|
||||||
|
var active = null; var disabled = []; var darkTheme = null;
|
||||||
|
for (var i = 0; i < document.styleSheets.length; i++) {
|
||||||
|
var ss = document.styleSheets[i];
|
||||||
|
// The <link> tag of each style sheet is expected to have a data-theme-name attribute
|
||||||
|
// which must contain the name of the theme. The names in localStorage much match this.
|
||||||
|
var themename = ss.ownerNode.getAttribute("data-theme-name");
|
||||||
|
// attribute not set => non-theme stylesheet => ignore
|
||||||
|
if(themename === null) continue;
|
||||||
|
// To distinguish the default (primary) theme, it needs to have the data-theme-primary
|
||||||
|
// attribute set.
|
||||||
|
var isprimary = (ss.ownerNode.getAttribute("data-theme-primary") !== null);
|
||||||
|
// Check if the theme is primary dark theme
|
||||||
|
var isDarkTheme = (ss.ownerNode.getAttribute("data-theme-primary-dark") !== null);
|
||||||
|
// If ss is for dark theme then set the value of darkTheme to the name of the theme
|
||||||
|
if(isDarkTheme) darkTheme = themename;
|
||||||
|
// If we find a matching theme (and it's not the default), we'll set active to non-null
|
||||||
|
if(themename === theme) active = i;
|
||||||
|
// Store the style sheets of inactive themes so that we could disable them
|
||||||
|
if(themename !== theme) disabled.push(ss);
|
||||||
|
}
|
||||||
|
if(active !== null) {
|
||||||
|
// If we did find an active theme, we'll (1) add the theme--$(theme) class to <html>
|
||||||
|
document.getElementsByTagName('html')[0].className = "theme--" + theme;
|
||||||
|
// and (2) disable all the other theme stylesheets
|
||||||
|
disabled.forEach(function(ss){
|
||||||
|
ss.disabled = true;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else if(darkTheme !== null && darkPreference === true) {
|
||||||
|
// If we did find an active theme, we'll (1) add the theme--$(theme) class to <html>
|
||||||
|
document.getElementsByTagName('html')[0].className = "theme--" + darkTheme;
|
||||||
|
// and (2) disable all the other theme stylesheets
|
||||||
|
disabled.forEach(function(ss){
|
||||||
|
if (ss.ownerNode.getAttribute("data-theme-name") !== darkTheme) {
|
||||||
|
ss.disabled = true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
set_theme_from_local_storage();
|
49
dev/assets/warner.js
Normal file
49
dev/assets/warner.js
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
function maybeAddWarning () {
|
||||||
|
// DOCUMENTER_NEWEST is defined in versions.js, DOCUMENTER_CURRENT_VERSION and DOCUMENTER_STABLE
|
||||||
|
// in siteinfo.js.
|
||||||
|
// If either of these are undefined something went horribly wrong, so we abort.
|
||||||
|
if (
|
||||||
|
window.DOCUMENTER_NEWEST === undefined ||
|
||||||
|
window.DOCUMENTER_CURRENT_VERSION === undefined ||
|
||||||
|
window.DOCUMENTER_STABLE === undefined
|
||||||
|
) {
|
||||||
|
return
|
||||||
|
};
|
||||||
|
|
||||||
|
// Current version is not a version number, so we can't tell if it's the newest version. Abort.
|
||||||
|
if (!/v(\d+\.)*\d+/.test(window.DOCUMENTER_CURRENT_VERSION)) {
|
||||||
|
return
|
||||||
|
};
|
||||||
|
|
||||||
|
// Current version is newest version, so no need to add a warning.
|
||||||
|
if (window.DOCUMENTER_NEWEST === window.DOCUMENTER_CURRENT_VERSION) {
|
||||||
|
return
|
||||||
|
};
|
||||||
|
|
||||||
|
// Add a noindex meta tag (unless one exists) so that search engines don't index this version of the docs.
|
||||||
|
if (document.body.querySelector('meta[name="robots"]') === null) {
|
||||||
|
const meta = document.createElement('meta');
|
||||||
|
meta.name = 'robots';
|
||||||
|
meta.content = 'noindex';
|
||||||
|
|
||||||
|
document.getElementsByTagName('head')[0].appendChild(meta);
|
||||||
|
};
|
||||||
|
|
||||||
|
const div = document.createElement('div');
|
||||||
|
div.classList.add('outdated-warning-overlay');
|
||||||
|
const closer = document.createElement('button');
|
||||||
|
closer.classList.add('outdated-warning-closer', 'delete');
|
||||||
|
closer.addEventListener('click', function () {
|
||||||
|
document.body.removeChild(div);
|
||||||
|
});
|
||||||
|
const href = window.documenterBaseURL + '/../' + window.DOCUMENTER_STABLE;
|
||||||
|
div.innerHTML = 'This documentation is not for the latest version. <br> <a href="' + href + '">Go to the latest documentation</a>.';
|
||||||
|
div.appendChild(closer);
|
||||||
|
document.body.appendChild(div);
|
||||||
|
};
|
||||||
|
|
||||||
|
if (document.readyState === 'loading') {
|
||||||
|
document.addEventListener('DOMContentLoaded', maybeAddWarning);
|
||||||
|
} else {
|
||||||
|
maybeAddWarning();
|
||||||
|
};
|
27
dev/index.html
Normal file
27
dev/index.html
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Public interface · PortAudio.jl</title><script data-outdated-warner src="assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.039/juliamono-regular.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.11/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="assets/documenter.js"></script><script src="siteinfo.js"></script><script src="../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="assets/themeswap.js"></script></head><body><div id="documenter"><nav class="docs-sidebar"><div class="docs-package-name"><span class="docs-autofit"><a href>PortAudio.jl</a></span></div><form class="docs-search" action="search/"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li class="is-active"><a class="tocitem" href>Public interface</a></li><li><a class="tocitem" href="internals/">Internals</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>Public interface</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Public interface</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com/JuliaAudio/PortAudio.jl/blob/master/docs/src/index.md" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><h1 id="Public-interface"><a class="docs-heading-anchor" href="#Public-interface">Public interface</a><a id="Public-interface-1"></a><a class="docs-heading-anchor-permalink" href="#Public-interface" title="Permalink"></a></h1><ul><li><a href="#PortAudio.PortAudioStream"><code>PortAudio.PortAudioStream</code></a></li><li><a href="#PortAudio.devices-Tuple{}"><code>PortAudio.devices</code></a></li></ul><article class="docstring"><header><a class="docstring-binding" id="PortAudio.PortAudioStream" href="#PortAudio.PortAudioStream"><code>PortAudio.PortAudioStream</code></a> — <span class="docstring-category">Type</span></header><section><div><pre><code class="language-julia hljs">PortAudioStream(input_channels = 2, output_channels = 2; options...)
|
||||||
|
PortAudioStream(duplex_device, input_channels = 2, output_channels = 2; options...)
|
||||||
|
PortAudioStream(input_device, output_device, input_channels = 2, output_channels = 2; options...)</code></pre><p>Audio devices can either be <code>PortAudioDevice</code> instances as returned by <a href="#PortAudio.devices-Tuple{}"><code>devices</code></a>, or strings with the device name as reported by the operating system. Set <code>input_channels</code> to <code>0</code> for an output only stream; set <code>output_channels</code> to <code>0</code> for an input only steam. If you pass the function <code>maximum</code> instead of a number of channels, use the maximum channels allowed by the corresponding device. If a single <code>duplex_device</code> is given, it will be used for both input and output. If no devices are given, the system default devices will be used.</p><p>The <code>PortAudioStream</code> type supports all the stream and buffer features defined <a href="https://github.com/JuliaAudio/SampledSignals.jl">SampledSignals.jl</a> by default. For example, if you load SampledSignals with <code>using SampledSignals</code> you can read 5 seconds to a buffer with <code>buf = read(stream, 5s)</code>, regardless of the sample rate of the device. <code>write(stream, stream)</code> will set up a loopback that will read from the input and play it back on the output.</p><p>Options:</p><ul><li><code>adjust_channels = false</code>: If set to <code>true</code>, if either <code>input_channels</code> or <code>output_channels</code> exceeds the corresponding device maximum, adjust down to the maximum.</li><li><code>call_back = C_NULL</code>: The PortAudio call-back function. Currently, passing anything except <code>C_NULL</code> is unsupported.</li><li><code>eltype = Float32</code>: Sample type of the audio stream</li><li><code>flags = PortAudio.paNoFlag</code>: PortAudio flags</li><li><code>frames_per_buffer = 128</code>: the number of frames per buffer</li><li><code>input_info = C_NULL</code>: host API specific stream info for the input device. Currently, passing anything except <code>C_NULL</code> is unsupported.</li><li><code>latency = nothing</code>: Requested latency. Stream could underrun when too low, consider using the defaults. If left as <code>nothing</code>, use the defaults below:<ul><li>For input/output only streams, use the corresponding device's default high latency.</li><li>For duplex streams, use the max of the default high latency of the input and output devices.</li></ul></li><li><code>output_info = C_NULL</code>: host API specific stream info for the output device. Currently, passing anything except <code>C_NULL</code> is unsupported.</li><li><code>reader = PortAudio.SampledSignalsReader()</code>: the scribe that will read input. Defaults to a <a href="internals/#PortAudio.SampledSignalsReader"><code>PortAudio.SampledSignalsReader</code></a>. Users can pass custom scribes; see <a href="internals/#PortAudio.Scribe"><code>PortAudio.Scribe</code></a>.</li><li><code>samplerate = nothing</code>: Sample rate. If left as <code>nothing</code>, use the defaults below:<ul><li>For input/output only streams, use the corresponding device's default sample rate.</li><li>For duplex streams, use the default sample rate if the default sample rates for the input and output devices match, otherwise throw an error.</li></ul></li><li><code>warn_xruns = true</code>: Display a warning if there is a stream overrun or underrun, which often happens when Julia is compiling, or with a particularly large GC run. Only affects duplex streams.</li><li><code>writer = PortAudio.SampledSignalsWriter()</code>: the scribe that will write output. Defaults to a <a href="internals/#PortAudio.SampledSignalsReader"><code>PortAudio.SampledSignalsReader</code></a>. Users can pass custom scribes; see <a href="internals/#PortAudio.Scribe"><code>PortAudio.Scribe</code></a>.</li></ul><p><strong>Examples:</strong></p><p>Set up an audio pass-through from microphone to speaker</p><pre><code class="language-julia hljs">julia> using PortAudio, SampledSignals
|
||||||
|
|
||||||
|
julia> stream = PortAudioStream(2, 2; warn_xruns = false);
|
||||||
|
|
||||||
|
julia> try
|
||||||
|
# cancel with Ctrl-C
|
||||||
|
write(stream, stream, 2s)
|
||||||
|
finally
|
||||||
|
close(stream)
|
||||||
|
end</code></pre><p>Use <code>do</code> syntax to auto-close the stream</p><pre><code class="language-julia hljs">julia> using PortAudio, SampledSignals
|
||||||
|
|
||||||
|
julia> PortAudioStream(2, 2; warn_xruns = false) do stream
|
||||||
|
write(stream, stream, 2s)
|
||||||
|
end</code></pre><p>Open devices by name</p><pre><code class="language-julia hljs">using PortAudio, SampledSignals
|
||||||
|
PortAudioStream("Built-in Microph", "Built-in Output"; warn_xruns = false) do stream
|
||||||
|
write(stream, stream, 2s)
|
||||||
|
end
|
||||||
|
2 s</code></pre><p>Record 10 seconds of audio and save to an ogg file</p><pre><code class="language-julia hljs">julia> using PortAudio, SampledSignals, LibSndFile
|
||||||
|
|
||||||
|
julia> PortAudioStream(2, 0; warn_xruns = false) do stream
|
||||||
|
buf = read(stream, 10s)
|
||||||
|
save(joinpath(tempname(), ".ogg"), buf)
|
||||||
|
end
|
||||||
|
2 s</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/JuliaAudio/PortAudio.jl/blob/cc32af820faec0fe9ecd760dc36fd1b34b9d9dab/src/PortAudio.jl#L614-L704">source</a></section></article><article class="docstring"><header><a class="docstring-binding" id="PortAudio.devices-Tuple{}" href="#PortAudio.devices-Tuple{}"><code>PortAudio.devices</code></a> — <span class="docstring-category">Method</span></header><section><div><pre><code class="language-julia hljs">devices()</code></pre><p>List the devices available on your system. Devices will be shown with their internal name, and maximum input and output channels.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/JuliaAudio/PortAudio.jl/blob/cc32af820faec0fe9ecd760dc36fd1b34b9d9dab/src/PortAudio.jl#L221-L226">source</a></section></article></article><nav class="docs-footer"><a class="docs-footer-nextpage" href="internals/">Internals »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.4 on <span class="colophon-date" title="Sunday 25 July 2021 05:31">Sunday 25 July 2021</span>. Using Julia version 1.6.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
|
2
dev/internals/index.html
Normal file
2
dev/internals/index.html
Normal file
File diff suppressed because one or more lines are too long
2
dev/search/index.html
Normal file
2
dev/search/index.html
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Search · PortAudio.jl</title><script data-outdated-warner src="../assets/warner.js"></script><link href="https://cdnjs.cloudflare.com/ajax/libs/lato-font/3.0.0/css/lato-font.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/juliamono/0.039/juliamono-regular.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.11/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL=".."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="../assets/documenter.js"></script><script src="../siteinfo.js"></script><script src="../../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-dark.css" data-theme-name="documenter-dark" data-theme-primary-dark/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="../assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="../assets/themeswap.js"></script></head><body><div id="documenter"><nav class="docs-sidebar"><div class="docs-package-name"><span class="docs-autofit"><a href="../">PortAudio.jl</a></span></div><form class="docs-search" action><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="../">Public interface</a></li><li><a class="tocitem" href="../internals/">Internals</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li class="is-active"><a href>Search</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Search</a></li></ul></nav><div class="docs-right"><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article><p id="documenter-search-info">Loading search...</p><ul id="documenter-search-results"></ul></article><nav class="docs-footer"><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 0.27.4 on <span class="colophon-date" title="Sunday 25 July 2021 05:31">Sunday 25 July 2021</span>. Using Julia version 1.6.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body><script src="../search_index.js"></script><script src="../assets/search.js"></script></html>
|
3
dev/search_index.js
Normal file
3
dev/search_index.js
Normal file
File diff suppressed because one or more lines are too long
1
dev/siteinfo.js
Normal file
1
dev/siteinfo.js
Normal file
|
@ -0,0 +1 @@
|
||||||
|
var DOCUMENTER_CURRENT_VERSION = "dev";
|
5
versions.js
Normal file
5
versions.js
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
var DOC_VERSIONS = [
|
||||||
|
"dev",
|
||||||
|
];
|
||||||
|
var DOCUMENTER_NEWEST = "dev";
|
||||||
|
var DOCUMENTER_STABLE = "dev";
|
Loading…
Reference in a new issue