Browse Source

build based on 5047103

gh-pages
Documenter.jl 2 years ago
parent
commit
48be0c5373
  1. 2
      dev/.documenter-siteinfo.json
  2. 118
      dev/assets/documenter.js
  3. 613
      dev/assets/search.js
  4. 2
      dev/assets/themes/documenter-dark.css
  5. 2
      dev/assets/themes/documenter-light.css
  6. 4
      dev/customprocessing/index.html
  7. 6
      dev/documenter/index.html
  8. 4
      dev/fileformat/index.html
  9. 128
      dev/generated/example.ipynb
  10. 68
      dev/generated/example/index.html
  11. 2
      dev/generated/name/index.html
  12. 2
      dev/index.html
  13. 6
      dev/outputformats/index.html
  14. 4
      dev/pipeline/index.html
  15. 2
      dev/reference/index.html
  16. 2
      dev/search/index.html
  17. 2
      dev/search_index.js
  18. 4
      dev/tips/index.html

2
dev/.documenter-siteinfo.json

@ -1 +1 @@ @@ -1 +1 @@
{"documenter":{"julia_version":"1.9.3","generation_timestamp":"2023-08-27T08:30:18","documenter_version":"0.28.0-DEV"}}
{"documenter":{"julia_version":"1.9.3","generation_timestamp":"2023-09-05T07:31:23","documenter_version":"0.28.0-DEV"}}

118
dev/assets/documenter.js

