mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 23:21:29 +00:00 
			
		
		
		
	
		
			
	
	
		
			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);
							 | 
						||
| 
								 | 
							
								}
							 |