doc-assets

Clone Tools
  • last updated 10 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
- "asciidoc" theme: Completed a first template suite which renders an nxdoc project in terms of the html4/xhtml11 asciidoc backend. Added new templates: singlefile.html.asciidoc, class.html.asciidoc, attributemethod.html.asciidoc, command.html.asciidoc, link.html.asciidoc, listing.html.asciidoc, method.html.asciidoc, object.html.asciidoc, package.html.asciidoc, submethod.html.asciidoc. - nxdoc now distinguishes between rendering format, layout (multifile, singlefile, chunked) and refactored. All layout/format/theme handling, for now, is provided by ::nx::doc::Renderer. - First step towards refactoring/automating template resolution; see the TemplateData class. In a further step, this will permit us to remove redundant declarations of template details in render() and include() statements. - List and link generation are now adaptable based on dedicated templates per theme, e.g., link.html.tmpl|asciidoc. Note that these file-based templates might be replaced by scripted ones at a later point. - Fixed pretty naming of @package - Various refactorings, e.g. renderer mixin layers are now objects, rather than classes.

    • -0
    • +51
    ./attributemethod.html.asciidoc
    • -0
    • +106
    ./class.html.asciidoc
    • -0
    • +62
    ./command.html.asciidoc
    • -0
    • +3
    ./listing.html.asciidoc
    • -0
    • +30
    ./method.html.asciidoc
    • -0
    • +77
    ./multifile.html.tmpl
    • -0
    • +20
    ./object.html.asciidoc
    • -0
    • +45
    ./package.html.asciidoc
    • -0
    • +102
    ./singlefile.html.asciidoc
    • -0
    • +25
    ./submethod.html.asciidoc
  1. … 3 more files in changeset.
- doc-tools: added "-where" to !get - doc-tools: title to internal links, provided css class, added nicer label - updated reference doc

  1. … 5 more files in changeset.
- library/lib/doc-tools.tcl: Added a link renderer for Tcl commands, pointing to the tcl.tk online reference; usage: <<tclcmd /cmd/>>. - library/nx/nx.nxd: Fixed glossary references pointing to mixin classes. - glossary.html.tmpl: Made the tmpl more robust against the non-existence of glossary entries. - method.html.tmpl: Made Type and Protection fully conditional - doc-tools.tcl: added a @project.is_validated attribute to reflect the validation status of a given project. this should later turn into a derived property. - langRef.xotcl: added a missing </tt> closing tag, to avoid tt pollution of the remaining document space.

  1. … 4 more files in changeset.
- documentation work

  1. … 6 more files in changeset.
- library/lib/doc-tools.tcl: added [pinfo append] to collect multiple validation reports per entity - library/lib/doc-tools.tcl / owned_parts(): skip entities which are not structured themselves (namely parameters); otherwise they show up in the lefthand navigation or the autosearch box. also: glossary entries now disappeared from these navigation items (do we need them there?). - library/lib/doc-assets/command.html.tmpl: validation reports need to be fused using [join] - library/lib/doc-assets/command.html.tmpl: fixed subcommand support; adjusted and refined the per-command template, as well as @command validation. - Provided for parameter validation for @command and the extraction of the parametersyntax for commands - nsf.nxd: Added to the NSF documentation, namely completed a first round commands ::nsf::alias throughout ::nsf::log. Also: Refactored some glossary entries to nsf.nxd. - glossary: glossary entries can now be shared between projects; this required to make the back references aware of their project context. - @project: added a depends attribute which can be used to express inter-project dependencies. - An empty @doc string is now reported during validation - processor->process(): Added include/exclude filtering based on namespace patterns

  1. … 4 more files in changeset.
- Changed parametersyntax visualisation to show variable/replacable elements in italics. - Rewrote the method template for attribute accessors/mutators - Revised and refactored the resolution helper of member entities along an inheritance path to reflect member overloading - Reduced verbosity

  1. … 2 more files in changeset.
- Adjusted the TODOs - Completed marking internally-called methods and provided a first documentation draft for them. - Fixed the indentation level for code listings - Now using method.html.tmpl to render per-object methods in class.html.tmpl - Fixed return (out parameter) validation

  1. … 3 more files in changeset.
