diff --git a/layouts/partials/qmltype.html b/layouts/partials/qmltype.html index 2686d78..d5a923c 100644 --- a/layouts/partials/qmltype.html +++ b/layouts/partials/qmltype.html @@ -22,6 +22,20 @@ {{- else if eq .type "local" -}} {{- $link = printf "%s#prop.%s" $link .prop -}} {{- end -}} + {{- else if .func -}} + {{- $member = printf ".%s()" .func -}} + {{- if eq .type "qt" -}} + {{- $link = printf "%s#%s-method" $link .func -}} + {{- else if eq .type "local" -}} + {{- $link = printf "%s#func.%s" $link .func -}} + {{- end -}} + {{- else if .signal -}} + {{- $member = printf ".%s()" .signal -}} + {{- if eq .type "qt" -}} + {{- $link = printf "%s#%s-signal" $link .signal -}} + {{- else if eq .type "local" -}} + {{- $link = printf "%s#signal.%s" $link .signal -}} + {{- end -}} {{- end -}} {{ .name }}{{ $member }}{{ $of | safeHTML -}} diff --git a/typegen/src/parse.rs b/typegen/src/parse.rs index 9f4e586..d52a29f 100644 --- a/typegen/src/parse.rs +++ b/typegen/src/parse.rs @@ -658,7 +658,7 @@ fn parse_details(comment: Comment) -> String { let mut split = ty.rsplit_once('.').unwrap_or(("", ty)); - let prop = split + let member = split .1 .chars() .next() @@ -671,6 +671,12 @@ fn parse_details(comment: Comment) -> String { }) .unwrap_or(""); + let (prop, func, signal) = match member { + name if name.ends_with("()") => ("", &name[..name.len() - 2], ""), + name if name.ends_with("(s)") => ("", "", &name[..name.len() - 3]), + name => (name, "", ""), + }; + let (mut module, name) = split; if module.is_empty() { @@ -683,7 +689,7 @@ fn parse_details(comment: Comment) -> String { }; accum += &format!( - r#"{{{{< qmltypelink type="{linktype}" module="{module}" name="{name}" prop="{prop}" >}}}}"# + r#"{{{{< qmltypelink type="{linktype}" module="{module}" name="{name}" prop="{prop}" func="{func}" signal="{signal}" >}}}}"# ); src = &src[end..]; }