blob: eddf6ed6164a6dc0818c427442db750bb929fef3 [file] [log] [blame] [view]
Dartdoc supports several **directives** within Dart doc comments. Each directive
is then processed during documentation generation, and new text is inserted in
place of the directive. Not all directives are supported for package
documentation at https://pub.dev/.
A doc comment directive consists of either one directive tag, which looks
something like `{@DIRECTIVE ARG=VALUE ...}`, or two such tags (an opening and a
closing tag), with content in between.
The supported directives are listed below:
## `@nodoc` - Do not include documentation
An element whose doc comment should not appear in the generated documentation
can include the `@nodoc` directive.
Note that the `@nodoc` directive does not have curly braces, like most of the
other directives.
## `{@category}` and `{@subCategory}` - Categories
Elements such as libraries and classes can be grouped into categories and
sub-categories by adding `{@category CATEGORY NAME}` and
`{@subCategory SUB-CATEGORY NAME}` in doc comments. Each category then gets its
own documentation page, listing all of the categorized elements.
## `{@template}` and `{@macro}` - Templates and macros
TODO(srawlins): Document.
## `{@inject-html}` - Injected HTML
HTML can be rendered unmodified by including it between `{@inject-html}` and
`{@end-inject-html}` directive tags. The tags take no arguments:
```none
/// {@inject-html}
/// <p>Injected HTML.</p>
/// {@end-inject-html}
```
The `{@inject-html}` directive is only available when the `--inject-html` flag
is passed to `dart doc`. It is not available for documentation published on
https://pub.dev.
## `{@animation}` - Animations
HTML5 videos can be embedded with the `{@animation}` directive. This directive
accepts width and height arguments, and an optional ID argument:
```none
/// {@animation 320 240 URL [id=ID]}
```
This directive renders the HTML which embeds an HTML5 video.
The optional ID should be a unique id that is a valid JavaScript identifier, and
will be used as the id for the video tag. If no ID is supplied, then a unique
identifier (starting with "animation_") will be generated.
The width and height must be integers specifying the dimensions of the video
file in pixels.
## `{@youtube}` - YouTube videos
A YouTube video can be embedded with the `{@youtube}` directive. This directive
accepts width and height arguments, using the following syntax:
```none
/// {@youtube 320 240 https://www.youtube.com/watch?v=oHg5SJYRHA0}
```
This directive embeds the YouTube video with id "oHg5SJYRHA0" into the
documentation page, with a width of 320 pixels, and a height of 240 pixels. The
height and width are used to calculate the aspect ratio of the video; the video
is always rendered to take up all available horizontal space to accommodate
different screen sizes on desktop and mobile.
The video URL must have the following format:
`https://www.youtube.com/watch?v=oHg5SJYRHA0`. This format can usually be found
in the address bar of the browser when viewing a YouTube video.
## `{@tool}` - External tools
TODO(srawlins): Document.
## `{@canonicalFor}` - Canonicalization
Dartdoc uses some heuristics to decide what the public-facing libraries are,
and which public-facing library is the "canonical" location for an element.
When that heuristic needs to be overridden, a user can use this directive.
Example:
```none
/// {@canonicalFor some_library.SomeClass}
```
When this directive is used on a library's doc comment, that library is marked
as the canonical library for `some_library.SomeClass`.