diff --git a/scripts/lib/sphinx/sphinxHtmlToMarkdown.ts b/scripts/lib/sphinx/sphinxHtmlToMarkdown.ts
index 659967bb21a..a2e078eb1f0 100644
--- a/scripts/lib/sphinx/sphinxHtmlToMarkdown.ts
+++ b/scripts/lib/sphinx/sphinxHtmlToMarkdown.ts
@@ -81,38 +81,40 @@ export async function sphinxHtmlToMarkdown(options: {
$child.find(".viewcode-link").closest("a").remove();
const id = $dl.find("dt").attr("id") || "";
- if (child.name === "dt" && $dl.hasClass("class")) {
- if (!meta.python_api_type) {
- meta.python_api_type = "class";
- meta.python_api_name = id;
- }
+ const python_type = getPythonApiType($dl);
+
+ if (child.name !== "dt" || !python_type) {
+ return `
${$child.html()}
`;
+ }
+ const priorPythonApiType = meta.python_api_type;
+ if (!priorPythonApiType) {
+ meta.python_api_type = python_type;
+ meta.python_api_name = id;
+ }
+
+ if (python_type == "class") {
findByText($, $main, "em.property", "class").remove();
return `${$child.html()}
`;
- } else if (child.name === "dt" && $dl.hasClass("property")) {
- if (!meta.python_api_type) {
- meta.python_api_type = "property";
- meta.python_api_name = id;
+ }
- if (id) {
- $dl.siblings("h1").text(getLastPartFromFullIdentifier(id));
- }
+ if (python_type == "property") {
+ if (!priorPythonApiType && id) {
+ $dl.siblings("h1").text(getLastPartFromFullIdentifier(id));
}
findByText($, $main, "em.property", "property").remove();
const signature = $child.find("em").text()?.replace(/^:\s+/, "");
if (signature.trim().length === 0) return;
return `${signature}
`;
- } else if (child.name === "dt" && $dl.hasClass("method")) {
- if (!meta.python_api_type) {
- meta.python_api_type = "method";
- meta.python_api_name = id;
- if (id) {
+ }
+
+ if (python_type == "method") {
+ if (id) {
+ if (!priorPythonApiType) {
$dl.siblings("h1").text(getLastPartFromFullIdentifier(id));
- }
- } else {
- // Inline methods
- if (id) {
+ } else {
+ // Inline methods
$(`${getLastPartFromFullIdentifier(id)}
`).insertBefore(
$dl,
);
@@ -121,11 +123,10 @@ export async function sphinxHtmlToMarkdown(options: {
findByText($, $main, "em.property", "method").remove();
return `${$child.html()}
`;
- } else if (child.name === "dt" && $dl.hasClass("attribute")) {
- if (!meta.python_api_type) {
- meta.python_api_type = "attribute";
- meta.python_api_name = id;
+ }
+ if (python_type == "attribute") {
+ if (!priorPythonApiType) {
if (id) {
$dl.siblings("h1").text(getLastPartFromFullIdentifier(id));
}
@@ -134,54 +135,47 @@ export async function sphinxHtmlToMarkdown(options: {
const signature = $child.find("em").text()?.replace(/^:\s+/, "");
if (signature.trim().length === 0) return;
return `${signature}
`;
- } else {
- // The attribute is embedded on the class
- const text = $child.text();
- const equalIndex = text.indexOf("=");
- const colonIndex = text.indexOf(":");
- let name = text;
- let type: string | undefined;
- let value: string | undefined;
- if (colonIndex > 0 && equalIndex > 0) {
- name = text.substring(0, colonIndex);
- type = text.substring(colonIndex + 1, equalIndex);
- value = text.substring(equalIndex);
- } else if (colonIndex > 0) {
- name = text.substring(0, colonIndex);
- type = text.substring(colonIndex + 1);
- } else if (equalIndex > 0) {
- name = text.substring(0, equalIndex);
- value = text.substring(equalIndex);
- }
- const output = [
- `${name}
`,
- ];
- if (type) {
- output.push(`${type}
`);
- }
- if (value) {
- output.push(`${value}
`);
- }
- return output.join("\n");
}
- } else if (child.name === "dt" && $dl.hasClass("function")) {
- if (!meta.python_api_type) {
- meta.python_api_type = "function";
- meta.python_api_name = id;
+
+ // Else, the attribute is embedded on the class
+ const text = $child.text();
+ const equalIndex = text.indexOf("=");
+ const colonIndex = text.indexOf(":");
+ let name = text;
+ let type: string | undefined;
+ let value: string | undefined;
+ if (colonIndex > 0 && equalIndex > 0) {
+ name = text.substring(0, colonIndex);
+ type = text.substring(colonIndex + 1, equalIndex);
+ value = text.substring(equalIndex);
+ } else if (colonIndex > 0) {
+ name = text.substring(0, colonIndex);
+ type = text.substring(colonIndex + 1);
+ } else if (equalIndex > 0) {
+ name = text.substring(0, equalIndex);
+ value = text.substring(equalIndex);
+ }
+ const output = [`${name}
`];
+ if (type) {
+ output.push(`${type}
`);
}
+ if (value) {
+ output.push(`${value}
`);
+ }
+ return output.join("\n");
+ }
+
+ if (python_type === "function") {
findByText($, $main, "em.property", "function").remove();
return `${$child.html()}
`;
- } else if (child.name === "dt" && $dl.hasClass("exception")) {
- if (!meta.python_api_type) {
- meta.python_api_type = "exception";
- meta.python_api_name = id;
- }
+ }
+ if (python_type === "exception") {
findByText($, $main, "em.property", "exception").remove();
- return `${$child.html()}
`;
+ return `${$child.html()}
`;
}
- return `${$child.html()}
`;
+ throw new Error(`Unhandled Python type: ${python_type}`);
})
.join("\n");