@@ -71,6 +71,7 @@ declare %private function generate:has-definition($module-info as array(*)) as x
7171declare %private function generate:generate-and-store-xqdoc ($module-info as array (*)) {
7272 let $filename := concat (util:hash ($module-info?1 , "md5" ), ".xml" ),
7373 $xqdoc := generate:module-to-xqdoc ($module-info?2 )
74+
7475 return
7576 xmldb:store ($generate:doc-collection, $filename, $xqdoc)
7677 => xs:anyURI ()
@@ -98,8 +99,19 @@ declare %private function generate:module-to-xqdoc($module as element(module)) a
9899 else
99100 <xqdoc:author>{$module/author/string ()}</xqdoc:author>
100101 }
102+ {
103+ if (empty ($module/see)) then ()
104+ else
105+ <xqdoc:see>{$module/see/string ()}</xqdoc:see>
106+ }
101107 </xqdoc:comment>
102108 </xqdoc:module>
109+ <xqdoc:variables>
110+ {
111+ for $variable in $module/variable
112+ return <xqdoc:variable><xqdoc:name>{ $variable/@name/string () }</xqdoc:name></xqdoc:variable>
113+ }
114+ </xqdoc:variables>
103115 <xqdoc:functions>
104116 {
105117 for $function in $module/function
@@ -113,15 +125,34 @@ declare %private function generate:function-to-xqdoc($function as element(functi
113125 <xqdoc:function>
114126 <xqdoc:name>{$function/@name/string ()}</xqdoc:name>
115127 <xqdoc:signature>{generate:signature ($function)}</xqdoc:signature>
128+ <xqdoc:parameters>{$function/argument ! generate:parameter (.)}</xqdoc:parameters>
129+ <xqdoc:arity>{count ($function/argument)}</xqdoc:arity>
130+ <xqdoc:return>
131+ <xqdoc:type occurrence = "{generate:cardinality ($function/returns/@cardinality)} " >{
132+ $function/returns/@type /string () }</xqdoc:type>
133+ </xqdoc:return>
134+ {
135+ if (empty ($function/annotation)) then () else
136+ <xqdoc:annotations>
137+ {
138+ for $annotation in $function/annotation
139+ return
140+ <xqdoc:annotation>
141+ <xqdoc:name>{ $annotation/@name/string () }</xqdoc:name>
142+ <xqdoc:literal>{
143+ if (empty ($annotation/value )) then () else
144+ "(" || string-join ($annotation/value , ", " ) || ")"
145+ }</xqdoc:literal>
146+ </xqdoc:annotation>
147+ }
148+ </xqdoc:annotations>
149+ }
116150 <xqdoc:comment>
117151 <xqdoc:description>{$function/description/string ()}</xqdoc:description>
118152 {
119153 for $argument in $function/argument
120154 return
121- <xqdoc:param>{
122- "$" || $argument/@var || generate:cardinality ($argument/@cardinality) ||
123- " " || $argument/text ()
124- }</xqdoc:param>
155+ <xqdoc:param>{ "$" || $argument/@var || " " || $argument/text () }</xqdoc:param>
125156 }
126157 <xqdoc:return>
127158 {
@@ -148,6 +179,14 @@ declare %private function generate:cardinality($cardinality as xs:string) as xs:
148179 default return ()
149180};
150181
182+ declare %private function generate:parameter ($argument as element (argument)) as element (xqdoc:parameter) {
183+ <xqdoc:parameter>
184+ <xqdoc:name>{ "$" || $argument/@var }</xqdoc:name>
185+ <xqdoc:type occurrence = "{generate:cardinality ($argument/@cardinality)} " >{
186+ $argument/@type /string () }</xqdoc:type>
187+ </xqdoc:parameter>
188+ };
189+
151190declare %private function generate:signature ($function as element (function )) as xs:string {
152191 let $arguments :=
153192 for $argument in $function/argument
0 commit comments