Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
quarto-dev
GitHub Repository: quarto-dev/quarto-cli
Path: blob/main/src/core/json.ts
3557 views
1
/*
2
* json.ts
3
*
4
* Copyright (C) 2025 Posit Software, PBC
5
*/
6
7
export const walkJson = (
8
// deno-lint-ignore no-explicit-any
9
obj: any,
10
test: (v: unknown) => boolean,
11
process: (v: unknown) => unknown,
12
// deno-lint-ignore no-explicit-any
13
): any => {
14
if (test(obj)) {
15
return process(obj);
16
}
17
if (Array.isArray(obj)) {
18
for (let i = 0; i < obj.length; i++) {
19
const v = obj[i];
20
const result = test(v);
21
if (!result) {
22
walkJson(v, test, process);
23
} else {
24
obj[i] = walkJson(v, test, process);
25
}
26
}
27
} else if (typeof obj === "object" && obj) {
28
for (const key in obj) {
29
const v = obj[key];
30
const result = test(v);
31
if (!result) {
32
walkJson(v, test, process);
33
} else {
34
obj[key] = process(v);
35
}
36
}
37
}
38
return obj;
39
};
40
41