Skip to content

Commit ff3cccd

Browse files
authored
Merge pull request #1019 from rgantzos/main
Update `advanced-search`
2 parents bdc241e + 9e7cb41 commit ff3cccd

File tree

3 files changed

+27
-14
lines changed

3 files changed

+27
-14
lines changed

.github/scripts/extract-classnames.js

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,27 @@ function traverseDir(dir) {
1919
const regex = /className\(["'`](.*?)["'`]\)/g;
2020
let match;
2121
while ((match = regex.exec(content)) !== null) {
22-
collected.add("ste-" + match[1].replaceAll(" ", "-"));
22+
collected.add({
23+
className: "ste-" + match[1].replaceAll(" ", "-"),
24+
features: [
25+
dir.split("/features/")[1].split("/")[0].replaceAll(".js", ""),
26+
],
27+
});
2328
}
2429
}
2530
}
2631
}
2732

2833
traverseDir(rootDir);
2934

30-
// Write results
31-
fs.writeFileSync(outputFile, JSON.stringify([...collected], null, 2));
32-
console.log(`✅ Extracted ${collected.size} class names to ${outputFile}`);
35+
const mergedFeatures = Object.values(
36+
[...collected].reduce((acc, item) => {
37+
if (!acc[item.className]) {
38+
acc[item.className] = { className: item.className, features: new Set() };
39+
}
40+
item.features.forEach(f => acc[item.className].features.add(f));
41+
return acc;
42+
}, {})
43+
).map(obj => ({ className: obj.className, features: [...obj.features] }));
44+
45+
fs.writeFileSync(outputFile, JSON.stringify(mergedFeatures, null, 2));

.github/workflows/extract-classnames.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ on:
88

99
jobs:
1010
extract:
11+
if: github.repository == 'STForScratch/ScratchTools'
1112
runs-on: ubuntu-latest
1213

1314
steps:

features/advanced-search/script.js

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,32 @@
1-
async function checkIfUser() {
1+
export default async function ({ feature, console, className }) {
22
var search = new URLSearchParams(window.location.search).get("q");
33
var user = await (
44
await fetch(`https://api.scratch.mit.edu/users/${search}/`)
55
).json();
66
if (user.username) {
77
var div = document.createElement("div");
8-
div.className = "ste-search-user";
8+
div.className = className("search user");
99
var pfp = document.createElement("img");
1010
pfp.src = user.profile.images["90x90"];
11-
pfp.className = "ste-search-user-pfp";
11+
pfp.className = className("search user pfp");
1212

1313
var data = document.createElement("div");
14-
data.className = "ste-search-user-data";
14+
data.className = className("search user data");
1515

1616
var span = document.createElement("span");
17-
span.className = "ste-search-user-username";
17+
span.className = className("search user username");
1818
span.textContent = `@${user.username}`;
1919
var p = document.createElement("p");
2020
p.textContent = user.profile.bio;
21-
p.className = "ste-search-user-bio";
21+
p.className = className("search user bio");
2222

2323
div.appendChild(pfp);
2424
data.appendChild(span);
2525
data.appendChild(p);
2626
div.appendChild(data);
2727

2828
var a = document.createElement("a");
29-
a.className = "ste-search-user-btn";
29+
a.className = className("search user btn");
3030
a.href = `/users/${user.username}/`;
3131
var button = document.createElement("button");
3232
button.className = "button";
@@ -35,10 +35,10 @@ async function checkIfUser() {
3535
div.appendChild(a);
3636

3737
var outerDiv = document.createElement("div");
38-
outerDiv.className = "ste-search-border-top";
38+
outerDiv.className = className("search border top");
3939
outerDiv.appendChild(div);
4040

41-
ScratchTools.waitForElements(
41+
feature.page.waitForElements(
4242
"div.sort-controls",
4343
function (box) {
4444
if (!box.querySelector(".ste-search-user")) {
@@ -50,4 +50,3 @@ async function checkIfUser() {
5050
);
5151
}
5252
}
53-
checkIfUser();

0 commit comments

Comments
 (0)