doc-assets

Clone Tools
  • last updated 11 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
- apps/utils/nxdoc: Created a first version of a command-line script around the nxdoc machinery, for Makefile integration. - Makefile.in: Added two experimental nxdoc make-targets: [make yuidoc] and [make xowiki]. In addition, provided for a doc-specific cleanup target: [make cleandoc]. Also changed the way TCLLIBPATH is initialised for makefile runs, to preserve the surrounding environment settings. - tests/doc.test: Deactivated obsolete sections; actual cleanup is pending. - Refactored nxdoc code fragments into sub-packages, namely the html and xowiki rendering components; renamed some file and directory. - Some necessary adjustments to make nxdoc work with the new property/variable nomenclature; spotted some misbehaviour of [namespace import] when running under 8.6b2 (to be investigated; see XOTcl-lanfRef.xotcl)

  1. … 68 more files in changeset.
- Allow for defining type specifications for @param entities as an @spec part. - Corrected some inconsistencies in the doc templates for attribute methods - Added object parametersyntax in @class templates (though they appear quite lengthy, keep them at the end of the day?) - Distinguish between the "cls" and "obj" as affices

  1. … 2 more files in changeset.
- Provided proper template for hook methods; started partial support for validating Tcl packages (remains to be completeted, i.e., missing and mismatch support) - Fixed rendering for glossary back-references in the light of nested render() calls. - Refactored the rendering of overview lists/status into proper template; show per-project stats - Made @stashed filtering working; some fixes

    • -0
    • +88
    ./hookmethod.html.yuidoc
    • -0
    • +17
    ./overview.html.yuidoc
  1. … 3 more files in changeset.
- @project.html.yuidoc: reflect changes in asset names - body-chunked.html.yuidoc: Added this template, used to generate the chunked, yuidoc-based xowiki output - leftbar.html.yuidoc: Use link template - Renamed ac-js + api-js to ac.js + api.js - Added Monika's api-next.css - library/lib/doc-tools.tcl: for the xowiki renderer, I completed the asset export (requiring a tcllib installation!), some refactoring to allow for rendering xowiki-style links etc. - Revised TODO

    • -0
    • +27
    ./body-chunked.html.yuidoc
    • -0
    • +46
    ./yuidoc/api-next.css
  1. … 2 more files in changeset.
- glossary.html.yuidoc: Added "Glossary" heading - Revised and commented TODO list

  1. … 1 more file in changeset.
- Added a first version of an xowiki renderer - Reworked the renderer infrastructure to allow for refining templates between renderers (e.g., xowiki-like links in the yuidoc theme etc.) introduces - Templates can now also be defined, stored, and maintained through Tcl scripts (rather than separate template files only). - Clarified the concepts of theme/layout/renderer etc. Major cleanup. - yuidoc: Fixed an issue with setting filter css classes while no filter checkboxes are available.

    • -0
    • +102
    ./@project.html.asciidoc
    • -0
    • +16
    ./@project.html.yuidoc
  1. … 2 more files in changeset.
- Reactivated and extended the filtering support around the yuidoc theme. One can now filter according to various entity states (deprecated, missing, mismatch, protected, ...) - filter.html.yuidoc: Refactored the checkbox battery into a proper template. - Fixed some typos in templates - library/lib/doc-assets/yuidoc/ac-js: Refined the checkbox/visibility mechanism to honour defaultChecked states of checkboxes. - library/lib/doc-assets/yuidoc/api.css: checkbox/visibility selectors are now based on composite class selectors. - Removed @modifier and related selection statements throughout the code. Background: The call-protection state is inferred during verification, so there is no need to actually declare a method protected. Also, filtering in the templates breaks orthogonality when it comes to rendering doc entities at various spots (leftbar, ...). Method filtering can be applied during the initial processing step or visually in the final output. - Added print names for per-object methods

    • -0
    • +10
    ./filter.html.yuidoc
  1. … 3 more files in changeset.
- @class.html.yuidoc: Printing class-scope validation messages. - @object.html.yuidoc: Printing object-scope validation messages. - @method.html.yuidoc: Flattening list structure of validation messages when printed. - Revised and fixed status propagation - Fixed an issue when verifying forwarders/aliases which do not carry any verifiable parameter specifications. Also, I had forgotten to collect paramtersyntax docstrings for forwarders. Addresses an issue reported by Gustaf Neumann trying to make appear the proper paramsyntax of the Object->class() forwarder. - statusmark resolution is now aware of @use chains

  1. … 2 more files in changeset.
- Simplified the render()/include() mechanism: I provide for some context-aware auto-completion of template specifics (name, format, theme). This avoids declaring template specifics redundantly. - For this purpose, renamed some of the templates to reflect their doc entity names: @object -> @object.html.asciidoc|yuidoc. - Theme-specific assets are now stored in a subdir of doc-assets/, named after the theme: doc-assets/yuidoc, doc-assets/asciidoc. - Adding the asciidoc assets subdir, including the asciidoc css - Renamed the theme "tmpl" to "yuidoc": This required to change the corresponding template extensions (*.tmpl -> *.yuidoc) and the include()/render() statements throughout the templates. - Removed the unneeded source.html.tmpl

    • -0
    • +106
    ./@class.html.asciidoc
    • -0
    • +236
    ./@class.html.yuidoc
    • -0
    • +62
    ./@command.html.asciidoc
    • -0
    • +117
    ./@command.html.yuidoc
    • -0
    • +30
    ./@method.html.asciidoc
    • -0
    • +83
    ./@method.html.yuidoc
    • -0
    • +20
    ./@object.html.asciidoc
    • -0
    • +101
    ./@object.html.yuidoc
    • -0
    • +45
    ./@package.html.asciidoc
    • -0
    • +75
    ./@package.html.yuidoc
    • -0
    • +388
    ./asciidoc/xhtml11.css
  1. … 38 more files in changeset.
- "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.