- Adjusted for multiplicity types - Added new templates: attributemethod.html.tmpl is responsible for rendering accessor/mutators for attribute slots, object.html.tmpl for objects. - I now render attribute slots both in their object parameter view & a method view. Furthermore, I distinguish between the incremental vs. ordinary interface (as requested). - Fixed div boxing scheme (again) - Adjusted various places (method.html.tmpl, submethod.html.tmpl) to display the status marks (more to come) - Streamlined the method views, introducing Type and Protection sections - Started adopting the /obj/ prefix in parameter listings - Made the @use mechanism working again (under validation). Once tiny bit needs to be fixed: The upward propagation of status messages if @use is in place. - Removed the cause for redundant validation calls by traversing the entity hierarchy only once. - Added nx-specific tracers (to distinguish between ensemble and slot objects, ...) For now, they work fine, but are tangled with non-nx tracing. This needs refactoring. - Added another nx-specific tracer which tackles the issue of the __resolve_method_path helper. While quite cumbersome and coupling nxdoc to many internal design decisions of nx, it turns any change in nx.tcl unnecessary. - Fixed ::nx::doc::handleinfo to deal with objects as methods (the case for intermediate ensemble objects). - Added ::nsf::setter support - Fixed the validation support for submethod structures. - Some cleanup (to be continued)

    • -0
    • +78
    ./attributemethod.html.tmpl
  1. … 2 more files in changeset.
- Fixed some naming confusion around @class-object-method - Completed statusmark support down to the @param level - method parameter definitions are now pre-processed during tracing; see ::nx::doc::paraminfo - Continued the pinfo/pdata-based refactoring

  1. … 4 more files in changeset.
Accomplishments: - Completed a first version of the sandboxed (partial) evaluation of Tcl source artifacts (packages, script files, C extensions) based on a dedicated child/slave interp environment: see ::nx::doc::Sandbox; the test suite and the test documentation builts run on it. - Based on this infrastructure, we can now generate a snapshot of a program's structure to be documented (and contrast it to the explicitly documented structure). - Added simplistic css sprites for visualising the doc entity status (extra, missing, mismatch, complete); see also library/lib/doc-assets/status.svg and library/lib/doc-assets/status.png - The entity status is printed optionally along with the print name of an entity - Added switch-like parts to represent properties of doc entities: @deprecated, @stashed, @c-implemented, @syshook. The implementation and use of ::nx::doc::SwitchAttribute should be reviewed after having figured out how to proceed using "switching" objparams. - I provide a multi-property dispatcher as doc-syntactic sugar and for mere convenience: @property

Various:

- Corrected some div-boxing mess in the templates

- Added a filtered helper to process entity collections

- Made the mixin layer infrastructure more symmetric (a revoke operation).

- Added tracers for ::nsf::method and ::nsf::alias (remains to be completed)

- Renamed ::nx::doc to ::nx::processor and turned it into another

mixin layer to trace the doc entity creation in e.g. readin()

- Companion (*.nxd) files: Revised the handling of companion

files. Temporarily moved generic/nsf.nxd in the top-level

directory. We need to find a permanent place as its location is

currently derived from the location of the shared extension. A

candidate is doc/ but this is not linked to the shared extension

location at all.

- processor.readin() now returns a collection of entities created

during its execution.

- Improved robustedness and orthogonality: destroy hooks; the

tag-dispatcher can now handle empty comment lines; when placing NSF

object tracer, we now use the freshly added introspection of an

object system's method aliases.

  1. … 6 more files in changeset.
- Corrected the link generation for autocomplete/search entries in case of @use chaining and made them location-independent - Removed an superfluous div-closing tag in class.html.tmpl - Refactored the backend code for the auto-completion search box, separating the concerns of rendering the JS array of hashes and serialising entities into a dict representation. The latter allows to discriminate entity-specific rendering behaviour (together with the mixin layer facility). - Added the entity type (its pretty name) to the search results presented to the doc user. - Removed the unwanted "::"s from @project and @package names.

  1. … 3 more files in changeset.
