|
<script lang="ts">
|
|
export let parameters = [] as any[];
|
|
import ParamViewer from "@gradio/paramviewer";
|
|
|
|
interface OriginalParam {
|
|
annotation: string | null;
|
|
doc: string;
|
|
default?: string | null;
|
|
name: string;
|
|
}
|
|
|
|
interface NewParam {
|
|
type: string | null;
|
|
description: string;
|
|
default: string | null;
|
|
name?: string;
|
|
}
|
|
|
|
function decode_html_entities(text: string | null): string {
|
|
if (text == null) {
|
|
return "";
|
|
}
|
|
|
|
const entities: { [key: string]: string } = {
|
|
""": '"',
|
|
"'": "'",
|
|
"&": "&",
|
|
"<": "<",
|
|
">": ">",
|
|
" ": " ",
|
|
"¡": "¡"
|
|
};
|
|
|
|
const decimal_regex = /&#(\d+);/g;
|
|
const hex_regex = /&#x([0-9A-Fa-f]+);/g;
|
|
const named_regex = new RegExp(Object.keys(entities).join("|"), "g");
|
|
|
|
return text
|
|
.replace(decimal_regex, (_, code) =>
|
|
String.fromCharCode(parseInt(code, 10))
|
|
)
|
|
.replace(hex_regex, (_, code) => String.fromCharCode(parseInt(code, 16)))
|
|
.replace(named_regex, (match) => entities[match]);
|
|
}
|
|
function convert_params(
|
|
original_parameters: OriginalParam[]
|
|
): Record<string, NewParam> {
|
|
let new_parameters: Record<string, NewParam> = {};
|
|
for (let param of original_parameters) {
|
|
new_parameters[param.name] = {
|
|
type: param.annotation
|
|
.replaceAll("Sequence[", "list[")
|
|
.replaceAll("AbstractSet[", "set[")
|
|
.replaceAll("Mapping[", "dict["),
|
|
description: decode_html_entities(param.doc),
|
|
default: param.default || null
|
|
};
|
|
}
|
|
return new_parameters;
|
|
}
|
|
let new_parameters = convert_params(parameters);
|
|
</script>
|
|
|
|
<ParamViewer value={new_parameters} header="Parameters" />
|
|
|