mirror of
https://github.com/python/cpython.git
synced 2024-11-23 01:45:25 +08:00
gh-115317: Rewrite changelog filter to use vanilla JavaScript (#115324)
Co-authored-by: Tomas R <tomas.roun8@gmail.com>
This commit is contained in:
parent
bee2a11946
commit
341d7874f0
@ -1,6 +1,6 @@
|
|||||||
root = true
|
root = true
|
||||||
|
|
||||||
[*.{py,c,cpp,h,rst,md,yml}]
|
[*.{py,c,cpp,h,js,rst,md,yml}]
|
||||||
trim_trailing_whitespace = true
|
trim_trailing_whitespace = true
|
||||||
insert_final_newline = true
|
insert_final_newline = true
|
||||||
indent_style = space
|
indent_style = space
|
||||||
@ -11,5 +11,5 @@ indent_size = 4
|
|||||||
[*.rst]
|
[*.rst]
|
||||||
indent_size = 3
|
indent_size = 3
|
||||||
|
|
||||||
[*.yml]
|
[*.{js,yml}]
|
||||||
indent_size = 2
|
indent_size = 2
|
||||||
|
@ -1,53 +1,59 @@
|
|||||||
$(document).ready(function() {
|
document.addEventListener("DOMContentLoaded", function () {
|
||||||
// add the search form and bind the events
|
// add the search form and bind the events
|
||||||
$('h1').after([
|
document
|
||||||
'<p>Filter entries by content:',
|
.querySelector("h1")
|
||||||
'<input type="text" value="" id="searchbox" style="width: 50%">',
|
.insertAdjacentHTML(
|
||||||
'<input type="submit" id="searchbox-submit" value="Filter"></p>'
|
"afterend",
|
||||||
].join('\n'));
|
[
|
||||||
|
"<p>Filter entries by content:",
|
||||||
|
'<input type="text" value="" id="searchbox" style="width: 50%">',
|
||||||
|
'<input type="submit" id="searchbox-submit" value="Filter"></p>',
|
||||||
|
].join("\n"),
|
||||||
|
);
|
||||||
|
|
||||||
function dofilter() {
|
function doFilter() {
|
||||||
try {
|
let query;
|
||||||
var query = new RegExp($('#searchbox').val(), 'i');
|
try {
|
||||||
}
|
query = new RegExp(document.querySelector("#searchbox").value, "i");
|
||||||
catch (e) {
|
} catch (e) {
|
||||||
return; // not a valid regex (yet)
|
return; // not a valid regex (yet)
|
||||||
}
|
|
||||||
// find headers for the versions (What's new in Python X.Y.Z?)
|
|
||||||
$('#changelog h2').each(function(index1, h2) {
|
|
||||||
var h2_parent = $(h2).parent();
|
|
||||||
var sections_found = 0;
|
|
||||||
// find headers for the sections (Core, Library, etc.)
|
|
||||||
h2_parent.find('h3').each(function(index2, h3) {
|
|
||||||
var h3_parent = $(h3).parent();
|
|
||||||
var entries_found = 0;
|
|
||||||
// find all the entries
|
|
||||||
h3_parent.find('li').each(function(index3, li) {
|
|
||||||
var li = $(li);
|
|
||||||
// check if the query matches the entry
|
|
||||||
if (query.test(li.text())) {
|
|
||||||
li.show();
|
|
||||||
entries_found++;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
li.hide();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
// if there are entries, show the section, otherwise hide it
|
|
||||||
if (entries_found > 0) {
|
|
||||||
h3_parent.show();
|
|
||||||
sections_found++;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
h3_parent.hide();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
if (sections_found > 0)
|
|
||||||
h2_parent.show();
|
|
||||||
else
|
|
||||||
h2_parent.hide();
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
$('#searchbox').keyup(dofilter);
|
// find headers for the versions (What's new in Python X.Y.Z?)
|
||||||
$('#searchbox-submit').click(dofilter);
|
const h2s = document.querySelectorAll("#changelog h2");
|
||||||
|
for (const h2 of h2s) {
|
||||||
|
let sections_found = 0;
|
||||||
|
// find headers for the sections (Core, Library, etc.)
|
||||||
|
const h3s = h2.parentNode.querySelectorAll("h3");
|
||||||
|
for (const h3 of h3s) {
|
||||||
|
let entries_found = 0;
|
||||||
|
// find all the entries
|
||||||
|
const lis = h3.parentNode.querySelectorAll("li");
|
||||||
|
for (let li of lis) {
|
||||||
|
// check if the query matches the entry
|
||||||
|
if (query.test(li.textContent)) {
|
||||||
|
li.style.display = "block";
|
||||||
|
entries_found++;
|
||||||
|
} else {
|
||||||
|
li.style.display = "none";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// if there are entries, show the section, otherwise hide it
|
||||||
|
if (entries_found > 0) {
|
||||||
|
h3.parentNode.style.display = "block";
|
||||||
|
sections_found++;
|
||||||
|
} else {
|
||||||
|
h3.parentNode.style.display = "none";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (sections_found > 0) {
|
||||||
|
h2.parentNode.style.display = "block";
|
||||||
|
} else {
|
||||||
|
h2.parentNode.style.display = "none";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
document.querySelector("#searchbox").addEventListener("keyup", doFilter);
|
||||||
|
document
|
||||||
|
.querySelector("#searchbox-submit")
|
||||||
|
.addEventListener("click", doFilter);
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user