- Switch to print_name() for rendering entity names for the search box - Fixed the @parameter generation in method.html.tmpl - @glossary: Support for referencing glossary entries with certain formatting annotations: @gls (minor letters only), @Gls (title), @glspl (plural), @Glspl (title plural), ... Added explicit acronym rendering (long and short forms): @acrfirst, @acr; fixing an id-generation issue for @glossary entities - Completed the first round of amending nx.nxd with @glossary entries and references. - I got rid of curly braces ("{", "}") as marker symbols ("{{...}}", "{{{ ... }}}") for formatting fragments of comment blocks. They proofed sufficiently hairy due to their heavily loaded meaning for the Tcl parser (the unclosed brace issue in Tcl comment blocks, the list-like processing in our comment block parser, ...). Instead, I introduced <<...>> for link-like elements (anchors, glossary references) and MediaWiki-like '''...''' blockmarkers for code listings. Thanks to Victor Guerra for reviewing and discussing this concrete-syntactic design decision. - Increased the robustness of line-by-line parsing for comment blocks. Within the comment block parser, we operate on comment lines as Tcl lists (lindex, lassign, ...). While convenient from a processing perspective, this risks limiting the degrees of freedom when writing comments (e.g., using tabs and spaces to indent inline, grouping words to form lists of lists, ...). By leveraging "args" argument processing through [apply] for line preprocessing, we balance the two requirements. - Verified that @use works between objects and methods. - Some cleanup in the mixin layer code - Resolve interp-alias chains to entity class objects explicitly - Adjusting the Container/Containable mechanism to apply only to part classes relevant to particular container entities. - Fixing support for package rendering as top-level entities (e.g., in the leftbar menu) - Providing the project object to all entities subject to template processing. - Declaring some forwarders public explicitly (to reflect recent changes in the reach of default call protection)

  1. … 3 more files in changeset.