@ -1,15 +1,15 @@ @@ -1,15 +1,15 @@
// Generated by Documenter.jl
requirejs.config({
paths: {
'highlight-julia': 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/languages/julia.min',
'highlight-julia': 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/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.13.2/jquery-ui.min',
'katex-auto-render': 'https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.4/contrib/auto-render.min',
'jquery': 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.4/jquery.min',
'katex-auto-render': 'https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.8/contrib/auto-render.min',
'jquery': 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.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.16.4/katex.min',
'highlight': 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/highlight.min',
'highlight-julia-repl': 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/languages/julia-repl.min',
'katex': 'https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.8/katex.min',
'highlight': 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min',
'highlight-julia-repl': 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/languages/julia-repl.min',
},
shim: {
"highlight-julia": {
@ -228,26 +228,106 @@ $(document).ready(function () { @@ -228,26 +228,106 @@ $(document).ready(function () {
})
////////////////////////////////////////////////////////////////////////////////
require([], function() {
let searchbox = document.querySelector("#documenter-search-query");
let sidebar = document.querySelector(".docs-sidebar");
require(['jquery'], function($) {
let search_modal_header = `
<header class="modal-card-head gap-2 is-align-items-center is-justify-content-space-between w-100 px-3">
<div class="field mb-0 w-100">
<p class="control has-icons-right">
<input class="input documenter-search-input" type="text" placeholder="Search" />
<span class="icon is-small is-right has-text-primary-dark">
<i class="fas fa-magnifying-glass"></i>
</span>
</p>
</div>
<div class="icon is-size-4 is-clickable close-search-modal">
<i class="fas fa-times"></i>
</div>
</header>
`;
let initial_search_body = `
<div class="has-text-centered my-5 py-5">Type something to get started!</div>
`;
let search_modal_footer = `
<footer class="modal-card-foot">
<span>
<kbd class="search-modal-key-hints">Ctrl</kbd> +
<kbd class="search-modal-key-hints">/</kbd> to search
</span>
<span class="ml-3"> <kbd class="search-modal-key-hints">esc</kbd> to close </span>
</footer>
`;
$(document.body).append(
`
<div class="modal" id="search-modal">
<div class="modal-background"></div>
<div class="modal-card search-min-width-50 search-min-height-100 is-justify-content-center">
${search_modal_header}
<section class="modal-card-body is-flex is-flex-direction-column is-justify-content-center gap-4 search-modal-card-body">
${initial_search_body}
</section>
${search_modal_footer}
</div>
</div>
`
);
document.querySelector(".docs-search-query").addEventListener("click", () => {
openModal();
});
document.querySelector(".close-search-modal").addEventListener("click", () => {
closeModal();
});
$(document).on("click", ".search-result-link", function () {
closeModal();
});
document.addEventListener("keydown", (event) => {
if ((event.ctrlKey || event.metaKey) && event.key === "/") {
if (!sidebar.classList.contains("visible")) {
sidebar.classList.add("visible");
}
searchbox.focus();
return false;
openModal();
} else if (event.key === "Escape") {
if (sidebar.classList.contains("visible")) {
sidebar.classList.remove("visible");
}
searchbox.blur();
return false;
closeModal();
}
return false;
});
// Functions to open and close a modal
function openModal() {
let searchModal = document.querySelector("#search-modal");
searchModal.classList.add("is-active");
document.querySelector(".documenter-search-input").focus();
}
function closeModal() {
let searchModal = document.querySelector("#search-modal");
let initial_search_body = `
<div class="has-text-centered my-5 py-5">Type something to get started!</div>
`;
searchModal.classList.remove("is-active");
document.querySelector(".documenter-search-input").blur();
if (!$(".search-modal-card-body").hasClass("is-justify-content-center")) {
$(".search-modal-card-body").addClass("is-justify-content-center");
}
$(".documenter-search-input").val("");
$(".search-modal-card-body").html(initial_search_body);
}
document
.querySelector("#search-modal .modal-background")
.addEventListener("click", () => {
closeModal();
});
})
////////////////////////////////////////////////////////////////////////////////
require(['jquery'], function($) {

613
dev/assets/search.js

@ -2,189 +2,157 @@ @@ -2,189 +2,157 @@
requirejs.config({
paths: {
'minisearch': 'https://cdn.jsdelivr.net/npm/minisearch@6.1.0/dist/umd/index.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.4/jquery.min',
'jquery': 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.0/jquery.min',
}
});
////////////////////////////////////////////////////////////////////////////////
require(['jquery', 'minisearch', 'lodash'], function($, minisearch, _) {
$(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;
});
require(['jquery', 'minisearch'], function($, minisearch) {
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*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,
},
};
// In general, most search related things will have "search" as a prefix.
// To get an in-depth about the thought process you can refer: https://hetarth02.hashnode.dev/series/gsoc
$("#search-form").submit(function (e) {
e.preventDefault();
});
let results = [];
let timer = undefined;
let ms_data = documenterSearchIndex["docs"].map((x, key) => {
x["id"] = key;
return x;
});
let data = documenterSearchIndex["docs"].map((x, key) => {
x["id"] = key; // minisearch requires a unique for each object
return x;
});
// 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
const stopWords = new Set([
"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",
]);
// 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
const stopWords = new Set([
"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",
]);
let index = new minisearch({
fields: ["title", "text"], // fields to index for full-text search
storeFields: ["location", "title", "text", "category", "page"], // fields to return with search results
let index = new minisearch({
fields: ["title", "text"], // fields to index for full-text search
storeFields: ["location", "title", "text", "category", "page"], // fields to return with search results
processTerm: (term) => {
let word = stopWords.has(term) ? null : term;
if (word) {
// custom trimmer that doesn't strip @ and !, which are used in julia macro and function names
word = word
.replace(/^[^a-zA-Z0-9@!]+/, "")
.replace(/[^a-zA-Z0-9@!]+$/, "");
}
return word ?? null;
},
// add . as a separator, because otherwise "title": "Documenter.Anchors.add!", would not find anything if searching for "add!", only for the entire qualification
tokenize: (string) => string.split(/[\s\-\.]+/),
// options which will be applied during the search
searchOptions: {
boost: { title: 100 },
fuzzy: 2,
processTerm: (term) => {
let word = stopWords.has(term) ? null : term;
if (word) {
// custom trimmer that doesn't strip @ and !, which are used in julia macro and function names
word = word
.replace(/^[^a-zA-Z0-9@!]+/, "")
.replace(/[^a-zA-Z0-9@!]+$/, "");
@ -192,92 +160,210 @@ $(function () { @@ -192,92 +160,210 @@ $(function () {
return word ?? null;
},
// add . as a separator, because otherwise "title": "Documenter.Anchors.add!", would not find anything if searching for "add!", only for the entire qualification
tokenize: (string) => string.split(/[\s\-\.]+/),
searchOptions: {
boost: { title: 100 },
fuzzy: 2,
processTerm: (term) => {
let word = stopWords.has(term) ? null : term;
if (word) {
word = word
.replace(/^[^a-zA-Z0-9@!]+/, "")
.replace(/[^a-zA-Z0-9@!]+$/, "");
}
},
});
return word ?? null;
},
tokenize: (string) => string.split(/[\s\-\.]+/),
},
});
index.addAll(data);
index.addAll(ms_data);
let filters = [...new Set(data.map((x) => x.category))];
var modal_filters = make_modal_body_filters(filters);
var filter_results = [];
searchresults = $("#documenter-search-results");
searchinfo = $("#documenter-search-info");
searchbox = $("#documenter-search-query");
searchform = $(".docs-search");
sidebar = $(".docs-sidebar");
$(document).on("keyup", ".documenter-search-input", function (event) {
// Adding a debounce to prevent disruptions from super-speed typing!
debounce(() => update_search(filter_results), 300);
});
function update_search(querystring) {
let results = [];
$(document).on("click", ".search-filter", function () {
if ($(this).hasClass("search-filter-selected")) {
$(this).removeClass("search-filter-selected");
} else {
$(this).addClass("search-filter-selected");
}
// Adding a debounce to prevent disruptions from crazy clicking!
debounce(() => get_filters(), 300);
});
/**
* A debounce function, takes a function and an optional timeout in milliseconds
*
* @function callback
* @param {number} timeout
*/
function debounce(callback, timeout = 300) {
clearTimeout(timer);
timer = setTimeout(callback, timeout);
}
/**
* Make/Update the search component
*
* @param {string[]} selected_filters
*/
function update_search(selected_filters = []) {
let initial_search_body = `
<div class="has-text-centered my-5 py-5">Type something to get started!</div>
`;
let querystring = $(".documenter-search-input").val();
if (querystring.trim()) {
results = index.search(querystring, {
filter: (result) => result.score >= 1,
filter: (result) => {
// Filtering results
if (selected_filters.length === 0) {
return result.score >= 1;
} else {
return (
result.score >= 1 && selected_filters.includes(result.category)
);
}
},
});
searchresults.empty();
let search_result_container = ``;
let search_divider = `<div class="search-divider w-100"></div>`;
let links = [];
let count = 0;
if (results.length) {
let links = [];
let count = 0;
let search_results = "";
results.forEach(function (result) {
if (result.location) {
if (!links.includes(result.location)) {
searchresults.append(make_search_result(result, querystring));
count++;
results.forEach(function (result) {
if (result.location) {
// Checking for duplication of results for the same page
if (!links.includes(result.location)) {
search_results += make_search_result(result, querystring);
count++;
}
links.push(result.location);
}
});
links.push(result.location);
}
});
let result_count = `<div class="is-size-6">${count} result(s)</div>`;
search_result_container = `
<div class="is-flex is-flex-direction-column gap-2 is-align-items-flex-start">
${modal_filters}
${search_divider}
${result_count}
<div class="is-clipped w-100 is-flex is-flex-direction-column gap-2 is-align-items-flex-start has-text-justified mt-1">
${search_results}
</div>
</div>
`;
} else {
search_result_container = `
<div class="is-flex is-flex-direction-column gap-2 is-align-items-flex-start">
${modal_filters}
${search_divider}
<div class="is-size-6">0 result(s)</div>
</div>
<div class="has-text-centered my-5 py-5">No result found!</div>
`;
}
searchinfo.text("Number of results: " + count);
if ($(".search-modal-card-body").hasClass("is-justify-content-center")) {
$(".search-modal-card-body").removeClass("is-justify-content-center");
}
$(".search-modal-card-body").html(search_result_container);
} else {
filter_results = [];
modal_filters = make_modal_body_filters(filters, filter_results);
if (!$(".search-modal-card-body").hasClass("is-justify-content-center")) {
$(".search-modal-card-body").addClass("is-justify-content-center");
}
$(".search-modal-card-body").html(initial_search_body);
}
}
/**
* Make the modal filter html
*
* @param {string[]} filters
* @param {string[]} selected_filters
* @returns string
*/
function make_modal_body_filters(filters, selected_filters = []) {
let str = ``;
filters.forEach((val) => {
if (selected_filters.includes(val)) {
str += `<a href="javascript:;" class="search-filter search-filter-selected"><span>${val}</span></a>`;
} else {
str += `<a href="javascript:;" class="search-filter"><span>${val}</span></a>`;
}
});
let filter_html = `
<div class="is-flex gap-2 is-flex-wrap-wrap is-justify-content-flex-start is-align-items-center search-filters">
<span class="is-size-6">Filters:</span>
${str}
</div>
`;
return filter_html;
}
/**
* Make the result component given a minisearch result data object and the value of the search input as queryString.
* To view the result object structure, refer: https://lucaong.github.io/minisearch/modules/_minisearch_.html#searchresult
*
* @param {object} result
* @param {string} querystring
* @returns string
*/
function make_search_result(result, querystring) {
let search_divider = `<div class="search-divider w-100"></div>`;
let display_link =
result.location.slice(Math.max(0), Math.min(50, result.location.length)) +
(result.location.length > 30 ? "..." : ""); // To cut-off the link because it messes with the overflow of the whole div
if (result.page !== "") {
display_link += ` (${result.page})`;
}
function make_search_result(result, querystring) {
let display_link =
result.location.slice(Math.max(0), Math.min(50, result.location.length)) +
(result.location.length > 30 ? "..." : "");
let textindex = new RegExp(`\\b${querystring}\\b`, "i").exec(result.text);
let text =
textindex !== null
? result.text.slice(
Math.max(textindex.index - 100, 0),
Math.min(
textindex.index + querystring.length + 100,
result.text.length
)
let textindex = new RegExp(`\\b${querystring}\\b`, "i").exec(result.text);
let text =
textindex !== null
? result.text.slice(
Math.max(textindex.index - 100, 0),
Math.min(
textindex.index + querystring.length + 100,
result.text.length
)
: "";
let display_result = text.length
? "..." +
text.replace(
new RegExp(`\\b${querystring}\\b`, "i"), // For first occurrence
'<span class="search-result-highlight p-1">$&</span>'
) +
"..."
: "";
let result_div = `
<a href="${
)
: ""; // cut-off text before and after from the match
let display_result = text.length
? "..." +
text.replace(
new RegExp(`\\b${querystring}\\b`, "i"), // For first occurrence
'<span class="search-result-highlight p-1">$&</span>'
) +
"..."
: ""; // highlights the match
let in_code = false;
if (!["page", "section"].includes(result.category.toLowerCase())) {
in_code = true;
}
// We encode the full url to escape some special characters which can lead to broken links
let result_div = `
<a href="${encodeURI(
documenterBaseURL + "/" + result.location
}" class="search-result-link px-4 py-2 w-100 is-flex is-flex-direction-column gap-2 my-4">
<div class="w-100 is-flex is-flex-wrap-wrap is-justify-content-space-between is-align-items-center">
<div class="search-result-title has-text-weight-semi-bold">${
result.title
}</div>
)}" class="search-result-link w-100 is-flex is-flex-direction-column gap-2 px-4 py-2">
<div class="w-100 is-flex is-flex-wrap-wrap is-justify-content-space-between is-align-items-flex-start">
<div class="search-result-title has-text-weight-bold ${
in_code ? "search-result-code-title" : ""
}">${result.title}</div>
<div class="property-search-result-badge">${result.category}</div>
</div>
<p>
@ -291,39 +377,20 @@ $(function () { @@ -291,39 +377,20 @@ $(function () {
<i class="fas fa-link"></i> ${display_link}
</div>
</a>
<div class="search-divider"></div>
${search_divider}
`;
return result_div;
}
function update_search_box() {
querystring = searchbox.val();
update_search(querystring);
}
searchbox.keyup(_.debounce(update_search_box, 250));
searchbox.change(update_search_box);
return result_div;
}
// Disable enter-key form submission for the searchbox on the search page
// and just re-run search rather than refresh the whole page.
searchform.keypress(function (event) {
if (event.which == "13") {
if (sidebar.hasClass("visible")) {
sidebar.removeClass("visible");
}
update_search_box();
event.preventDefault();
}
});
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();
});
/**
* Get selected filters, remake the filter html and lastly update the search modal
*/
function get_filters() {
let ele = $(".search-filters .search-filter-selected").get();
filter_results = ele.map((x) => $(x).text().toLowerCase());
modal_filters = make_modal_body_filters(filters, filter_results);
update_search(filter_results);
}
})

2
dev/assets/themes/documenter-dark.css

File diff suppressed because one or more lines are too long

2
dev/assets/themes/documenter-light.css

File diff suppressed because one or more lines are too long

4
dev/customprocessing/index.html

File diff suppressed because one or more lines are too long

6
dev/documenter/index.html

File diff suppressed because one or more lines are too long

4
dev/fileformat/index.html

File diff suppressed because one or more lines are too long

128
dev/generated/example.ipynb

File diff suppressed because one or more lines are too long

68
dev/generated/example/index.html

File diff suppressed because one or more lines are too long

2
dev/generated/name/index.html

File diff suppressed because one or more lines are too long

2
dev/index.html

File diff suppressed because one or more lines are too long

6
dev/outputformats/index.html

File diff suppressed because one or more lines are too long

4
dev/pipeline/index.html

File diff suppressed because one or more lines are too long

2
dev/reference/index.html

File diff suppressed because one or more lines are too long

2
dev/search/index.html

File diff suppressed because one or more lines are too long

2
dev/search_index.js

File diff suppressed because one or more lines are too long

4
dev/tips/index.html

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save