|
<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" /> |
|
|