You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The canonical description of the markup that [odoc] understands is in {{:https://caml.inria.fr/pub/docs/manual-ocaml/ocamldoc.html#s%3Aocamldoc-comments}this section}
4
4
of the OCaml reference manual. The eventual aim is to support the in-code markup
@@ -13,31 +13,31 @@ can be seen rendered by [odoc] {{!Odoc_examples.Markup.Foo}here}.
13
13
The following describes the changes between what [odoc] understands and what’s in the OCaml manual.
14
14
15
15
- Heading levels are more restrictive. In the manual, it suggests any whole number is acceptable. In [odoc],
16
-
similarly to the HTML spec, we allow headings from 1-5, and heading level [0] for the title
16
+
similarly to the HTML spec, we allow headings from 1-5. Heading level [0] is for the title
17
17
of [.mld] files. [odoc] emits a warning for heading levels outside this range and caps them.
18
18
19
19
{3 Omissions}
20
-
- Comments describing class inheritance are not rendered ({{:https://github.com/ocaml/odoc/issues/574}github issue}).
20
+
- Comments describing class inheritance are not rendered ({{:https://github.com/ocaml/odoc/issues/574}GitHub issue}).
21
21
- [odoc] handles ambiguous documentation comments as the compiler does (see {{:https://caml.inria.fr/pub/docs/manual-ocaml/doccomments.html}here})
22
22
rather than treating them as the OCamldoc manual suggests.
23
-
- [odoc] doesn’t ignore tags that don't make sense (e.g., [@param] tags on instance variables are rendered) ({{:https://github.com/ocaml/odoc/issues/575}github issue})
24
-
- {{:https://caml.inria.fr/pub/docs/manual-ocaml/ocamldoc.html#ss:ocamldoc-formatting}Alignment elements} are not handled ([{C text}], [{L text}] and [{R text}]) ({{:https://github.com/ocaml/odoc/issues/541}github issue})
25
-
- [odoc] does not recognise {{:https://caml.inria.fr/pub/docs/manual-ocaml/ocamldoc.html#sss:ocamldoc-html-tags}html tags embedded in comments} ({{:https://github.com/ocaml/odoc/issues/576}github issue})
26
-
- [{!indexlist}] is not supported ({{:https://github.com/ocaml/odoc/issues/577}github issue})
23
+
- [odoc] doesn’t ignore tags that don't make sense (e.g., [@param] tags on instance variables are rendered) ({{:https://github.com/ocaml/odoc/issues/575}GitHub issue}).
24
+
- {{:https://caml.inria.fr/pub/docs/manual-ocaml/ocamldoc.html#ss:ocamldoc-formatting}Alignment elements} are not handled ([{C text}], [{L text}], and [{R text}]) ({{:https://github.com/ocaml/odoc/issues/541}GitHub issue}).
25
+
- [odoc] does not recognise {{:https://caml.inria.fr/pub/docs/manual-ocaml/ocamldoc.html#sss:ocamldoc-html-tags}HTML tags embedded in comments} ({{:https://github.com/ocaml/odoc/issues/576}GitHub issue}).
26
+
- [{!indexlist}] is not supported ({{:https://github.com/ocaml/odoc/issues/577}GitHub issue}).
27
27
- The first paragraph is used for synopses instead of the {{:https://caml.inria.fr/pub/docs/manual-ocaml/ocamldoc.html#sss:ocamldoc-preamble}first sentence}.
28
28
Synopses are used when rendering declarations (of modules, classes, etc.) and [{!modules:...}] lists.
29
-
An other difference is that documentation starting with a heading or something that is not a paragraph won't have a synopsis ({{:https://github.com/ocaml/odoc/pull/643}github issue}).
29
+
Another difference is that documentation starting with a heading or something that is not a paragraph won't have a synopsis ({{:https://github.com/ocaml/odoc/pull/643}GitHub issue}).
30
30
31
31
{3 Improvements}
32
32
- [odoc] supports writing mathematics and tables with a specific syntax.
33
33
- [odoc] has a better mechanism for disambiguating references in comments. See 'reference syntax' later in this document.
34
34
- Built-in support for standalone [.mld] files. These are documents using the OCamldoc markup, but they’re rendered as distinct pages.
35
35
- Structured output: [odoc] can produce output in a structured directory tree rather a set of files.
36
36
- A few extra tags are supported:
37
-
+ [@returns] is a synonym for [@return]
38
-
+ [@raises] is a synonym for [@raise]
39
-
+ [@open] and [@closed] and [@inline] are hints for how 'included' signatures should be rendered
40
-
+ [@canonical] allows a definition of a [module], [module type] or [type] to be marked as canonically elsewhere.
37
+
+ [@returns] is a synonym for [@return].
38
+
+ [@raises] is a synonym for [@raise].
39
+
+ [@open] and [@closed] and [@inline] are hints for how 'included' signatures should be rendered.
40
+
+ [@canonical] allows a definition of a [module], [module type], or [type] to be marked as canonically elsewhere.
41
41
42
42
{2 Reference Syntax}
43
43
[odoc] has a far more powerful reference resolution mechanism than OCamldoc. While it supports the mechanism in OCamldoc used for disambiguating between different types of references,
@@ -46,25 +46,25 @@ where the reference manual suggests the syntax [{!type:Foo.Bar.t}] to designate
46
46
comments would be [{!Foo.Bar.type-t}] and [{!Foo.Bar.val-t}]. This allows [odoc] to disambiguate when there are other ambiguous elements within the path. For example, we can
47
47
distinguish between a type or [value t] within a module or module type with the same name: [{!module-Foo.module-type-Bar.type-t}] or [{!module-type-Foo.module-Bar.val-t}].
48
48
49
-
Additionally we support extra annotations:
50
-
- [module-type] is a replacement for [modtype]
51
-
- [class-type] is a replacement for [classtype]
52
-
- [exn] is recognised as [exception]
53
-
- [extension] refers to a type extension
54
-
- [extension-decl] refers to the declaration point of an extension constructor
55
-
- [field] is a replacement for [recfield]
56
-
- [instance-variable] refers to instance variables
57
-
- [label] refers to labels introduced in anchors
58
-
- [page] refers to [.mld] pages as outlined above
59
-
- [value] is recognised as [val]
49
+
Additionally, we support extra annotations:
50
+
- [module-type] is a replacement for [modtype].
51
+
- [class-type] is a replacement for [classtype].
52
+
- [exn] is recognised as [exception].
53
+
- [extension] refers to a type extension.
54
+
- [extension-decl] refers to the declaration point of an extension constructor.
55
+
- [field] is a replacement for [recfield].
56
+
- [instance-variable] refers to instance variables.
57
+
- [label] refers to labels introduced in anchors.
58
+
- [page] refers to [.mld] pages as outlined above.
59
+
- [value] is recognised as [val].
60
60
61
-
Moreover, [odoc] adds support for referencing of polymorphic variants in type
61
+
Moreover, [odoc] adds support for referencing polymorphic variants in type
62
62
aliases such as [type t = [ `A ]]. The [constructor] annotation is extended for
63
63
polymorphic variants.
64
64
65
-
{3 Referencing items containing hyphens or dots}
65
+
{3 Referencing Items Containing Hyphens or Dots}
66
66
67
-
If it is necessary to reference a reference that contains hyphens or dots - e.g. if you have a file [docs-with-dashes.mld] or
68
-
[docs.with.dots.mld], to reference them use quotation marks in the reference. For the previous two examples, the references
67
+
If it is necessary to reference a reference that contains hyphens or dots (e.g., if you have a file [docs-with-dashes.mld] or
68
+
[docs.with.dots.mld]) use quotation marks in the reference. For the previous two examples, the references
69
69
would be [{!page-"docs-with-dashes"}] and [{!page-"docs.with.dots"}].
0 commit comments