Index: openacs-4/packages/acs-api-browser/tcl/acs-api-documentation-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-api-browser/tcl/acs-api-documentation-procs.tcl,v diff -u -r1.30.2.11 -r1.30.2.12 --- openacs-4/packages/acs-api-browser/tcl/acs-api-documentation-procs.tcl 30 Dec 2015 13:14:59 -0000 1.30.2.11 +++ openacs-4/packages/acs-api-browser/tcl/acs-api-documentation-procs.tcl 1 Jan 2016 11:58:55 -0000 1.30.2.12 @@ -1008,13 +1008,13 @@ return $score } - ad_proc -private is_xotcl_object {scope proc_name} { + ad_proc -private is_object {scope proc_name} { Checks, whether the specified argument is an xotcl object. Does not cause problems when xocl is not loaded. @return boolean value } { set result 0 - catch {set result [::xo::api inscope $scope ::xotcl::Object isobject $proc_name]} + catch {set result [::xo::api inscope $scope ::nsf::is object $proc_name]} return $result } @@ -1164,6 +1164,8 @@ } { + set $namespace_provided_p [expr {$proc_namespace ne ""}] + set script [string trimright $script] template::head::add_style -style $::apidoc::style @@ -1295,13 +1297,6 @@ } elseif {$proc_name in $XOTCL_KEYWORDS} { append html [pretty_token keyword $proc_name] - } elseif {[is_xotcl_object $scope $proc_name]} { - set url [::xo::api object_url \ - -show_source 1 -show_methods 2 \ - $scope $proc_name] - append html "" \ - [pretty_token object $proc_name] - } elseif {[string match "ns*" $proc_name]} { set url "/api-doc/tcl-proc-view?tcl_proc=$proc_name" append html "" \ @@ -1312,21 +1307,46 @@ } elseif {$proc_namespace ne "" && [info commands ::${proc_namespace}::${proc_name}] ne ""} { - set url [api_proc_url ${proc_namespace}::${proc_name}] - append html "" \ - [pretty_token proc $proc_name] - + ns_log notice "proc_namespace <$proc_namespace> ::${proc_namespace}::${proc_name}" + + if {[is_object $scope ${proc_namespace}::${proc_name}]} { + set url [::xo::api object_url \ + -show_source 1 -show_methods 2 \ + $scope ::${proc_namespace}::${proc_name}] + append html "" \ + [pretty_token object $proc_name] + } else { + set url [api_proc_url ${proc_namespace}::${proc_name}] + append html "" \ + [pretty_token proc $proc_name] + } } elseif {[info commands ::$proc_name] ne ""} { - set url [api_proc_url $proc_name] - append html "" \ - [pretty_token proc $proc_name] - + ns_log notice "absolute ::${proc_name}" + if {[is_object $scope ::${proc_name}]} { + set url [::xo::api object_url \ + -show_source 1 -show_methods 2 \ + $scope ::${proc_name}] + append html "" \ + [pretty_token object $proc_name] + } else { + set url [api_proc_url $proc_name] + append html "" \ + [pretty_token proc $proc_name] + } } else { - append html ${proc_name} + append html $proc_name set proc_ok 1 } incr i $procl + if {$proc_name eq "namespace" && !$namespace_provided_p} { + set endPos [string first \n $data $i+1] + if {$endPos > -1} { + set line [string range $data $i+1 $endPos] + regexp {\s*eval\s+(\S+)\s+} $line . proc_namespace + } + } + if {$proc_name eq "regexp" || $proc_name eq "regsub"} { # # Hack for nasty regexp stuff