mirror of
https://github.com/ankitects/anki.git
synced 2025-09-18 14:02:21 -04:00
Fix some ftl args not being passed correctly in TypeScript
This commit is contained in:
parent
b73c4bfe9c
commit
78b4a391cc
1 changed files with 29 additions and 1 deletions
|
@ -57,6 +57,7 @@ fn render_methods(modules: &[Module], dts_out: &mut String, js_out: &mut String)
|
|||
let key = &translation.key;
|
||||
let func_name = key.replace('-', "_").to_camel_case();
|
||||
let arg_types = get_arg_types(&translation.variables);
|
||||
let args = get_args(&translation.variables);
|
||||
let maybe_args = if translation.variables.is_empty() {
|
||||
""
|
||||
} else {
|
||||
|
@ -73,7 +74,7 @@ export declare function {func_name}({arg_types}): string;",
|
|||
js_out,
|
||||
r#"
|
||||
export function {func_name}({maybe_args}) {{
|
||||
return translate("{key}", {maybe_args})
|
||||
return translate("{key}", {args})
|
||||
}}"#,
|
||||
)
|
||||
.unwrap();
|
||||
|
@ -81,6 +82,33 @@ export function {func_name}({maybe_args}) {{
|
|||
}
|
||||
}
|
||||
|
||||
fn get_args(variables: &[Variable]) -> String {
|
||||
if variables.is_empty() {
|
||||
"".into()
|
||||
} else if variables
|
||||
.iter()
|
||||
.all(|v| v.name == typescript_arg_name(&v.name))
|
||||
{
|
||||
// can use as-is
|
||||
"args".into()
|
||||
} else {
|
||||
let out = variables
|
||||
.iter()
|
||||
.map(|v| format!("\"{}\": args.{}", v.name, typescript_arg_name(&v.name)))
|
||||
.join(", ");
|
||||
format!("{{{}}}", out)
|
||||
}
|
||||
}
|
||||
|
||||
fn typescript_arg_name(name: &str) -> String {
|
||||
let name = name.replace('-', "_").to_camel_case();
|
||||
if name == "new" {
|
||||
"new_".into()
|
||||
} else {
|
||||
name
|
||||
}
|
||||
}
|
||||
|
||||
fn write_translate_method(buf: &mut String) {
|
||||
buf.push_str(
|
||||
"
|
||||
|
|
Loading…
Reference in a new issue