- Major refactoring based on a minimal Mixin Layer facility to modularise optional features (such as templating, documentation verification etc.) in layers of mixins to be applied to the entire entity hierarchy. - Rewrote the html templating machinery in terms of a mixin layer: NxDocRenderer - Used the new modularisation granularity to add @glossary-specific link rendering (following ideas from http://www.alistapart.com/articles/hattrick/) - Completed glossary support and added acronym handling - Added back references and ref counting for @glossary entries (to be displayed with the glossary lists) - I added the short-cut lists for selected part types of @class entities, namely @class-method and @class-attribute. - Fixed the rendering of methods and attributes for ascending alphabetical order.

    • -0
    • +37
    ./glossary.html.tmpl
  1. … 3 more files in changeset.
- Minor revision of template files (to unify the naming of markup labels) - Removed occurrences of old [:let] - Use href() helper method to generate fragments of per-document ("local") anchor names - Introduced more pretty_name and pretty_plurals for part attributes - Make filename generation aware of the property of being a part or partof entity! - Revised the documentation of [::nsf::current] slightly - Adding setter ([:!let]) and getter ([:!get]) to the templating language, both being aware of @use chains. - Refactored the resolution behaviour for part levels, relative to a given entity, into a helper StructuredEntity->owned_parts(). Based on this helper, the navigation structures can be rendered on common grounds (e.g., drop-down search box, menus in th eleft bar) - Adding the attributes "pretty_name" and "pretty_plural" to part attribute slots (used for rendering section names in the nav menu etc.). - Adding a helper method href() to render the href attribute values of entity anchors (links, menu items, ...) - Unified the rendering of the selection data used by the drop-down box for the various entity_types, again, using the owned_parts() helper - Refactored the generation of navigation menu in the left bar into a proper template: leftbar.html.tmpl - Reflect recent naming changes (e.g., predefined.tcl -> nsf.tcl) - Adding support for documentation inheritance; first, fixed @command support for it - Refactored the upward resolution of partof entities into a central and shared facility (Entity->get_upward_path()) - Adjusting for changes in introspection interface (info.callable() -> info.lookup()) - Adding a first aliasing (@use) mechanism. Remains to be tested properly, though it works sufficiently for the known use cases. - Adding some safety checks to Tag->find() - Refactoring context->parse@tag to use the Tag->find() helper (now shared between tag creation and link resolution) - Tag path normalisation (expanding shortcuts, balanced list check, ...) went into Tag->normalise(). - Changed the [:link ...] mechansism ({{@someTag ...}}) to operate on the new tag notation. Added support for sub-method and sub-command link rendering (looks sufficient for the moment). - Changed the existing *.nxd companions to match these notational modifications.

  1. … 5 more files in changeset.
- Added support for companion documentation files (based on the file extension *.nxd) - Moved the nsf and nx documentation blocks in generic/predefined.nxd and library/nx/nx.nxd, respectively - Un-exported @param, provide two aliases @attribute and @parameter (in the respective contexts). - Changed the test suite and the two documentations to reflect the naming changes.

  1. … 6 more files in changeset.
- Added two new templates: method.html.tmpl and submethod.html.tmpl - Generalised the support for sub-commands and sub-methods, including a shortcut notation for tag lines. - Adding the special handling of initcmd blocks of attribute slots: They are processed as @param specifications of their owning (class) object. In a next step, I will limit this special handling to the first comment block only, while subsequent ones are evaluated in the context of the slot object itself. - Fixed an issue with cleaning up the processing-related mixin classes in the CommentBlockParser: As the nested notation of doc entities can conflict with relation slot forwarders (*::info::mixin vs. *::info mixin <add|delete>), I revert to using ::nsf::relation directly. - Fixed the default namespace resolution (still needs some review, once all use cases are figured out!) Changed nx and nsf documentation accordingly. - Add first doc text for Object->info() and its sub-methods (for testing purposes, merely) - Added an initial implementation for parsing level support. By introducing skipping axes into the tag notation (e.g., @..param), we can now differentiate between different scopes of applications for tags. This has a number of advantages: a) processing becomes more efficient (skip-level annotated tags can be identified early), b) we do not have maintain different tag labels for different parsing levels (e.g., @child-object vs. @object), ... - Parsing levels have to be maintained within the documentation processor and provided to the comment block parsers at work. This still has to be accomplished. - Adapted the naming scheme for qualifier tags (for now). Instead of "child" scopes, we coerce the entity names using namespace delimiters (this fits nested objects nicely) - Changed the resolution behaviour for dotted tag labels: Intermediate nodes (i.e., entities) are not allocated anymore, on the fly. Rather, it is a pure id resolution, except from the leaf element which is effectively initialised as a documentation entity. This has major implications: It requires partof entities to exist prior to any part entity. However, the id resolution work can later be reused when introducing the new tag notations into the link block markers in the templating engine (avoiding zombie and widely undescribed doc entities). - Started shifting id generation into part attributes (for the time being). Probably I will do so permanently to avoid the complexity in the various new() factories for doc entity types. - Adjusted the tests accordings and added many more on the navigatable tag notation. - Renamed EntityClass and PartClass into Tag and PartTag. The meta-class names so better reflect their purpose as entity factory classes, based on the tag notation scheme. Added a QualifierTag meta-class which marks tags (@class, @object, @command) which impose extra requirements when not being part of another entity (in particular, default namespace resolution). If not part of another entity, they represent *qualifying* language constructs, i.e. language constructs which help identify other elements (command -> subcommand, object -> nested object or method). - Started harmonising the entity class hierarchy (not ready cooked yet): Entity < StructuredEntity < ContainerEntity < @project < @method < @package < PartEntity < @object (@param) < @class < @command The most important change is that all entities (entity instances) can become parts, however, only a single entity class (@param) is critical about it.

    • -0
    • +37
    ./submethod.html.tmpl
  1. … 4 more files in changeset.
- Replaced the former "exception" handling mechanism by a simplified one. This speeds up e.g. the generation of the current nx.tcl documentation by 15-20%. - Adjusted the tests for the modified CommentBlockParser interface. - Implemented a first version of the revised tagline notation. Changed the documentation in nx.tcl and predefined.tcl accordingly. - Discriminate between parsing simple and complex part entities. In the simple case, multi-line part sections are not allowed anymore. - Adopted the recent changes in the object introspection interfaces

  1. … 4 more files in changeset.
- Refactoring templating code: Separated generic and backend-specific templating behaviour into distinct classes: BaseTemplateData and NxDocTemplateData. Rewrote the getter logic for the @doc strings to retrieve different representations (as_text() and as_list()). - Multi-line block markers: To achieve this, I moved the handling of block markers into the template data classes. - Adjusted the tests for the changes ...

  1. … 3 more files in changeset.
- Added an experimental gathering facility for part objects, relative to a given entity object. It returns a [dict] which allows to reuse the parts gathered throughout the templates rendering process. - Moved the process=@* methods to the doc object (this increases the cohesion). - Adjusted the current documentation artifacts for the changes (@object -> @class where applicable).

  1. … 3 more files in changeset.
