this repo has no description

Fix build and doc warnings, remove dune subtree

Build fixes:
- Change odoc extension library refs to odoc.extension_api
- Add missing assets field to extension result records

Documentation fixes:
- Fix cross-package references using documentation dependencies
- Fix reference syntax: {!Stdlib.String.escaped}, {!Webfinger.Jrd}, etc.
- Fix heading levels and anchor syntax (#→.)
- Add @canonical annotation for Loc0.t
- Escape braces in doc comments
- Add asset support via (files ...) in documentation stanza

Infrastructure:
- Remove dune subtree (now pinned to jonludlam/dune#odoc-assets-support)
- Add dune-workspace with fatal odoc warnings
- Remove conflicting odoc-config.sexp install stanzas

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

+18 -25
+3 -3
doc/cheatsheet.mld
··· 72 73 See {{!/fmt/Fmt.pf}this function from another library}. 74 75 - See {{!/cmdliner/tutorial}this page from another package}. 76 77 See {{!odoc_for_authors.links_and_references}this section} for the syntax of references.]}} 78 {td ··· 82 83 See {{!/fmt/Fmt.pf}this function from another library}. 84 85 - See {{!/cmdliner/tutorial}this page from another package}. 86 87 See {{!odoc_for_authors.links_and_references}this section} for the syntax of references.}} 88 {tr ··· 182 {image:https://picsum.photos/200/100} 183 ]}} 184 {td 185 - {image!odoc_logo_placeholder.jpg} 186 187 {image:https://picsum.photos/200/100} 188 }}
··· 72 73 See {{!/fmt/Fmt.pf}this function from another library}. 74 75 + See {{!/cmdliner/page-tutorial}this page from another package}. 76 77 See {{!odoc_for_authors.links_and_references}this section} for the syntax of references.]}} 78 {td ··· 82 83 See {{!/fmt/Fmt.pf}this function from another library}. 84 85 + See {{!/cmdliner/page-tutorial}this page from another package}. 86 87 See {{!odoc_for_authors.links_and_references}this section} for the syntax of references.}} 88 {tr ··· 182 {image:https://picsum.photos/200/100} 183 ]}} 184 {td 185 + {image!/odoc/odoc_logo_placeholder.jpg} 186 187 {image:https://picsum.photos/200/100} 188 }}
+1 -1
doc/driver.mld
··· 12 13 Several drivers for [odoc] exist, such as: 14 {{:https://dune.readthedocs.io/en/stable/documentation.html}dune} and 15 - {{!/odig/page-index}odig}. 16 17 This document explains how to drive [odoc], as of version 3. It is not needed to 18 know any of this to {e use} [odoc], it is targeted at driver authors, tools that
··· 12 13 Several drivers for [odoc] exist, such as: 14 {{:https://dune.readthedocs.io/en/stable/documentation.html}dune} and 15 + {{:https://erratique.ch/software/odig/doc/}odig}. 16 17 This document explains how to drive [odoc], as of version 3. It is not needed to 18 know any of this to {e use} [odoc], it is targeted at driver authors, tools that
-5
doc/driver/dune
··· 1 (documentation 2 (package odoc-driver)) 3 - 4 - (install 5 - (section doc) 6 - (files odoc-config.sexp) 7 - (package odoc-driver))
··· 1 (documentation 2 (package odoc-driver))
+2 -7
doc/dune
··· 9 ocamldoc_differences 10 odoc_for_authors 11 cheatsheet 12 - json)) 13 14 ; Uncomment to run mdx on the documentation's code blocks. 15 ; (mdx ··· 51 (install 52 (section doc) 53 (files 54 - odoc-config.sexp 55 (odoc_logo_placeholder.jpg as odoc-pages/odoc_logo_placeholder.jpg)) 56 (package odoc)) 57 58 - (install 59 - (section doc) 60 - (files 61 - (odoc-parser-config.sexp as odoc-config.sexp)) 62 - (package odoc-parser))
··· 9 ocamldoc_differences 10 odoc_for_authors 11 cheatsheet 12 + json) 13 + (files odoc_logo_placeholder.jpg)) 14 15 ; Uncomment to run mdx on the documentation's code blocks. 16 ; (mdx ··· 52 (install 53 (section doc) 54 (files 55 (odoc_logo_placeholder.jpg as odoc-pages/odoc_logo_placeholder.jpg)) 56 (package odoc)) 57
+5 -4
dune-project
··· 34 35 (package 36 (name odoc) 37 - (sites (lib extensions))) 38 39 - (package (name odoc-parser)) 40 (package (name odoc-md)) 41 - (package (name odoc-driver)) 42 - (package (name odoc-bench)) 43 (package (name sherlodoc)) 44 45 (using mdx 0.3)
··· 34 35 (package 36 (name odoc) 37 + (sites (lib extensions)) 38 + (documentation (depends odoc-driver cmdliner))) 39 40 + (package (name odoc-parser) (documentation (depends odoc))) 41 (package (name odoc-md)) 42 + (package (name odoc-driver) (documentation (depends sherlodoc odoc))) 43 + (package (name odoc-bench) (allow_empty)) 44 (package (name sherlodoc)) 45 46 (using mdx 0.3)
+1 -1
sherlodoc/db/db.mli
··· 18 [db_types] has [Entry.t array Int_map.t] ([Occ.t]) as a payload because we want 19 the query [blabla : int -> int -> _] to return only entries that take at 20 least two ints as arguments, an entry of type [int -> string] is invalid. 21 - The [Int_map.t] maps a number of occurences to a set of entries. See {!Occ}. 22 [db_types] still is a suffix tree, so you can search in it only for text. The 23 way we transform types into searchable text is in {!Type_polarity}. *)
··· 18 [db_types] has [Entry.t array Int_map.t] ([Occ.t]) as a payload because we want 19 the query [blabla : int -> int -> _] to return only entries that take at 20 least two ints as arguments, an entry of type [int -> string] is invalid. 21 + The [Int_map.t] maps a number of occurences to a set of entries. See {!Occurences}. 22 [db_types] still is a suffix tree, so you can search in it only for text. The 23 way we transform types into searchable text is in {!Type_polarity}. *)
+1 -1
sherlodoc/db/type_polarity.mli
··· 59 60 type t = string * int * Sign.t 61 (** The search database is a suffix tree structure, implemented in 62 - {!Suffix_tree}. It is a solely text-based datastructure. Therefore, we need 63 a text represention for the polarities. 64 65 The polarity [+t] is represented by ["+t"], and the polarity [-t] is
··· 59 60 type t = string * int * Sign.t 61 (** The search database is a suffix tree structure, implemented in 62 + {!String_automata}. It is a solely text-based datastructure. Therefore, we need 63 a text represention for the polarities. 64 65 The polarity [+t] is represented by ["+t"], and the polarity [-t] is
+2
src/driver/test/config_file/dune
···
··· 1 + ; This is test data for manual testing, not part of the build 2 + (data_only_dirs test_odoc_driver)
+2 -2
src/extension_api/odoc_extension_api.ml
··· 126 Returns [Some output] to replace the code block, or [None] to 127 fall back to default rendering. 128 129 - Example metadata for [{@dot width=500 format=svg[digraph {...}]}]: 130 - [meta.language = "dot"] 131 - [meta.tags = [`Binding ("width", "500"); `Binding ("format", "svg")]] 132 - - content = "digraph {...}" *) 133 end 134 135 (** {1 Support Files}
··· 126 Returns [Some output] to replace the code block, or [None] to 127 fall back to default rendering. 128 129 + Example metadata for [{\@dot width=500 format=svg[digraph \{...\}]}]: 130 - [meta.language = "dot"] 131 - [meta.tags = [`Binding ("width", "500"); `Binding ("format", "svg")]] 132 + - content = "digraph \{...\}" *) 133 end 134 135 (** {1 Support Files}
+1 -1
src/parser/odoc_parser.mli
··· 46 47 val codeblock_content : Loc.span -> string -> string * Warning.t list 48 (** Process the content of a code block, following the rules described 49 - {{!/odoc/odoc_for_authors.indentation_code_blocks}here}. To achieve this, it 50 needs the location of the code block (including the separators) and the raw 51 content of the code block. For instance, with the following code block: 52
··· 46 47 val codeblock_content : Loc.span -> string -> string * Warning.t list 48 (** Process the content of a code block, following the rules described 49 + {{!/odoc/page-odoc_for_authors.indentation_code_blocks}here}. To achieve this, it 50 needs the location of the code block (including the separators) and the raw 51 content of the code block. For instance, with the following code block: 52