api_script_documentation (public)
api_script_documentation [ -format format ] path
Defined in packages/acs-api-browser/tcl/acs-api-documentation-procs.tcl
Generates formatted documentation for a content page. Sources the file to obtain the comment or contract at the beginning.
- Switches:
- -format (optional, defaults to
"text/html"
)- the type of documentation to generate. Currently, only
text/html
is supported.- Parameters:
- path (required)
- the path of the Tcl file to examine, relative to the OpenACS root directory.
- Returns:
- the formatted documentation string.
- Error:
- if the file does not exist.
- Partial Call Graph (max 5 caller/called nodes):
- Testcases:
- acs_api_browser_api_script_documentation
Source code: append out "<h3>[file tail $path]</h3>\n" # If it's not a Tcl file, we can't do a heck of a lot yet. Eventually # we'll be able to handle ADPs, at least. if {[file extension $path] eq ".xql"} { append out "<blockquote>DB Query file</blockquote>\n" return $out } elseif { [file extension $path] ne ".tcl" } { set mime_type [ns_guesstype $path] if {[string match image/* $mime_type] && [regexp {packages/(.*)/www/resources/(.*)$} $path . pkg name]} { set preview "<p><img src='/resources/$pkg/$name'>" } else { set preview "" } append out "<blockquote><p><i>Delivered as $mime_type</i>$preview</blockquote>\n" return $out } ad_try { array set doc_elements [api_read_script_documentation $path] } on error {errorMsg} { append out "<blockquote><p><i>Unable to read $path: [ns_quotehtml $errorMsg]</i></blockquote>\n" return $out } array set params [list] if { [info exists doc_elements(param)] } { foreach param $doc_elements(param) { if { [regexp {^([^ \t]+)[ \t](.+)$} $param "" name value] } { set params($name) $value } } } append out "<blockquote>" if { [info exists doc_elements(main)] } { append out <p>[lindex $doc_elements(main) 0] } else { append out "<p><i>Does not contain a contract.</i>" } append out "<dl>\n" # XXX: This does not work at the moment. -bmq # if { [array size doc_elements] > 0 } { # array set as_flags $doc_elements(as_flags) # array set as_filters $doc_elements(as_filters) # array set as_default_value $doc_elements(as_default_value) # if { [llength $doc_elements(as_arg_names)] > 0 } { # append out "<dt>Query Parameters:</dt><dd>\n" # foreach arg_name $doc_elements(as_arg_names) { # append out "<b>$arg_name</b>" # set notes [list] # if { [info exists as_default_value($arg_name)] } { # lappend notes "defaults to <code>\"$as_default_value($arg_name)\"</code>" # } # lappend notes {*}$as_flags($arg_name) # foreach filter $as_filters($arg_name) { # set filter_proc [ad_page_contract_filter_proc $filter] # lappend notes "<a href=\"[api_proc_url $filter_proc]\">$filter</a>" # } # if { [llength $notes] > 0 } { # append out " ([join $notes ", "])" # } # if { [info exists params($arg_name)] } { # append out " - $params($arg_name)" # } # append out "<br>\n" # } # append out "</dd>\n" # } # if { [info exists doc_elements(type)] && $doc_elements(type) ne "" } { # append out "<dt>Returns Type:</dt><dd><a href=\"type-view?type=$doc_elements(type)\">$doc_elements(type)</a>\n" # } # # XXX: Need to support "Returns Properties:" # } append out "<dt>Location:</dt><dd>$path\n" append out [::apidoc::format_common_elements doc_elements] append out "</dl></blockquote>" return $outXQL Not present: Generic, PostgreSQL, Oracle