mirror of https://github.com/python/cpython
48 lines
1.5 KiB
JavaScript
48 lines
1.5 KiB
JavaScript
"use strict";
|
|
|
|
const GLOSSARY_PAGE = "glossary.html";
|
|
|
|
const glossary_search = async () => {
|
|
const response = await fetch("_static/glossary.json");
|
|
if (!response.ok) {
|
|
throw new Error("Failed to fetch glossary.json");
|
|
}
|
|
const glossary = await response.json();
|
|
|
|
const params = new URLSearchParams(document.location.search).get("q");
|
|
if (!params) {
|
|
return;
|
|
}
|
|
|
|
const searchParam = params.toLowerCase();
|
|
const glossaryItem = glossary[searchParam];
|
|
if (!glossaryItem) {
|
|
return;
|
|
}
|
|
|
|
// set up the title text with a link to the glossary page
|
|
const glossaryTitle = document.getElementById("glossary-title");
|
|
glossaryTitle.textContent = "Glossary: " + glossaryItem.title;
|
|
const linkTarget = searchParam.replace(/ /g, "-");
|
|
glossaryTitle.href = GLOSSARY_PAGE + "#term-" + linkTarget;
|
|
|
|
// rewrite any anchor links (to other glossary terms)
|
|
// to have a full reference to the glossary page
|
|
const glossaryBody = document.getElementById("glossary-body");
|
|
glossaryBody.innerHTML = glossaryItem.body;
|
|
const anchorLinks = glossaryBody.querySelectorAll('a[href^="#"]');
|
|
anchorLinks.forEach(function (link) {
|
|
const currentUrl = link.getAttribute("href");
|
|
link.href = GLOSSARY_PAGE + currentUrl;
|
|
});
|
|
|
|
const glossaryResult = document.getElementById("glossary-result");
|
|
glossaryResult.style.display = "";
|
|
};
|
|
|
|
if (document.readyState !== "loading") {
|
|
glossary_search().catch(console.error);
|
|
} else {
|
|
document.addEventListener("DOMContentLoaded", glossary_search);
|
|
}
|