diff --git a/WIP.md b/WIP.md index 38a9038..4b85d69 100644 --- a/WIP.md +++ b/WIP.md @@ -443,6 +443,11 @@ build.bat && check.bat Requires `build.bat` to have produced an up-to-date `_site/`. +The build itself includes an additional guard: `_plugins/nav-integrity-check.rb` runs during the GENERATE phase and aborts the build if any nav-visible page has a `parent:` (or `parent:` + `grand_parent:`) that does not resolve to exactly one page in the nav tree. It catches two failure modes: + +- **Ambiguity** — multiple pages share the title declared in `parent:` and `grand_parent:` is either absent or insufficient to disambiguate. The page would silently appear under every matching parent. +- **Orphan** — no page has the title declared in `parent:`. The page would silently disappear from the navigation sidebar. + ## Repository Use Favor concise one-line git commit messages. diff --git a/docs/Features/Packages/Creating a TWINPACK package.md b/docs/Features/Packages/Creating a TWINPACK package.md index b52a7ed..4883bfc 100644 --- a/docs/Features/Packages/Creating a TWINPACK package.md +++ b/docs/Features/Packages/Creating a TWINPACK package.md @@ -1,6 +1,6 @@ --- title: Creating a TWINPACK Package -parent: Packages +parent: Package Management grand_parent: Features nav_order: 1 permalink: /Features/Packages/Creating-TWINPACK diff --git a/docs/Features/Packages/Importing a package from TWINSERV.md b/docs/Features/Packages/Importing a package from TWINSERV.md index 82bae48..18edcaa 100644 --- a/docs/Features/Packages/Importing a package from TWINSERV.md +++ b/docs/Features/Packages/Importing a package from TWINSERV.md @@ -1,6 +1,6 @@ --- title: Importing a Package from TWINSERV -parent: Packages +parent: Package Management grand_parent: Features nav_order: 2 permalink: /Features/Packages/Importing-TWINSERV diff --git a/docs/Features/Packages/Importing a package from a TWINPACK file.md b/docs/Features/Packages/Importing a package from a TWINPACK file.md index 75c8196..76a0a36 100644 --- a/docs/Features/Packages/Importing a package from a TWINPACK file.md +++ b/docs/Features/Packages/Importing a package from a TWINPACK file.md @@ -1,6 +1,6 @@ --- title: Importing a Package from a TWINPACK File -parent: Packages +parent: Package Management grand_parent: Features nav_order: 3 permalink: /Features/Packages/Importing-TWINPACK diff --git a/docs/Features/Packages/Linked Packages.md b/docs/Features/Packages/Linked Packages.md index 0c53b1d..628c314 100644 --- a/docs/Features/Packages/Linked Packages.md +++ b/docs/Features/Packages/Linked Packages.md @@ -1,6 +1,6 @@ --- title: Linked Packages -parent: Packages +parent: Package Management grand_parent: Features nav_order: 5 permalink: /Features/Packages/Linked diff --git a/docs/Features/Packages/Updating a package.md b/docs/Features/Packages/Updating a package.md index 5f10eab..fd1baf6 100644 --- a/docs/Features/Packages/Updating a package.md +++ b/docs/Features/Packages/Updating a package.md @@ -1,6 +1,6 @@ --- title: Updating a Package -parent: Packages +parent: Package Management grand_parent: Features nav_order: 4 permalink: /Features/Packages/Updating diff --git a/docs/Features/Packages/index.md b/docs/Features/Packages/index.md index 0f68ddf..3813843 100644 --- a/docs/Features/Packages/index.md +++ b/docs/Features/Packages/index.md @@ -1,5 +1,5 @@ --- -title: Packages +title: Package Management parent: Features nav_order: 6 permalink: /Features/Packages/ @@ -8,14 +8,16 @@ redirect_from: - /Packages/What-Is --- -# Packages +# Package Management In twinBASIC, a *package* is a collection of components that you can reference from another twinBASIC project. The components can be modules, classes or interfaces. +twinBASIC comes complete with a package manager service called TWINSERV[^1], allowing you to share and distribute TWINPACK packages to other twinBASIC developers. + A twinBASIC package is distributed as a TWINPACK file that contains everything needed by the components in that package. A project that references a TWINPACK package, imports the whole package into the file system of the root project, resulting in no external dependencies. With TWINPACK packages you group common components together into their own namespace whilst allowing for convenient code reuse without any of the problems often associated with using external DLL libraries. -twinBASIC comes complete with a package manager service called TWINSERV, allowing you to share and distribute TWINPACK packages to other twinBASIC developers. +Please be aware that TWINPACK files currently contain the full source code of your packaged components. It is planned that we will in future allow for creating binary (compiled) TWINPACK files for developers that hold an Ultimate edition licence of twinBASIC. -Please be aware that TWINPACK files currently contain the full sourcecode of your packaged components. It is planned that we will in future allow for creating binary (compiled) TWINPACK files for developers that hold an Ultimate edition licence of twinBASIC. +[^1]: A service of TWINBASIC LLC offered to the user community. diff --git a/docs/Features/index.md b/docs/Features/index.md index ded0ffe..344ec1f 100644 --- a/docs/Features/index.md +++ b/docs/Features/index.md @@ -62,10 +62,14 @@ Modernized GUI components featuring: - 64-bit support and DPI awareness - New controls (QR Code, Multiframe, CheckMark) -### [Packages](Packages/) +### [Package Management](Packages/) + +twinBASIC[^1] has a centralized package repository, called TWINSERV. Users can publish both public and private packages. Package browsing, downloading, and publishing is seamlessly integrated into the IDE. Packages are collections of components that can be referenced from another twinBASIC project. They are distributed as TWINPACK files that contains everything needed by the components in that package. +[^1]: A service of TWINBASIC LLC offered to the user community. + ### [Advanced Features](Advanced/) Advanced programming capabilities: diff --git a/docs/Miscellaneous/Documentation Development.md b/docs/Miscellaneous/Documentation Development.md index cf340f9..753152a 100644 --- a/docs/Miscellaneous/Documentation Development.md +++ b/docs/Miscellaneous/Documentation Development.md @@ -22,7 +22,7 @@ The stable, or machine-accessible part of the documentation tree is rooted on th - [Call](../tB/Core/Call), [ChDir](../tB/Core/ChDir), [ChDrive](../tB/Core/ChDrive), [Class](../tB/Core/Class), [Close](../tB/Core/Close), [CoClass](../tB/Core/CoClass), [Const](../tB/Core/Const), [Continue](../tB/Core/Continue) - [Date](../tB/Core/Date), [Declare](../tB/Core/Declare), [Deftype](../tB/Core/Deftype), [DeleteSetting](../tB/Core/DeleteSetting), [Dim](../tB/Core/Dim), [Do-Loop](../tB/Core/Do-Loop) - [End](../tB/Core/End), [Enum](../tB/Core/Enum), [Erase](../tB/Core/Erase), [Error](../tB/Core/Error), [Event](../tB/Core/Event), [Exit](../tB/Core/Exit) -- [FileCopy](../tB/Core/FileCopy), [For-Next](/tB/Core/For-Next), [For-Each-Next](../tB/Core/For-Each-Next), [Function](../tB/Core/Function) +- [FileCopy](../tB/Core/FileCopy), [For-Next](../tB/Core/For-Next), [For-Each-Next](../tB/Core/For-Each-Next), [Function](../tB/Core/Function) - [Get](../tB/Core/Get), [GetSetting](../tB/Core/GetSetting), [GoSub-Return](../tB/Core/GoSub-Return), [GoTo](../tB/Core/GoTo) - [If-Then-Else](../tB/Core/If-Then-Else), [Implements](../tB/Core/Implements), [Input](../tB/Core/Input), [Interface](../tB/Core/Interface), [Is](../tB/Core/Is) - [Kill](../tB/Core/Kill) @@ -37,40 +37,107 @@ The stable, or machine-accessible part of the documentation tree is rooted on th - [Unload](../tB/Core/Unload), [Unlock](../tB/Core/Unlock) - [While-Wend](../tB/Core/While-Wend), [Width](../tB/Core/Width), [With](../tB/Core/With), [Write](../tB/Core/Write) -### /tB/Modules/\/\ - -Within each module, each procedure or statement has its own stand-alone page, e.g. [**LenB**: /tB/Modules/Strings/Len](../tB/Modules/Strings/Len). The `$`-suffixed and `B`/`W` variants are documented on the same page as the base symbol (so `LenB`, `Len$`, etc. all share the [`Len`](../tB/Modules/Strings/Len) page). - -These are modules within VBA and VBRUN: - -- VBA - - [Collection](../tB/Modules/Collection) - - [Compilation](../tB/Modules/Compilation) - - [Constants](../tB/Modules/Constants) - - [Conversion](../tB/Modules/Conversion) - - [DateTime](../tB/Modules/DateTime) - - [ErrObject](../tB/Modules/ErrObject) - - [ExpressionService](../tB/Modules/ExpressionService) - - [FileSystem](../tB/Modules/FileSystem) - - [Financial](../tB/Modules/Financial) - - [Information](../tB/Modules/Information) - - [Interaction](../tB/Modules/Interaction) - - [Math](../tB/Modules/Math) - - [Strings](../tB/Modules/Strings) - - Internal [_HiddenModule](../tB/Modules/HiddenModule) -- VBRUN - - [AmbientProperties](../tB/Modules/AmbientProperties) - - [AsyncProperty](../tB/Modules/AsyncProperty) - - [Constants](../tB/Modules/Constants) - - [ContainedControls](../tB/Modules/ContainedControls) - - [DataMembers](../tB/Modules/DataMembers) - - [DataObject](../tB/Modules/DataObject) - - [ErrorCallstack](../tB/Modules/ErrorCallstack) - - [ErrorContext](../tB/Modules/ErrorContext) - - [ErrorStackFrame](../tB/Modules/ErrorStackFrame) - - [Hyperlink](../tB/Modules/Hyperlink) - - [ParentControls](../tB/Modules/ParentControls) - - [PropertyBag](../tB/Modules/PropertyBag) +### /tB/Modules/\/\ + +Within each VBA module, each procedure, property, or statement has its own stand-alone page, e.g. [**LenB**: /tB/Modules/Strings/Len](../tB/Modules/Strings/Len). The `$`-suffixed and `B`/`W` variants are documented on the same page as the base symbol (so `LenB`, `Len$`, etc. all share the [`Len`](../tB/Modules/Strings/Len) page). + +- [Collection](../tB/Modules/Collection) +- [Compilation](../tB/Modules/Compilation) +- [Constants](../tB/Modules/Constants) +- [Conversion](../tB/Modules/Conversion) +- [DateTime](../tB/Modules/DateTime) +- [ErrObject](../tB/Modules/ErrObject) +- [TbExpressionService](../tB/Modules/TbExpressionService) +- [FileSystem](../tB/Modules/FileSystem) +- [Financial](../tB/Modules/Financial) +- [Information](../tB/Modules/Information) +- [Interaction](../tB/Modules/Interaction) +- [Math](../tB/Modules/Math) +- [Strings](../tB/Modules/Strings) +- Internal [_HiddenModule](../tB/Modules/HiddenModule) + +### /tB/Packages/\/... + +Each package lives under `/tB/Packages//`. The sub-structure depends on the package: modules, classes, enumerations, and sub-objects each have their own page. + +#### VBRUN -- /tB/Packages/VBRUN/\/ + +- [AmbientProperties](../tB/Packages/VBRUN/AmbientProperties) +- [AsyncProperty](../tB/Packages/VBRUN/AsyncProperty) +- [Constants](../tB/Packages/VBRUN/Constants) +- [ContainedControls](../tB/Packages/VBRUN/ContainedControls) +- [DataMembers](../tB/Packages/VBRUN/DataMembers) +- [DataObject](../tB/Packages/VBRUN/DataObject) +- [ErrorCallstack](../tB/Packages/VBRUN/ErrorCallstack) +- [ErrorContext](../tB/Packages/VBRUN/ErrorContext) +- [ErrorStackFrame](../tB/Packages/VBRUN/ErrorStackFrame) +- [Hyperlink](../tB/Packages/VBRUN/Hyperlink) +- [ParentControls](../tB/Packages/VBRUN/ParentControls) +- [PropertyBag](../tB/Packages/VBRUN/PropertyBag) + +#### VB -- /tB/Packages/VB/\/ + +- [App](../tB/Packages/VB/App), [CheckBox](../tB/Packages/VB/CheckBox), [CheckMark](../tB/Packages/VB/CheckMark), [Clipboard](../tB/Packages/VB/Clipboard), [ComboBox](../tB/Packages/VB/ComboBox), [CommandButton](../tB/Packages/VB/CommandButton) +- [Data](../tB/Packages/VB/Data), [DirListBox](../tB/Packages/VB/DirListBox), [DriveListBox](../tB/Packages/VB/DriveListBox) +- [FileListBox](../tB/Packages/VB/FileListBox), [Form](../tB/Packages/VB/Form), [Frame](../tB/Packages/VB/Frame), [Global](../tB/Packages/VB/Global) +- [HScrollBar](../tB/Packages/VB/HScrollBar), [Image](../tB/Packages/VB/Image) +- [Label](../tB/Packages/VB/Label), [Line](../tB/Packages/VB/Line), [ListBox](../tB/Packages/VB/ListBox) +- [MDIForm](../tB/Packages/VB/MDIForm), [Menu](../tB/Packages/VB/Menu), [MultiFrame](../tB/Packages/VB/MultiFrame) +- [OLE](../tB/Packages/VB/OLE), [OptionButton](../tB/Packages/VB/OptionButton) +- [PictureBox](../tB/Packages/VB/PictureBox), [Printer](../tB/Packages/VB/Printer), [Printers](../tB/Packages/VB/Printers), [PropertyPage](../tB/Packages/VB/PropertyPage) +- [QRCode](../tB/Packages/VB/QRCode), [Report](../tB/Packages/VB/Report) +- [Screen](../tB/Packages/VB/Screen), [Shape](../tB/Packages/VB/Shape) +- [TextBox](../tB/Packages/VB/TextBox), [Timer](../tB/Packages/VB/Timer) +- [UserControl](../tB/Packages/VB/UserControl), [VScrollBar](../tB/Packages/VB/VScrollBar) + +#### WebView2 -- /tB/Packages/WebView2/... + +- [WebView2](../tB/Packages/WebView2/WebView2) (control class, with [EnvironmentOptions](../tB/Packages/WebView2/WebView2/EnvironmentOptions) sub-page) +- [WebView2Header](../tB/Packages/WebView2/WebView2Header), [WebView2HeadersCollection](../tB/Packages/WebView2/WebView2HeadersCollection), [WebView2Request](../tB/Packages/WebView2/WebView2Request), [WebView2RequestHeaders](../tB/Packages/WebView2/WebView2RequestHeaders), [WebView2Response](../tB/Packages/WebView2/WebView2Response), [WebView2ResponseHeaders](../tB/Packages/WebView2/WebView2ResponseHeaders) +- Enumerations: [wv2DefaultDownloadCornerAlign](../tB/Packages/WebView2/Enumerations/wv2DefaultDownloadCornerAlign), [wv2ErrorStatus](../tB/Packages/WebView2/Enumerations/wv2ErrorStatus), [wv2HostResourceAccessKind](../tB/Packages/WebView2/Enumerations/wv2HostResourceAccessKind), [wv2KeyEventKind](../tB/Packages/WebView2/Enumerations/wv2KeyEventKind), [wv2PermissionKind](../tB/Packages/WebView2/Enumerations/wv2PermissionKind), [wv2PermissionState](../tB/Packages/WebView2/Enumerations/wv2PermissionState), [wv2PrintOrientation](../tB/Packages/WebView2/Enumerations/wv2PrintOrientation), [wv2ProcessFailedKind](../tB/Packages/WebView2/Enumerations/wv2ProcessFailedKind), [wv2ScriptDialogKind](../tB/Packages/WebView2/Enumerations/wv2ScriptDialogKind), [wv2WebResourceContext](../tB/Packages/WebView2/Enumerations/wv2WebResourceContext) +- Types: [COREWEBVIEW2_PHYSICAL_KEY_STATUS](../tB/Packages/WebView2/Types/COREWEBVIEW2_PHYSICAL_KEY_STATUS) + +#### Assert -- /tB/Packages/Assert/\ + +- [Exact](../tB/Packages/Assert/Exact), [Strict](../tB/Packages/Assert/Strict), [Permissive](../tB/Packages/Assert/Permissive) + +#### CustomControls -- /tB/Packages/CustomControls/... + +- Controls: [WaynesButton](../tB/Packages/CustomControls/WaynesButton) (with [WaynesButtonState](../tB/Packages/CustomControls/WaynesButton/WaynesButtonState)), [WaynesForm](../tB/Packages/CustomControls/WaynesForm) (with [WindowsFormOptions](../tB/Packages/CustomControls/WaynesForm/WindowsFormOptions)), [WaynesFrame](../tB/Packages/CustomControls/WaynesFrame), [WaynesGrid](../tB/Packages/CustomControls/WaynesGrid) (with [CellRenderingOptions](../tB/Packages/CustomControls/WaynesGrid/CellRenderingOptions), [Column](../tB/Packages/CustomControls/WaynesGrid/Column)), [WaynesLabel](../tB/Packages/CustomControls/WaynesLabel), [WaynesSlider](../tB/Packages/CustomControls/WaynesSlider) (with [WaynesSliderState](../tB/Packages/CustomControls/WaynesSlider/WaynesSliderState)), [WaynesTextBox](../tB/Packages/CustomControls/WaynesTextBox) (with [WaynesTextBoxState](../tB/Packages/CustomControls/WaynesTextBox/WaynesTextBoxState)), [WaynesTimer](../tB/Packages/CustomControls/WaynesTimer) +- Styles: [Anchors](../tB/Packages/CustomControls/Styles/Anchors), [Borders](../tB/Packages/CustomControls/Styles/Borders), [Corners](../tB/Packages/CustomControls/Styles/Corners), [Fill](../tB/Packages/CustomControls/Styles/Fill), [Line](../tB/Packages/CustomControls/Styles/Line), [Padding](../tB/Packages/CustomControls/Styles/Padding), [TextRendering](../tB/Packages/CustomControls/Styles/TextRendering) +- Framework: [Canvas](../tB/Packages/CustomControls/Framework/Canvas), [CustomControlContext](../tB/Packages/CustomControls/Framework/CustomControlContext), [CustomControlsCollection](../tB/Packages/CustomControls/Framework/CustomControlsCollection), [CustomControlTimer](../tB/Packages/CustomControls/Framework/CustomControlTimer), [CustomFormContext](../tB/Packages/CustomControls/Framework/CustomFormContext), [ICustomControl](../tB/Packages/CustomControls/Framework/ICustomControl), [ICustomForm](../tB/Packages/CustomControls/Framework/ICustomForm), [SerializeInfo](../tB/Packages/CustomControls/Framework/SerializeInfo) +- Enumerations: [BorderStyle](../tB/Packages/CustomControls/Enumerations/BorderStyle), [ColorRGBA](../tB/Packages/CustomControls/Enumerations/ColorRGBA), [CornerShape](../tB/Packages/CustomControls/Enumerations/CornerShape), [Customtate](../tB/Packages/CustomControls/Enumerations/Customtate), [DockMode](../tB/Packages/CustomControls/Enumerations/DockMode), [FillPattern](../tB/Packages/CustomControls/Enumerations/FillPattern), [FontWeight](../tB/Packages/CustomControls/Enumerations/FontWeight), [PixelCount](../tB/Packages/CustomControls/Enumerations/PixelCount), [PointSize](../tB/Packages/CustomControls/Enumerations/PointSize), [StartupPosition](../tB/Packages/CustomControls/Enumerations/StartupPosition), [TextAlignment](../tB/Packages/CustomControls/Enumerations/TextAlignment), [TextOverflowMode](../tB/Packages/CustomControls/Enumerations/TextOverflowMode), [WindowState](../tB/Packages/CustomControls/Enumerations/WindowState) + +#### CEF -- /tB/Packages/CEF/... + +- [CefBrowser](../tB/Packages/CEF/CefBrowser) (control class, with [EnvironmentOptions](../tB/Packages/CEF/CefBrowser/EnvironmentOptions) sub-page) +- Enumerations: [CefLogSeverity](../tB/Packages/CEF/Enumerations/CefLogSeverity), [cefPrintOrientation](../tB/Packages/CEF/Enumerations/cefPrintOrientation) + +#### WinEventLogLib -- /tB/Packages/WinEventLogLib/\ + +- [EventLog](../tB/Packages/WinEventLogLib/EventLog), [EventLogHelperPublic](../tB/Packages/WinEventLogLib/EventLogHelperPublic) + +#### WinNamedPipesLib -- /tB/Packages/WinNamedPipesLib/\ + +- [NamedPipeClientConnection](../tB/Packages/WinNamedPipesLib/NamedPipeClientConnection), [NamedPipeClientManager](../tB/Packages/WinNamedPipesLib/NamedPipeClientManager), [NamedPipeServer](../tB/Packages/WinNamedPipesLib/NamedPipeServer), [NamedPipeServerConnection](../tB/Packages/WinNamedPipesLib/NamedPipeServerConnection) + +#### WinServicesLib -- /tB/Packages/WinServicesLib/... + +- [ITbService](../tB/Packages/WinServicesLib/ITbService), [ServiceCreator](../tB/Packages/WinServicesLib/ServiceCreator), [ServiceManager](../tB/Packages/WinServicesLib/ServiceManager), [Services](../tB/Packages/WinServicesLib/Services), [ServiceState](../tB/Packages/WinServicesLib/ServiceState) +- Enumerations: [ServiceControlCodeConstants](../tB/Packages/WinServicesLib/Enumerations/ServiceControlCodeConstants), [ServiceStartConstants](../tB/Packages/WinServicesLib/Enumerations/ServiceStartConstants), [ServiceStatusConstants](../tB/Packages/WinServicesLib/Enumerations/ServiceStatusConstants), [ServiceTypeConstants](../tB/Packages/WinServicesLib/Enumerations/ServiceTypeConstants) + +#### tbIDE -- /tB/Packages/tbIDE/\ + +- [AddIn](../tB/Packages/tbIDE/AddIn), [AddinTimer](../tB/Packages/tbIDE/AddinTimer), [Button](../tB/Packages/tbIDE/Button), [CodeEditor](../tB/Packages/tbIDE/CodeEditor), [DebugConsole](../tB/Packages/tbIDE/DebugConsole), [Editor](../tB/Packages/tbIDE/Editor), [Editors](../tB/Packages/tbIDE/Editors) +- [File](../tB/Packages/tbIDE/File), [FileSystem](../tB/Packages/tbIDE/FileSystem), [FileSystemItem](../tB/Packages/tbIDE/FileSystemItem), [Folder](../tB/Packages/tbIDE/Folder) +- [Host](../tB/Packages/tbIDE/Host), [HtmlElement](../tB/Packages/tbIDE/HtmlElement), [HtmlElementProperties](../tB/Packages/tbIDE/HtmlElementProperties), [HtmlElementProperty](../tB/Packages/tbIDE/HtmlElementProperty), [HtmlElements](../tB/Packages/tbIDE/HtmlElements), [HtmlEventProperties](../tB/Packages/tbIDE/HtmlEventProperties), [HtmlEventProperty](../tB/Packages/tbIDE/HtmlEventProperty) +- [KeyboardShortcuts](../tB/Packages/tbIDE/KeyboardShortcuts), [Project](../tB/Packages/tbIDE/Project), [Themes](../tB/Packages/tbIDE/Themes), [Toolbar](../tB/Packages/tbIDE/Toolbar), [Toolbars](../tB/Packages/tbIDE/Toolbars), [ToolWindow](../tB/Packages/tbIDE/ToolWindow), [ToolWindows](../tB/Packages/tbIDE/ToolWindows) + +#### WinNativeCommonCtls -- /tB/Packages/WinNativeCommonCtls/... + +- Controls: [DTPicker](../tB/Packages/WinNativeCommonCtls/DTPicker), [ImageList](../tB/Packages/WinNativeCommonCtls/ImageList), [ListView](../tB/Packages/WinNativeCommonCtls/ListView), [MonthView](../tB/Packages/WinNativeCommonCtls/MonthView), [ProgressBar](../tB/Packages/WinNativeCommonCtls/ProgressBar), [Slider](../tB/Packages/WinNativeCommonCtls/Slider), [TreeView](../tB/Packages/WinNativeCommonCtls/TreeView), [UpDown](../tB/Packages/WinNativeCommonCtls/UpDown) +- Sub-objects: [ListImages](../tB/Packages/WinNativeCommonCtls/ImageList/ListImages), [ListImage](../tB/Packages/WinNativeCommonCtls/ImageList/ListImage), [ListItems](../tB/Packages/WinNativeCommonCtls/ListView/ListItems), [ListItem](../tB/Packages/WinNativeCommonCtls/ListView/ListItem), [ColumnHeaders](../tB/Packages/WinNativeCommonCtls/ListView/ColumnHeaders), [ColumnHeader](../tB/Packages/WinNativeCommonCtls/ListView/ColumnHeader), [Nodes](../tB/Packages/WinNativeCommonCtls/TreeView/Nodes), [Node](../tB/Packages/WinNativeCommonCtls/TreeView/Node) +- Enumerations: [DTPickerFormatConstants](../tB/Packages/WinNativeCommonCtls/Enumerations/DTPickerFormatConstants), [ImlDrawConstants](../tB/Packages/WinNativeCommonCtls/Enumerations/ImlDrawConstants), [OrientationConstants](../tB/Packages/WinNativeCommonCtls/Enumerations/OrientationConstants), [TreeBorderStyleConstants](../tB/Packages/WinNativeCommonCtls/Enumerations/TreeBorderStyleConstants), [TreeLabelEditConstants](../tB/Packages/WinNativeCommonCtls/Enumerations/TreeLabelEditConstants), [TreeLineStyleConstants](../tB/Packages/WinNativeCommonCtls/Enumerations/TreeLineStyleConstants), [TreeRelationshipConstants](../tB/Packages/WinNativeCommonCtls/Enumerations/TreeRelationshipConstants), [TreeSortOrderConstants](../tB/Packages/WinNativeCommonCtls/Enumerations/TreeSortOrderConstants), [TreeSortTypeConstants](../tB/Packages/WinNativeCommonCtls/Enumerations/TreeSortTypeConstants), [TreeStyleConstants](../tB/Packages/WinNativeCommonCtls/Enumerations/TreeStyleConstants) ### /tB/Core/Attributes#\ @@ -96,7 +163,7 @@ These are modules within VBA and VBRUN: ## Development Environment -The documentation is built (renderd to html) using [Jekyll][jekyllrb]. +The documentation is built (rendered to html) using [Jekyll][jekyllrb]. 1. Ensure that the necessary [requirements](#requirements) and [additional requirements](#additional-requirements) are met. @@ -124,6 +191,10 @@ or, on Windows only: build.bat +To produce **only** the offline-browsable copy (no `_site/`), writing directly to `_site-offline/`: + + build-offline.bat + ### Checking Link Integrity Before checking link integrity, the documentation must be built. This can be done by ad-hoc by [building](#building), or continuously in the background by [building and serving](#building-and-local-serving). @@ -204,6 +275,8 @@ To render new or changed diagrams, the following should be available: 8. Manually run the build and deployment workflow, as it doesn't start automatically. ![img](Images/run-workflow.png){:width="50%"} + When the workflow is run manually --- whether at the official repository or in a fork --- it also creates a GitHub release with the offline-browsable site copy attached as a zip. + ## Editing Screenshots diff --git a/docs/Reference/Assert/index.md b/docs/Reference/Assert/index.md index e33e5de..d1282c6 100644 --- a/docs/Reference/Assert/index.md +++ b/docs/Reference/Assert/index.md @@ -1,7 +1,6 @@ --- title: Assert Package parent: Packages -grand_parent: Reference Section nav_order: 4 permalink: /tB/Packages/Assert/ has_toc: false diff --git a/docs/Reference/CEF/index.md b/docs/Reference/CEF/index.md index 481dd33..7ec5501 100644 --- a/docs/Reference/CEF/index.md +++ b/docs/Reference/CEF/index.md @@ -1,7 +1,6 @@ --- title: CEF Package parent: Packages -grand_parent: Reference Section nav_order: 6 permalink: /tB/Packages/CEF/ has_toc: false diff --git a/docs/Reference/CustomControls/index.md b/docs/Reference/CustomControls/index.md index 1008c03..37e4456 100644 --- a/docs/Reference/CustomControls/index.md +++ b/docs/Reference/CustomControls/index.md @@ -1,7 +1,6 @@ --- title: CustomControls Package parent: Packages -grand_parent: Reference Section nav_order: 5 permalink: /tB/Packages/CustomControls/ has_toc: false diff --git a/docs/Reference/Packages.md b/docs/Reference/Packages.md index 5e94629..c7716c3 100644 --- a/docs/Reference/Packages.md +++ b/docs/Reference/Packages.md @@ -1,7 +1,6 @@ --- title: Packages -parent: Reference Section -nav_order: 20 +nav_order: 8 permalink: /tB/Packages/ has_toc: false --- diff --git a/docs/Reference/VB/index.md b/docs/Reference/VB/index.md index 0058143..ec0af10 100644 --- a/docs/Reference/VB/index.md +++ b/docs/Reference/VB/index.md @@ -1,7 +1,6 @@ --- title: VB Package parent: Packages -grand_parent: Reference Section nav_order: 1 permalink: /tB/Packages/VB/ has_toc: false diff --git a/docs/Reference/VBA/Constants/VbAppWinStyle.md b/docs/Reference/VBA/Constants/VbAppWinStyle.md index 628c6d2..e0ad83f 100644 --- a/docs/Reference/VBA/Constants/VbAppWinStyle.md +++ b/docs/Reference/VBA/Constants/VbAppWinStyle.md @@ -1,6 +1,7 @@ --- title: VbAppWinStyle parent: Constants Module +grand_parent: VBA Package permalink: /tB/Modules/Constants/VbAppWinStyle redirect_from: - /tB/Core/VbAppWinStyle diff --git a/docs/Reference/VBA/Constants/VbArchitecture.md b/docs/Reference/VBA/Constants/VbArchitecture.md index ff0a6f8..1d4d3e3 100644 --- a/docs/Reference/VBA/Constants/VbArchitecture.md +++ b/docs/Reference/VBA/Constants/VbArchitecture.md @@ -1,6 +1,7 @@ --- title: VbArchitecture parent: Constants Module +grand_parent: VBA Package permalink: /tB/Modules/Constants/VbArchitecture redirect_from: - /tB/Core/VbArchitecture diff --git a/docs/Reference/VBA/Constants/VbCalendar.md b/docs/Reference/VBA/Constants/VbCalendar.md index 00c12c1..770f31c 100644 --- a/docs/Reference/VBA/Constants/VbCalendar.md +++ b/docs/Reference/VBA/Constants/VbCalendar.md @@ -1,6 +1,7 @@ --- title: VbCalendar parent: Constants Module +grand_parent: VBA Package permalink: /tB/Modules/Constants/VbCalendar redirect_from: - /tB/Core/VbCalendar diff --git a/docs/Reference/VBA/Constants/VbCallType.md b/docs/Reference/VBA/Constants/VbCallType.md index f5bd6b6..7cd1d3f 100644 --- a/docs/Reference/VBA/Constants/VbCallType.md +++ b/docs/Reference/VBA/Constants/VbCallType.md @@ -1,6 +1,7 @@ --- title: VbCallType parent: Constants Module +grand_parent: VBA Package permalink: /tB/Modules/Constants/VbCallType redirect_from: - /tB/Core/VbCallType diff --git a/docs/Reference/VBA/Constants/VbCompareMethod.md b/docs/Reference/VBA/Constants/VbCompareMethod.md index df9a4ce..47152af 100644 --- a/docs/Reference/VBA/Constants/VbCompareMethod.md +++ b/docs/Reference/VBA/Constants/VbCompareMethod.md @@ -1,6 +1,7 @@ --- title: VbCompareMethod parent: Constants Module +grand_parent: VBA Package permalink: /tB/Modules/Constants/VbCompareMethod redirect_from: - /tB/Core/VbCompareMethod diff --git a/docs/Reference/VBA/Constants/VbDateTimeFormat.md b/docs/Reference/VBA/Constants/VbDateTimeFormat.md index 77eaef4..c75b76d 100644 --- a/docs/Reference/VBA/Constants/VbDateTimeFormat.md +++ b/docs/Reference/VBA/Constants/VbDateTimeFormat.md @@ -1,6 +1,7 @@ --- title: VbDateTimeFormat parent: Constants Module +grand_parent: VBA Package permalink: /tB/Modules/Constants/VbDateTimeFormat redirect_from: - /tB/Core/VbDateTimeFormat diff --git a/docs/Reference/VBA/Constants/VbDayOfWeek.md b/docs/Reference/VBA/Constants/VbDayOfWeek.md index f908f0f..b0be0a1 100644 --- a/docs/Reference/VBA/Constants/VbDayOfWeek.md +++ b/docs/Reference/VBA/Constants/VbDayOfWeek.md @@ -1,6 +1,7 @@ --- title: VbDayOfWeek parent: Constants Module +grand_parent: VBA Package permalink: /tB/Modules/Constants/VbDayOfWeek redirect_from: - /tB/Core/VbDayOfWeek diff --git a/docs/Reference/VBA/Constants/VbFileAttribute.md b/docs/Reference/VBA/Constants/VbFileAttribute.md index 564e646..6fdb2d4 100644 --- a/docs/Reference/VBA/Constants/VbFileAttribute.md +++ b/docs/Reference/VBA/Constants/VbFileAttribute.md @@ -1,6 +1,7 @@ --- title: VbFileAttribute parent: Constants Module +grand_parent: VBA Package permalink: /tB/Modules/Constants/VbFileAttribute redirect_from: - /tB/Core/VbFileAttribute diff --git a/docs/Reference/VBA/Constants/VbFirstWeekOfYear.md b/docs/Reference/VBA/Constants/VbFirstWeekOfYear.md index 1e22f84..dbe1759 100644 --- a/docs/Reference/VBA/Constants/VbFirstWeekOfYear.md +++ b/docs/Reference/VBA/Constants/VbFirstWeekOfYear.md @@ -1,6 +1,7 @@ --- title: VbFirstWeekOfYear parent: Constants Module +grand_parent: VBA Package permalink: /tB/Modules/Constants/VbFirstWeekOfYear redirect_from: - /tB/Core/VbFirstWeekOfYear diff --git a/docs/Reference/VBA/Constants/VbIMEStatus.md b/docs/Reference/VBA/Constants/VbIMEStatus.md index c98aa66..411f808 100644 --- a/docs/Reference/VBA/Constants/VbIMEStatus.md +++ b/docs/Reference/VBA/Constants/VbIMEStatus.md @@ -1,6 +1,7 @@ --- title: VbIMEStatus parent: Constants Module +grand_parent: VBA Package permalink: /tB/Modules/Constants/VbIMEStatus redirect_from: - /tB/Core/VbIMEStatus diff --git a/docs/Reference/VBA/Constants/VbMsgBoxResult.md b/docs/Reference/VBA/Constants/VbMsgBoxResult.md index 630e3ac..f07ea2f 100644 --- a/docs/Reference/VBA/Constants/VbMsgBoxResult.md +++ b/docs/Reference/VBA/Constants/VbMsgBoxResult.md @@ -1,6 +1,7 @@ --- title: VbMsgBoxResult parent: Constants Module +grand_parent: VBA Package permalink: /tB/Modules/Constants/VbMsgBoxResult redirect_from: - /tB/Core/VbMsgBoxResult diff --git a/docs/Reference/VBA/Constants/VbMsgBoxStyle.md b/docs/Reference/VBA/Constants/VbMsgBoxStyle.md index d1218ff..4f15cb7 100644 --- a/docs/Reference/VBA/Constants/VbMsgBoxStyle.md +++ b/docs/Reference/VBA/Constants/VbMsgBoxStyle.md @@ -1,6 +1,7 @@ --- title: VbMsgBoxStyle parent: Constants Module +grand_parent: VBA Package permalink: /tB/Modules/Constants/VbMsgBoxStyle redirect_from: - /tB/Core/VbMsgBoxStyle diff --git a/docs/Reference/VBA/Constants/VbStrConv.md b/docs/Reference/VBA/Constants/VbStrConv.md index 7105b2f..5fe3204 100644 --- a/docs/Reference/VBA/Constants/VbStrConv.md +++ b/docs/Reference/VBA/Constants/VbStrConv.md @@ -1,6 +1,7 @@ --- title: VbStrConv parent: Constants Module +grand_parent: VBA Package permalink: /tB/Modules/Constants/VbStrConv redirect_from: - /tB/Core/VbStrConv diff --git a/docs/Reference/VBA/Constants/VbTriState.md b/docs/Reference/VBA/Constants/VbTriState.md index ca7921a..06fd01d 100644 --- a/docs/Reference/VBA/Constants/VbTriState.md +++ b/docs/Reference/VBA/Constants/VbTriState.md @@ -1,6 +1,7 @@ --- title: VbTriState parent: Constants Module +grand_parent: VBA Package permalink: /tB/Modules/Constants/VbTriState redirect_from: - /tB/Core/VbTriState diff --git a/docs/Reference/VBA/Constants/VbVarType.md b/docs/Reference/VBA/Constants/VbVarType.md index 3c11ed8..cf6a033 100644 --- a/docs/Reference/VBA/Constants/VbVarType.md +++ b/docs/Reference/VBA/Constants/VbVarType.md @@ -1,6 +1,7 @@ --- title: VbVarType parent: Constants Module +grand_parent: VBA Package permalink: /tB/Modules/Constants/VbVarType redirect_from: - /tB/Core/VbVarType diff --git a/docs/Reference/VBA/TbExpressionService/Bind.md b/docs/Reference/VBA/TbExpressionService/Bind.md index fbd0b4c..41a2a3c 100644 --- a/docs/Reference/VBA/TbExpressionService/Bind.md +++ b/docs/Reference/VBA/TbExpressionService/Bind.md @@ -1,6 +1,6 @@ --- title: Bind -parent: TbExpressionService Module +parent: TbExpressionService permalink: /tB/Modules/TbExpressionService/Bind redirect_from: - /tB/Modules/ExpressionService/Bind diff --git a/docs/Reference/VBA/index.md b/docs/Reference/VBA/index.md index bd720eb..d2571e0 100644 --- a/docs/Reference/VBA/index.md +++ b/docs/Reference/VBA/index.md @@ -1,7 +1,6 @@ --- title: VBA Package parent: Packages -grand_parent: Reference Section nav_order: 2 permalink: /tB/Packages/VBA redirect_from: diff --git a/docs/Reference/VBRUN/AmbientProperties/BackColor.md b/docs/Reference/VBRUN/AmbientProperties/BackColor.md index edc2382..d886f4d 100644 --- a/docs/Reference/VBRUN/AmbientProperties/BackColor.md +++ b/docs/Reference/VBRUN/AmbientProperties/BackColor.md @@ -1,6 +1,6 @@ --- title: BackColor -parent: AmbientProperties Module +parent: AmbientProperties permalink: /tB/Packages/VBRUN/AmbientProperties/BackColor --- # BackColor diff --git a/docs/Reference/VBRUN/AmbientProperties/DisplayAsDefault.md b/docs/Reference/VBRUN/AmbientProperties/DisplayAsDefault.md index 59cbb1b..04b7027 100644 --- a/docs/Reference/VBRUN/AmbientProperties/DisplayAsDefault.md +++ b/docs/Reference/VBRUN/AmbientProperties/DisplayAsDefault.md @@ -1,6 +1,6 @@ --- title: DisplayAsDefault -parent: AmbientProperties Module +parent: AmbientProperties permalink: /tB/Packages/VBRUN/AmbientProperties/DisplayAsDefault --- # DisplayAsDefault diff --git a/docs/Reference/VBRUN/AmbientProperties/DisplayName.md b/docs/Reference/VBRUN/AmbientProperties/DisplayName.md index e55890d..f4dd95e 100644 --- a/docs/Reference/VBRUN/AmbientProperties/DisplayName.md +++ b/docs/Reference/VBRUN/AmbientProperties/DisplayName.md @@ -1,6 +1,6 @@ --- title: DisplayName -parent: AmbientProperties Module +parent: AmbientProperties permalink: /tB/Packages/VBRUN/AmbientProperties/DisplayName --- # DisplayName diff --git a/docs/Reference/VBRUN/AmbientProperties/Font.md b/docs/Reference/VBRUN/AmbientProperties/Font.md index 4436c2f..f48b6c9 100644 --- a/docs/Reference/VBRUN/AmbientProperties/Font.md +++ b/docs/Reference/VBRUN/AmbientProperties/Font.md @@ -1,6 +1,6 @@ --- title: Font -parent: AmbientProperties Module +parent: AmbientProperties permalink: /tB/Packages/VBRUN/AmbientProperties/Font --- # Font diff --git a/docs/Reference/VBRUN/AmbientProperties/ForeColor.md b/docs/Reference/VBRUN/AmbientProperties/ForeColor.md index 98965e9..33c12ae 100644 --- a/docs/Reference/VBRUN/AmbientProperties/ForeColor.md +++ b/docs/Reference/VBRUN/AmbientProperties/ForeColor.md @@ -1,6 +1,6 @@ --- title: ForeColor -parent: AmbientProperties Module +parent: AmbientProperties permalink: /tB/Packages/VBRUN/AmbientProperties/ForeColor --- # ForeColor diff --git a/docs/Reference/VBRUN/AmbientProperties/LocaleID.md b/docs/Reference/VBRUN/AmbientProperties/LocaleID.md index f9fb5c8..2fb6e23 100644 --- a/docs/Reference/VBRUN/AmbientProperties/LocaleID.md +++ b/docs/Reference/VBRUN/AmbientProperties/LocaleID.md @@ -1,6 +1,6 @@ --- title: LocaleID -parent: AmbientProperties Module +parent: AmbientProperties permalink: /tB/Packages/VBRUN/AmbientProperties/LocaleID --- # LocaleID diff --git a/docs/Reference/VBRUN/AmbientProperties/MessageReflect.md b/docs/Reference/VBRUN/AmbientProperties/MessageReflect.md index a4a1dcf..47681d9 100644 --- a/docs/Reference/VBRUN/AmbientProperties/MessageReflect.md +++ b/docs/Reference/VBRUN/AmbientProperties/MessageReflect.md @@ -1,6 +1,6 @@ --- title: MessageReflect -parent: AmbientProperties Module +parent: AmbientProperties permalink: /tB/Packages/VBRUN/AmbientProperties/MessageReflect --- # MessageReflect diff --git a/docs/Reference/VBRUN/AmbientProperties/Palette.md b/docs/Reference/VBRUN/AmbientProperties/Palette.md index b822a9f..8965bca 100644 --- a/docs/Reference/VBRUN/AmbientProperties/Palette.md +++ b/docs/Reference/VBRUN/AmbientProperties/Palette.md @@ -1,6 +1,6 @@ --- title: Palette -parent: AmbientProperties Module +parent: AmbientProperties permalink: /tB/Packages/VBRUN/AmbientProperties/Palette --- # Palette diff --git a/docs/Reference/VBRUN/AmbientProperties/RightToLeft.md b/docs/Reference/VBRUN/AmbientProperties/RightToLeft.md index bc6ed53..2b0d90e 100644 --- a/docs/Reference/VBRUN/AmbientProperties/RightToLeft.md +++ b/docs/Reference/VBRUN/AmbientProperties/RightToLeft.md @@ -1,6 +1,6 @@ --- title: RightToLeft -parent: AmbientProperties Module +parent: AmbientProperties permalink: /tB/Packages/VBRUN/AmbientProperties/RightToLeft --- # RightToLeft diff --git a/docs/Reference/VBRUN/AmbientProperties/ScaleUnits.md b/docs/Reference/VBRUN/AmbientProperties/ScaleUnits.md index c112227..d7c5f04 100644 --- a/docs/Reference/VBRUN/AmbientProperties/ScaleUnits.md +++ b/docs/Reference/VBRUN/AmbientProperties/ScaleUnits.md @@ -1,6 +1,6 @@ --- title: ScaleUnits -parent: AmbientProperties Module +parent: AmbientProperties permalink: /tB/Packages/VBRUN/AmbientProperties/ScaleUnits --- # ScaleUnits diff --git a/docs/Reference/VBRUN/AmbientProperties/ShowGrabHandles.md b/docs/Reference/VBRUN/AmbientProperties/ShowGrabHandles.md index b929eef..4502f11 100644 --- a/docs/Reference/VBRUN/AmbientProperties/ShowGrabHandles.md +++ b/docs/Reference/VBRUN/AmbientProperties/ShowGrabHandles.md @@ -1,6 +1,6 @@ --- title: ShowGrabHandles -parent: AmbientProperties Module +parent: AmbientProperties permalink: /tB/Packages/VBRUN/AmbientProperties/ShowGrabHandles --- # ShowGrabHandles diff --git a/docs/Reference/VBRUN/AmbientProperties/ShowHatching.md b/docs/Reference/VBRUN/AmbientProperties/ShowHatching.md index 27df78e..597a066 100644 --- a/docs/Reference/VBRUN/AmbientProperties/ShowHatching.md +++ b/docs/Reference/VBRUN/AmbientProperties/ShowHatching.md @@ -1,6 +1,6 @@ --- title: ShowHatching -parent: AmbientProperties Module +parent: AmbientProperties permalink: /tB/Packages/VBRUN/AmbientProperties/ShowHatching --- # ShowHatching diff --git a/docs/Reference/VBRUN/AmbientProperties/SupportsMnemonics.md b/docs/Reference/VBRUN/AmbientProperties/SupportsMnemonics.md index 9287c71..c4d379c 100644 --- a/docs/Reference/VBRUN/AmbientProperties/SupportsMnemonics.md +++ b/docs/Reference/VBRUN/AmbientProperties/SupportsMnemonics.md @@ -1,6 +1,6 @@ --- title: SupportsMnemonics -parent: AmbientProperties Module +parent: AmbientProperties permalink: /tB/Packages/VBRUN/AmbientProperties/SupportsMnemonics --- # SupportsMnemonics diff --git a/docs/Reference/VBRUN/AmbientProperties/TextAlign.md b/docs/Reference/VBRUN/AmbientProperties/TextAlign.md index a1ddc55..a2b7c4d 100644 --- a/docs/Reference/VBRUN/AmbientProperties/TextAlign.md +++ b/docs/Reference/VBRUN/AmbientProperties/TextAlign.md @@ -1,6 +1,6 @@ --- title: TextAlign -parent: AmbientProperties Module +parent: AmbientProperties permalink: /tB/Packages/VBRUN/AmbientProperties/TextAlign --- # TextAlign diff --git a/docs/Reference/VBRUN/AmbientProperties/UIDead.md b/docs/Reference/VBRUN/AmbientProperties/UIDead.md index 0fc95d8..5798de3 100644 --- a/docs/Reference/VBRUN/AmbientProperties/UIDead.md +++ b/docs/Reference/VBRUN/AmbientProperties/UIDead.md @@ -1,6 +1,6 @@ --- title: UIDead -parent: AmbientProperties Module +parent: AmbientProperties permalink: /tB/Packages/VBRUN/AmbientProperties/UIDead --- # UIDead diff --git a/docs/Reference/VBRUN/AmbientProperties/UserMode.md b/docs/Reference/VBRUN/AmbientProperties/UserMode.md index f4a49b7..d38ee36 100644 --- a/docs/Reference/VBRUN/AmbientProperties/UserMode.md +++ b/docs/Reference/VBRUN/AmbientProperties/UserMode.md @@ -1,6 +1,6 @@ --- title: UserMode -parent: AmbientProperties Module +parent: AmbientProperties permalink: /tB/Packages/VBRUN/AmbientProperties/UserMode --- # UserMode diff --git a/docs/Reference/VBRUN/AsyncProperty/AsyncType.md b/docs/Reference/VBRUN/AsyncProperty/AsyncType.md index 43f9b15..560c5c2 100644 --- a/docs/Reference/VBRUN/AsyncProperty/AsyncType.md +++ b/docs/Reference/VBRUN/AsyncProperty/AsyncType.md @@ -1,6 +1,6 @@ --- title: AsyncType -parent: AsyncProperty Module +parent: AsyncProperty permalink: /tB/Packages/VBRUN/AsyncProperty/AsyncType --- # AsyncType diff --git a/docs/Reference/VBRUN/AsyncProperty/BytesMax.md b/docs/Reference/VBRUN/AsyncProperty/BytesMax.md index cf8d683..8cd090e 100644 --- a/docs/Reference/VBRUN/AsyncProperty/BytesMax.md +++ b/docs/Reference/VBRUN/AsyncProperty/BytesMax.md @@ -1,6 +1,6 @@ --- title: BytesMax -parent: AsyncProperty Module +parent: AsyncProperty permalink: /tB/Packages/VBRUN/AsyncProperty/BytesMax --- # BytesMax diff --git a/docs/Reference/VBRUN/AsyncProperty/BytesRead.md b/docs/Reference/VBRUN/AsyncProperty/BytesRead.md index cab91cf..2fa9da0 100644 --- a/docs/Reference/VBRUN/AsyncProperty/BytesRead.md +++ b/docs/Reference/VBRUN/AsyncProperty/BytesRead.md @@ -1,6 +1,6 @@ --- title: BytesRead -parent: AsyncProperty Module +parent: AsyncProperty permalink: /tB/Packages/VBRUN/AsyncProperty/BytesRead --- # BytesRead diff --git a/docs/Reference/VBRUN/AsyncProperty/PropertyName.md b/docs/Reference/VBRUN/AsyncProperty/PropertyName.md index 58c2db7..9156cc4 100644 --- a/docs/Reference/VBRUN/AsyncProperty/PropertyName.md +++ b/docs/Reference/VBRUN/AsyncProperty/PropertyName.md @@ -1,6 +1,6 @@ --- title: PropertyName -parent: AsyncProperty Module +parent: AsyncProperty permalink: /tB/Packages/VBRUN/AsyncProperty/PropertyName --- # PropertyName diff --git a/docs/Reference/VBRUN/AsyncProperty/Status.md b/docs/Reference/VBRUN/AsyncProperty/Status.md index 38c51a5..a293cd1 100644 --- a/docs/Reference/VBRUN/AsyncProperty/Status.md +++ b/docs/Reference/VBRUN/AsyncProperty/Status.md @@ -1,6 +1,6 @@ --- title: Status -parent: AsyncProperty Module +parent: AsyncProperty permalink: /tB/Packages/VBRUN/AsyncProperty/Status --- # Status diff --git a/docs/Reference/VBRUN/AsyncProperty/StatusCode.md b/docs/Reference/VBRUN/AsyncProperty/StatusCode.md index e76f9c9..242a0ee 100644 --- a/docs/Reference/VBRUN/AsyncProperty/StatusCode.md +++ b/docs/Reference/VBRUN/AsyncProperty/StatusCode.md @@ -1,6 +1,6 @@ --- title: StatusCode -parent: AsyncProperty Module +parent: AsyncProperty permalink: /tB/Packages/VBRUN/AsyncProperty/StatusCode --- # StatusCode diff --git a/docs/Reference/VBRUN/AsyncProperty/Target.md b/docs/Reference/VBRUN/AsyncProperty/Target.md index 65d1250..def5995 100644 --- a/docs/Reference/VBRUN/AsyncProperty/Target.md +++ b/docs/Reference/VBRUN/AsyncProperty/Target.md @@ -1,6 +1,6 @@ --- title: Target -parent: AsyncProperty Module +parent: AsyncProperty permalink: /tB/Packages/VBRUN/AsyncProperty/Target --- # Target diff --git a/docs/Reference/VBRUN/AsyncProperty/Value.md b/docs/Reference/VBRUN/AsyncProperty/Value.md index a50ad26..ea52bbc 100644 --- a/docs/Reference/VBRUN/AsyncProperty/Value.md +++ b/docs/Reference/VBRUN/AsyncProperty/Value.md @@ -1,6 +1,6 @@ --- title: Value -parent: AsyncProperty Module +parent: AsyncProperty permalink: /tB/Packages/VBRUN/AsyncProperty/Value --- # Value diff --git a/docs/Reference/VBRUN/DataObject/AvailableFormats.md b/docs/Reference/VBRUN/DataObject/AvailableFormats.md index 4952194..22e4a91 100644 --- a/docs/Reference/VBRUN/DataObject/AvailableFormats.md +++ b/docs/Reference/VBRUN/DataObject/AvailableFormats.md @@ -1,6 +1,6 @@ --- title: AvailableFormats -parent: DataObject Module +parent: DataObject permalink: /tB/Packages/VBRUN/DataObject/AvailableFormats --- # AvailableFormats diff --git a/docs/Reference/VBRUN/DataObject/Clear.md b/docs/Reference/VBRUN/DataObject/Clear.md index 9c3075b..d5f1dc0 100644 --- a/docs/Reference/VBRUN/DataObject/Clear.md +++ b/docs/Reference/VBRUN/DataObject/Clear.md @@ -1,6 +1,6 @@ --- title: Clear -parent: DataObject Module +parent: DataObject permalink: /tB/Packages/VBRUN/DataObject/Clear --- # Clear diff --git a/docs/Reference/VBRUN/DataObject/DataObjectFiles.md b/docs/Reference/VBRUN/DataObject/DataObjectFiles.md index de9d2ab..d2b6fd5 100644 --- a/docs/Reference/VBRUN/DataObject/DataObjectFiles.md +++ b/docs/Reference/VBRUN/DataObject/DataObjectFiles.md @@ -1,6 +1,6 @@ --- title: DataObjectFiles -parent: DataObject Module +parent: DataObject permalink: /tB/Packages/VBRUN/DataObject/DataObjectFiles --- # DataObjectFiles diff --git a/docs/Reference/VBRUN/DataObject/DataObjectFormat.md b/docs/Reference/VBRUN/DataObject/DataObjectFormat.md index 56b669f..358640d 100644 --- a/docs/Reference/VBRUN/DataObject/DataObjectFormat.md +++ b/docs/Reference/VBRUN/DataObject/DataObjectFormat.md @@ -1,6 +1,6 @@ --- title: DataObjectFormat -parent: DataObject Module +parent: DataObject permalink: /tB/Packages/VBRUN/DataObject/DataObjectFormat --- # DataObjectFormat diff --git a/docs/Reference/VBRUN/DataObject/DataObjectFormats.md b/docs/Reference/VBRUN/DataObject/DataObjectFormats.md index 1419cf3..dead0de 100644 --- a/docs/Reference/VBRUN/DataObject/DataObjectFormats.md +++ b/docs/Reference/VBRUN/DataObject/DataObjectFormats.md @@ -1,6 +1,6 @@ --- title: DataObjectFormats -parent: DataObject Module +parent: DataObject permalink: /tB/Packages/VBRUN/DataObject/DataObjectFormats --- # DataObjectFormats diff --git a/docs/Reference/VBRUN/DataObject/Files.md b/docs/Reference/VBRUN/DataObject/Files.md index 2dedcc8..37b02ac 100644 --- a/docs/Reference/VBRUN/DataObject/Files.md +++ b/docs/Reference/VBRUN/DataObject/Files.md @@ -1,6 +1,6 @@ --- title: Files -parent: DataObject Module +parent: DataObject permalink: /tB/Packages/VBRUN/DataObject/Files --- # Files diff --git a/docs/Reference/VBRUN/DataObject/GetData.md b/docs/Reference/VBRUN/DataObject/GetData.md index 1fbc6ab..ada2cb1 100644 --- a/docs/Reference/VBRUN/DataObject/GetData.md +++ b/docs/Reference/VBRUN/DataObject/GetData.md @@ -1,6 +1,6 @@ --- title: GetData -parent: DataObject Module +parent: DataObject permalink: /tB/Packages/VBRUN/DataObject/GetData --- # GetData diff --git a/docs/Reference/VBRUN/DataObject/GetDataByName.md b/docs/Reference/VBRUN/DataObject/GetDataByName.md index 83a841e..59928c0 100644 --- a/docs/Reference/VBRUN/DataObject/GetDataByName.md +++ b/docs/Reference/VBRUN/DataObject/GetDataByName.md @@ -1,6 +1,6 @@ --- title: GetDataByName -parent: DataObject Module +parent: DataObject permalink: /tB/Packages/VBRUN/DataObject/GetDataByName --- # GetDataByName diff --git a/docs/Reference/VBRUN/DataObject/GetFormat.md b/docs/Reference/VBRUN/DataObject/GetFormat.md index ee0dab2..d1fccf4 100644 --- a/docs/Reference/VBRUN/DataObject/GetFormat.md +++ b/docs/Reference/VBRUN/DataObject/GetFormat.md @@ -1,6 +1,6 @@ --- title: GetFormat -parent: DataObject Module +parent: DataObject permalink: /tB/Packages/VBRUN/DataObject/GetFormat --- # GetFormat diff --git a/docs/Reference/VBRUN/DataObject/GetFormatByName.md b/docs/Reference/VBRUN/DataObject/GetFormatByName.md index e5644df..1a53c80 100644 --- a/docs/Reference/VBRUN/DataObject/GetFormatByName.md +++ b/docs/Reference/VBRUN/DataObject/GetFormatByName.md @@ -1,6 +1,6 @@ --- title: GetFormatByName -parent: DataObject Module +parent: DataObject permalink: /tB/Packages/VBRUN/DataObject/GetFormatByName --- # GetFormatByName diff --git a/docs/Reference/VBRUN/DataObject/SetData.md b/docs/Reference/VBRUN/DataObject/SetData.md index 9b7702a..1a4de5e 100644 --- a/docs/Reference/VBRUN/DataObject/SetData.md +++ b/docs/Reference/VBRUN/DataObject/SetData.md @@ -1,6 +1,6 @@ --- title: SetData -parent: DataObject Module +parent: DataObject permalink: /tB/Packages/VBRUN/DataObject/SetData --- # SetData diff --git a/docs/Reference/VBRUN/index.md b/docs/Reference/VBRUN/index.md index 6c8aba3..13f71e3 100644 --- a/docs/Reference/VBRUN/index.md +++ b/docs/Reference/VBRUN/index.md @@ -1,7 +1,6 @@ --- title: VBRUN Package parent: Packages -grand_parent: Reference Section nav_order: 3 permalink: /tB/Packages/VBRUN/ has_toc: false diff --git a/docs/Reference/WebView2/index.md b/docs/Reference/WebView2/index.md index a7bacc4..4b09977 100644 --- a/docs/Reference/WebView2/index.md +++ b/docs/Reference/WebView2/index.md @@ -1,7 +1,6 @@ --- title: WebView2 Package parent: Packages -grand_parent: Reference Section nav_order: 7 permalink: /tB/Packages/WebView2/ has_toc: false diff --git a/docs/Reference/WinEventLogLib/index.md b/docs/Reference/WinEventLogLib/index.md index f8e9866..9318a61 100644 --- a/docs/Reference/WinEventLogLib/index.md +++ b/docs/Reference/WinEventLogLib/index.md @@ -1,7 +1,6 @@ --- title: WinEventLogLib Package parent: Packages -grand_parent: Reference Section nav_order: 8 permalink: /tB/Packages/WinEventLogLib/ has_toc: false diff --git a/docs/Reference/WinNamedPipesLib/index.md b/docs/Reference/WinNamedPipesLib/index.md index bcccac0..f521658 100644 --- a/docs/Reference/WinNamedPipesLib/index.md +++ b/docs/Reference/WinNamedPipesLib/index.md @@ -1,7 +1,6 @@ --- title: WinNamedPipesLib Package parent: Packages -grand_parent: Reference Section nav_order: 9 permalink: /tB/Packages/WinNamedPipesLib/ has_toc: false diff --git a/docs/Reference/WinNativeCommonCtls/index.md b/docs/Reference/WinNativeCommonCtls/index.md index 3b44465..c6738b1 100644 --- a/docs/Reference/WinNativeCommonCtls/index.md +++ b/docs/Reference/WinNativeCommonCtls/index.md @@ -1,7 +1,6 @@ --- title: WinNativeCommonCtls Package parent: Packages -grand_parent: Reference Section nav_order: 12 permalink: /tB/Packages/WinNativeCommonCtls/ has_toc: false diff --git a/docs/Reference/WinServicesLib/index.md b/docs/Reference/WinServicesLib/index.md index b7686ec..fa555fb 100644 --- a/docs/Reference/WinServicesLib/index.md +++ b/docs/Reference/WinServicesLib/index.md @@ -1,7 +1,6 @@ --- title: WinServicesLib Package parent: Packages -grand_parent: Reference Section nav_order: 10 permalink: /tB/Packages/WinServicesLib/ has_toc: false diff --git a/docs/Reference/tbIDE/index.md b/docs/Reference/tbIDE/index.md index 5109eb1..b2f011a 100644 --- a/docs/Reference/tbIDE/index.md +++ b/docs/Reference/tbIDE/index.md @@ -1,7 +1,6 @@ --- title: tbIDE Package parent: Packages -grand_parent: Reference Section nav_order: 11 permalink: /tB/Packages/tbIDE/ has_toc: false diff --git a/docs/_plugins/nav-integrity-check.rb b/docs/_plugins/nav-integrity-check.rb new file mode 100644 index 0000000..b019f9e --- /dev/null +++ b/docs/_plugins/nav-integrity-check.rb @@ -0,0 +1,134 @@ +# frozen_string_literal: true + +# Fails the Jekyll build when any nav-visible page has a `parent:` (and +# optionally `grand_parent:`) that does not uniquely identify its +# position in the navigation tree. +# +# === Background === +# +# just-the-docs builds its nav tree by matching each page's `parent:` +# against other pages' `title:`. When multiple pages share the same +# title, the theme attaches the child under every matching parent — +# unless `grand_parent:` is declared to disambiguate. This duplication +# is silent: no warning is emitted, and the child simply shows up in +# multiple places in the nav (or, worse, only under the wrong parent +# due to render-order-dependent first-occurrence logic). +# +# This generator detects and reports these ambiguities at build time so +# they can be fixed before deployment. +# +# === Logic === +# +# For each nav-visible page P that declares `parent: X`: +# +# 1. Find all nav-visible pages whose `title` == X. +# 2. If only one candidate exists → unambiguous, pass. +# 3. If multiple candidates exist: +# a. If P has no `grand_parent:` → AMBIGUOUS. +# b. If P declares `grand_parent: G` → keep only candidates whose +# own `parent` == G. +# - If exactly one remains → disambiguated, pass. +# - If multiple remain → STILL AMBIGUOUS. +# - If zero remain → orphan (no valid parent); reported as a +# separate diagnostic. +# +# === Priority === +# +# Runs at :high priority so it executes before nav-tree-precompute and +# nav-levels-precompute, catching problems before they propagate. + +module NavIntegrityCheck + class Generator < Jekyll::Generator + safe true + priority :high + + def generate(site) + titled = site.pages.select { |p| p.data["title"] } + nav_visible = titled.reject { |p| p.data["nav_exclude"] } + + by_title = {} + nav_visible.each do |p| + (by_title[p.data["title"]] ||= []) << p + end + + ambiguous = [] + orphaned = [] + + nav_visible.each do |page| + parent_title = page.data["parent"] + next unless parent_title + + candidates = by_title[parent_title] + + unless candidates && !candidates.empty? + # Parent title doesn't match any page — just-the-docs will + # silently drop this page from the nav. Not an ambiguity + # issue per se, but worth reporting. + orphaned << { page: page, reason: "no page titled \"#{parent_title}\" exists" } + next + end + + next if candidates.size == 1 + + gp = page.data["grand_parent"] + unless gp + ambiguous << { + page: page, + parent_title: parent_title, + candidate_count: candidates.size, + reason: "#{candidates.size} pages are titled \"#{parent_title}\" " \ + "and no grand_parent is declared to disambiguate", + } + next + end + + filtered = candidates.select { |c| c.data["parent"] == gp } + + if filtered.size > 1 + ambiguous << { + page: page, + parent_title: parent_title, + candidate_count: filtered.size, + reason: "#{filtered.size} pages titled \"#{parent_title}\" share " \ + "parent \"#{gp}\" — grand_parent does not disambiguate", + } + elsif filtered.empty? + orphaned << { + page: page, + reason: "grand_parent \"#{gp}\" does not match any page titled " \ + "\"#{parent_title}\"", + } + end + end + + report_and_abort(ambiguous, orphaned) if ambiguous.any? || orphaned.any? + end + + private + + def report_and_abort(ambiguous, orphaned) + lines = [] + + if ambiguous.any? + lines << "Nav-parent ambiguity detected in #{ambiguous.size} page(s):" + ambiguous.each do |entry| + lines << " #{page_id(entry[:page])}: #{entry[:reason]}" + end + end + + if orphaned.any? + lines << "Nav-parent orphan detected in #{orphaned.size} page(s):" + orphaned.each do |entry| + lines << " #{page_id(entry[:page])}: #{entry[:reason]}" + end + end + + lines.each { |l| Jekyll.logger.error "NavIntegrity:", l } + raise Jekyll::Errors::FatalException, lines.first + end + + def page_id(page) + page.relative_path + end + end +end