- Renamed the existing object.html.tmpl to class.html.tmpl and fix it to reflect class features. Providing an object-only template remains to be done. - Added an experimental gathering facility for part objects, relative to a given entity object. It returns a [dict] which allows to reuse the parts gathered throughout the templates rendering process. - Moved the process=@* methods to the doc object (this increases the cohesion). - Adjusted the current documentation artifacts for the changes (@object -> @class where applicable).

    • -0
    • +264
    ./class.html.tmpl
- Started separating the documentation into four documentation projects, each with its own documentation artifact: nsf (predefined.tcl), nsl/nx (nx.tcl), xotcl (xotcl2.tcl), libraries (several?). - Removed documentation blocks from gentclAPI.decls - Added default namespace resolution for documentation entities. @project and @package can now specify a default namespace which is applied to all relative (not fully qualified) entity names. This avoids the redundant writing of longish qualified entity names. As a @project may contain several @packages, multiple default namespaces can be specified. - Added a distinct @class entity family. - @project and @package can now trace the creation of specified part entities (@class, @object, @command) to be structurally linked to them. - Fixed search box support for @command views - Excluded template files from output directories

  1. … 6 more files in changeset.
- made the "next scripting laguage" a own, loadable tcl package (currently named nx, name is subject of change) - predefined.tcl is now pretty minimal.

  1. … 32 more files in changeset.
- xotcl.c: * new function GetObjectFromNsName() to obtail object or class from a fully qualified namespace name used in method handles (such as e.g. ::nx::core::classes::X) * new function MethodHandleObj() to return a tcl_obj containing the methodhandle * removed obsolete method getFullProcQualifier() * info methods obtain now object and/or class from fully qualified method names (method handles) if possible * return message handles in "current next", "current filterreg" and "... info filter ... -order", which can be used in "info method .... " for obtaining more details. * change all occurrances of "self" in next regression tests to current. - xotcl2.tcl * implemented "self" as a proc to provide extensibility and full backward compatibilty; this opens opportunity to replace now e.g. "self proc" by "current method", etc. * provide full compatibility for "self next", "self filterreg" and "... info filter ... -order", returning old-style multiword method handles (such as e.g. "::C instproc foo") - changed "next" to current in documentation framework and templates

  1. … 19 more files in changeset.
- added redefine-protected to the object template - added methodtype to object template - some documentation updates - some indentation/spacing improvements on xotcl.c - let ".... info method .... METHOD" return values, when METHOD contains namespace prefix. This can be used to obtain the parmeter definitions from nx::core - get forward definition from the original command

  1. … 5 more files in changeset.
- added @properties and has_property to the documentation classes. Current primary purpose: define, which methods are internally-called - added interanlly-called to the method object template

  1. … 4 more files in changeset.
- renamed mk_predefined.xotcl -> mk_predefined.tcl - renamed predefined.xotcl -> predefined.tcl - additional subcommand "info method parametersyntax <methodname>" returns parameters in a syntax similar to the tcl man pages - added ability to pass syntax for forwarded methods via set ::nx::core::signature(::nx::Object-method-forward) (experimental) - fixed documentation system to work with actual version - added undocumented methods for quality control in documentation - added checks for documented, but unavailable methods in documentation - added comparison of documented parameters vs. actual parameters in documentation

  1. … 16 more files in changeset.
- I created a first draft of the nx language manual, based on the new next::doc facilities. It is still incomplete, but demonstrates the use of next::doc for authoring code documentation.

To re-create the language reference (which is not yet integrated into

the build environment), run:

./nextsh tests/doc.xotcl

You will then find an output directory "NextLanguageCore" in your

/tmp/ directory.

- The next::doc comments which are sourced for generating the manual

can be found in generic/gentclAPI.decls and

generic/predefined.xotcl. I tried to add most comments to the

former, as the complexity of the predefined script does not comfort

documentation comments (and vice versa).

- Applied many fixes to the templates (based on the needs of the

language reference)

  1. … 6 more files in changeset.
Adding the interim logo

- Added a placeholder logo image, to replace the YUI one for the time being - Provided for giving some version information at either the project or package level

  1. … 2 more files in changeset.
- Fixed search box and autocompletion support (for packages and objects) - I allow for selecting/deselecting structural features set "private" ("deprecated" remains to be done) - I added the generation of links between documentation entities based on {{...}} markers. Any marker (code as well as links) can now be used in both description and parts sections.

  1. … 1 more file in changeset.