mdoc-assemble(1) General Commands Manual mdoc-assemble(1)

mdoc assemble - Compile documentation for use in monodoc(1)

mdoc assemble [OPTIONS]+ PATHS+

mdoc assemble creates .tree and .zip files from PATHS for use in the monodoc(1) documentation browser.

The input files must have a supported format, specified with the --format option.

The .tree and .zip files are copied into monodoc's sources directory, alongside a .source file which is used by monodoc(1) to specify where the documentation should be displayed.

The .source file has the following format:

  <?xml version="1.0"?>
  <monodoc>
    <node label="LABEL" name="PATH" parent="PARENT">
      <node label="LABEL2" name="PATH2" />
      <!-- ... -->
    </node>
    <source provider="PROVIDER" basefile="BASEFILE" path="PATH" />
    <!-- other <source/> elements -->
  </monodoc>
The /monodoc/node node is an optional node that specifies where in the monodoc tree the documentation should be displayed, and //node elements may be nested to any depth to create trees. //node/@label is the label that will be displayed within the monodoc tree.

//node/@name is the name of the monodoc tree node, and may be used as the value of the /monodoc/source/@path value.

//node/@parent is the node name to use as the parent node. $MONO_INSTALL_PREFIX/lib/monodoc/monodoc.xml contains a list of such names, and this can be any //node/@name value. If the //node/@parent value isn't found, then it's inserted under the "Various" tree node.

The /monodoc/source/@provider attribute specifies which format provider should be used when reading the .tree and .zip files; this must correspond to one of the --format values.

The /monodoc/source/@basefile attribute specifies the filename prefix for the documentation files. This must be the same prefix as used with the --out parameter. There should be no filename extension on this value.

The /monodoc/source/@path attribute specifies the parent node in monodoc(1)'s tree view where the documentation will be inserted. See the $MONO_INSTALL_PREFIX/lib/monodoc/monodoc.xml file for a list of PATH values (the //node/@name values), or it may be a //node/@name value in the same .source file.

Once the BASEFILE.source has been written, the documentation can be installed so that monodoc(1) will display the documentation with the command:

  cp BASEFILE.source BASEFILE.tree BASEFILE.zip \
    `pkg-config monodoc --variable=sourcesdir`

Specifies the documentation format used within PATHS. Valid FORMAT values include: ecma, ecmaspec, error, hb, man, simple, and xhtml.

See the FORMATS section below for more information about these formats.

The default format (if none is specifed) is ecma.

The --format option may be interleaved with PATHS to change the format used for the remaining parameters (until the next --format option is seen), e.g.:

  mdoc assemble -o PREFIX A B --format=man C D --format=xhtml E
will assemble directories A and B with the ecma format, files C and D with the man formt, and directory E with the xhtml format.
Specify the output file prefix. mdoc assemble creates the files PREFIX.zip and PREFIX.tree.
Display a help message and exit.

The following documentation formats are supported:

The Mono ECMA Documentation Format, an XML documentation format with one file per type.

See the mdoc(5) man page for more information.

The Mono ECMA Specification Documentation Format. This is not the format you're looking for; it is the format used to represent the ECMA-334 (C#) standard within monodoc(1). It is not used to display class library documentation; for class library documentation, use the ecma format.

The Error Documentation Format is used to present detailed error messages, and is used in monodoc(1)'s "C# Compiler Error Reference" tree.

In this format, PATHS is a configuration file, containing the XML:

    <ErrorProviderConfig>
        <FilesPath>../../mcs/errors</FilesPath>
        <Match>cs????*.cs</Match>
        <ErrorNumSubstringStart>2</ErrorNumSubstringStart>
        <ErrorNumSubstringLength>4</ErrorNumSubstringLength>
        <FriendlyFormatString>CS{0:0###}</FriendlyFormatString>
    </ErrorProviderConfig>
The elements mean:
/ErrorProviderConfig/FilesPath
Specifies where to look for files.
/ErrorProviderConfig/Match
Specifies the filename pattern to look for within the /ErrorProviderConfig/FilesPath directory.
/ErrorProviderConfig/ErrorNumSubstringStart
Specifies where within the filename the error number starts.
/ErrorProviderConfig/ErrorNumSubstringLength
Specifies how many characters after /ErrorProviderConfig/ErrorNumSubstringStart to use for the error number.
/ErrorProviderConfig/FriendlyFormatString
Specifies the formatting/display of the node in the monodoc(1) tree.

For each file found, it is converted to HTML with C# syntax coloring applied.

The Simple Documentation Format file format recursively adds all files and directories underneath PATHS. When displayed, HTML files are displayed as-is. Text files are converted into HTML by translating each newline into an HTML <br> element. No other file type is supported.

The Man Page Documentation Format displays groff man pages. (This is not a full groff parser, and only handles the man page constructs used within the mono man pages.)

PATHS is a set of XML files containing:

  <?xml version="1.0"?>
  <manpages>
    <manpage name="NAME" page="FILE" />
  </manpages>
There may be multiple //manpage elements within the root /manpage element.

The /manpages/manpage/@name attribute contains the display name for the tree view node, which is also the URL of the man page when using monodoc(1)'s Lookup URL command (before prefixing with a man: prefix). Thus, if /manpages/manpage/@name contains mono(1), then man:mono(1) can be used in the Lookup URL command to view the mono(1) man page.

The /manpages/manpage/@page attribute is the filename that contains the man page. If this file does not exist, then /manpages/manpage/@name will not be displayed within the tree view.

The XHTML provider interprets PATHS as a Windows Help file XHTML TOC file and looks for referenced documents to create the help source.

mdoc(1), mdoc(5), monodoc(1)

See also: http://www.mono-project.com/docs/tools+libraries/tools/mdoc/