Index: library/lib/doc-assets/glossary.html.tmpl =================================================================== diff -u -rb067e586fadae95916358904fd8392d073c7c87c -rcfd13f351499bb4b1b1debd55f209419edf1af14 --- library/lib/doc-assets/glossary.html.tmpl (.../glossary.html.tmpl) (revision b067e586fadae95916358904fd8392d073c7c87c) +++ library/lib/doc-assets/glossary.html.tmpl (.../glossary.html.tmpl) (revision cfd13f351499bb4b1b1debd55f209419edf1af14) @@ -1,3 +1,4 @@ +[:?var :@glossary { [:!let gls [:@glossary]] [:? {$gls ne ""} { [:!let entries [sorted $gls name]] @@ -43,4 +44,4 @@ }] }] - + }] Index: library/lib/doc-assets/method.html.tmpl =================================================================== diff -u -re4a5c3979effc10d1e807063956d51c72994db6e -rcfd13f351499bb4b1b1debd55f209419edf1af14 --- library/lib/doc-assets/method.html.tmpl (.../method.html.tmpl) (revision e4a5c3979effc10d1e807063956d51c72994db6e) +++ library/lib/doc-assets/method.html.tmpl (.../method.html.tmpl) (revision cfd13f351499bb4b1b1debd55f209419edf1af14) @@ -59,20 +59,22 @@ }] + [:? {[:!get @syshook] || [:pinfo exists bundle type]} {
Type:
[:pinfo get bundle type]
[:? {[:!get @syshook]} {
internally called, redefinable hook
}]
- + }] + + [:? {[:pinfo get -default 0 bundle redefine-protected]} {
Protection:
- [:? {[:pinfo get -default 0 bundle redefine-protected]} {
redefine-protected
- }]
+ }] Index: library/lib/doc-tools.tcl =================================================================== diff -u -r39306d4d36096f20dba3262638e2a87f04e90111 -rcfd13f351499bb4b1b1debd55f209419edf1af14 --- library/lib/doc-tools.tcl (.../doc-tools.tcl) (revision 39306d4d36096f20dba3262638e2a87f04e90111) +++ library/lib/doc-tools.tcl (.../doc-tools.tcl) (revision cfd13f351499bb4b1b1debd55f209419edf1af14) @@ -871,6 +871,7 @@ :attribute creationdate :attribute {version ""} + :attribute {is_validated 0} :attribute depends:0..*,object,type=[current] :attribute @glossary -class ::nx::doc::PartAttribute { @@ -897,7 +898,8 @@ # test environment more passive by checking for the existance # before calling destroy! # - if {[::nsf::isobject ${:sandbox}]} { + if {[info exists :sandbox] && \ + [::nsf::isobject ${:sandbox}]} { ${:sandbox} destroy } :current_project "" @@ -1698,11 +1700,14 @@ # :public forward print_name %current name :public method statusmark {} { set cls "" - if {[info exists :pdata]} { - set cls [expr {[dict exists ${:pdata} status]?\ - [dict get ${:pdata} status]:""}] - } else { - set cls "extra" + set prj [:current_project] + if {[$prj is_validated]} { + if {[info exists :pdata]} { + set cls [expr {[dict exists ${:pdata} status]?\ + [dict get ${:pdata} status]:""}] + } else { + set cls "extra" + } } set status_mark " " } @@ -1759,28 +1764,48 @@ return [expr {$inline?"$script":[nx::pp render [string trimright $script " \r\n"]]}] } - :method link {tag names} { - set tagpath [split [string trimleft $tag @] .] - lassign [::nx::doc::Tag normalise $tagpath $names] err res - if {$err} { - # puts stderr RES=$res - return "?"; - } - lassign [::nx::doc::Tag find -all -strict {*}$res] err path - if {$err || $path eq ""} { - # puts stderr "FAILED res $path (err-$err-id-[expr {$path eq ""}])" - return "?"; - } - - set path [dict create {*}$path] - set entities [dict keys $path] - set id [lindex $entities end] - return [$id render_link $tag [:rendered_entity] $path] + :method link=tclcmd {cmd} { + # + # TODO: allow the parametrization of the reference URL at the + # project level ... + # + return "$cmd" } + :method link {tag value} { + set unresolvable "?" + if {[string first @ $tag] != 0} { + set m [current method]=$tag + if {[:info lookup methods \ + -source application \ + -callprotection all $m] eq ""} { + return $unresolvable + } + return [:$m $value] + } else { + set names $value + set tagpath [split [string trimleft $tag @] .] + lassign [::nx::doc::Tag normalise $tagpath $names] err res + if {$err} { + # puts stderr RES=$res + return $unresolvable; + } + lassign [::nx::doc::Tag find -all -strict {*}$res] err path + if {$err || $path eq ""} { + # puts stderr "FAILED res $path (err-$err-id-[expr {$path eq ""}])" + return $unresolvable; + } + + set path [dict create {*}$path] + set entities [dict keys $path] + set id [lindex $entities end] + return [$id render_link $tag [:rendered_entity] $path] + } + } + :public method make_link {source} { - set path [dict create {*}[:get_upward_path -attribute {set :name}]] - set tag [[:info class] tag] + set path [dict create {*}[:get_upward_path -attribute {set :name}]] + set tag [[:info class] tag] return [:render_link $tag $source $path] } @@ -1945,6 +1970,7 @@ :method inherited {member} { set inherited [dict create] set prj [:current_project] + if {![$prj eval {info exists :sandbox}]} return; set box [$prj sandbox] set exp "expr {\[::nsf::is class ${:name}\]?\[lreverse \[${:name} info heritage\]\]:\"\"}" set ipath [$box do $exp] @@ -2959,6 +2985,13 @@ } if {$validate} { + # + # TODO: is_validated to later to become a derived/computed + # property ... for now, we just need to escape from setting + # validation-related info in non-validated projects! + # + $project is_validated $validate; # is_validated = 1 + set present_entities [::nx::doc::filtered $provided_entities {[[:origin] eval {info exists :pdata}]}] # TODO: the nspatterns should be consumed from the source # specification and should not be hardcoded here ... review Index: library/nx/nx.nxd =================================================================== diff -u -rcc815189194d14214c6846ca33f39d74b4d8edc5 -rcfd13f351499bb4b1b1debd55f209419edf1af14 --- library/nx/nx.nxd (.../nx.nxd) (revision cc815189194d14214c6846ca33f39d74b4d8edc5) +++ library/nx/nx.nxd (.../nx.nxd) (revision cfd13f351499bb4b1b1debd55f209419edf1af14) @@ -303,7 +303,7 @@ # ''' # Note, however, that '''destroy''' is protected against # application-level redefinition. You must refine it in a subclass -# or a <<@gls mixincls>>. +# or a <<@gls mixin_class>>. # # @syshook @@ -364,7 +364,6 @@ # set obj [Object new] # set cls [Class new] # ''' -# # This will provide object identifiers of the form # e.g. '''::nsf::__#0'''. The uniqueness of auto-generated identifiers # is guaranteed for the scope of the current '''interp'''. @@ -569,7 +568,7 @@ # @class.method {Object "info has mixin"} # # Verifies in a boolean test whether the object has the given <<@gls class>> -# registered as a <<@gls mixincls>>. +# registered as a <<@gls mixin_class>>. # @class.method {Object "info has namespace"} # @@ -598,7 +597,7 @@ # @class.method {Object "info mixin classes"} # -# The list of per-object <<@glspl mixincls>> currently registered for the +# The list of per-object <<@glspl mixin_class>> currently registered for the # object is returned. # @class.method {Object "info parent"} @@ -729,14 +728,14 @@ # @class.attribute {Object mixin} # -# As a setter, '''mixin''' specifies a list of <<@glspl mixincls>> to +# As a setter, '''mixin''' specifies a list of <<@glspl mixin_class>> to # set. Every mixin must be an existing class. In getter mode, you can -# retrieve the list of <<@glspl mixincls>> active for the given object. As for -# introspecting <<@glspl mixincls>>, consider <<@class.method {Object "info +# retrieve the list of <<@glspl mixin_class>> active for the given object. As for +# introspecting <<@glspl mixin_class>>, consider <<@class.method {Object "info # mixin classes"}>> # # @return :list If called as a getter (without arguments), -# '''mixin''' returns the list of current <<@glspl mixincls>> registered +# '''mixin''' returns the list of current <<@glspl mixin_class>> registered # with the object # @class.attribute {Object filter} @@ -753,13 +752,13 @@ # @class.attribute {Class mixin} # -# As a setter, '''mixin''' specifies a list of <<@glspl mixincls>> to -# set for the class. Every <<@gls mixincls>> must be an existing +# As a setter, '''mixin''' specifies a list of <<@glspl mixin_class>> to +# set for the class. Every <<@gls mixin_class>> must be an existing # class. In getter mode, you can retrieve the list of <<@glspl -# mixincls>> active for the given class. +# mixin_class>> active for the given class. # # @return :list If called as a getter (without arguments), '''mixin''' -# returns the list of current <<@glspl mixincls>> registered with the class +# returns the list of current <<@glspl mixin_class>> registered with the class # @class.attribute {Class filter} # Index: library/xotcl/doc/langRef.xotcl =================================================================== diff -u -r6cfab8d93b1fa5fb154d2986919e7e32abb498b8 -rcfd13f351499bb4b1b1debd55f209419edf1af14 --- library/xotcl/doc/langRef.xotcl (.../langRef.xotcl) (revision 6cfab8d93b1fa5fb154d2986919e7e32abb498b8) +++ library/xotcl/doc/langRef.xotcl (.../langRef.xotcl) (revision cfd13f351499bb4b1b1debd55f209419edf1af14) @@ -968,7 +968,7 @@ the method <@tt>create<@/tt> to allocate the object. Note that <@tt>create<@/tt> also calls as - well configure and init to initialized the + well configure and init to initialized the object. Only in seldom cases the programmer may want to suppress the <@tt>create<@/tt> mechanism and just allocate uninitiaized objects via <@tt>alloc<@/tt>. Index: nsf.nxd =================================================================== diff -u -rcc815189194d14214c6846ca33f39d74b4d8edc5 -rcfd13f351499bb4b1b1debd55f209419edf1af14 --- nsf.nxd (.../nsf.nxd) (revision cc815189194d14214c6846ca33f39d74b4d8edc5) +++ nsf.nxd (.../nsf.nxd) (revision cfd13f351499bb4b1b1debd55f209419edf1af14) @@ -65,13 +65,14 @@ # # @pretty_name Object # @pretty_plural Objects + # @glossary alias # # An alias is an alternate name for some artefact. In NSF, the term # "alias" is an abbreviation for a "method alias", which allows to # reuse some command or method unter a certain name. This way, one can -# e.g. reuse Tcl commands like "set" or "unset" without invocation -# overhead as methods for object and classes. +# e.g. reuse Tcl commands like <> or <> +# without invocation overhead as methods for object and classes. # # @pretty_name Alias # @pretty_plural Aliases