Skip to content

odoc_driver: source rendering, support hidden modules #1372

@dbuenzli

Description

@dbuenzli

It seems that the current driver doesn't support the rendering of sources of hidden modules. For example on ocaml.org on down.0.4.0 only down.ml shows up in the sources.

But the source install is richer than that:

> tree $(opam var lib)/down   
/Users/dbuenzli/.opam/4.14.2/lib/down
├── down_std.cmt
├── down_std.cmti
├── down_std.cmx
├── down_std.ml
├── down_std.mli
├── down_stubs.c
├── down_tty_width.cmt
├── down_tty_width.cmti
├── down_tty_width.cmx
├── down_tty_width.ml
├── down_tty_width.mli
├── down.a
├── down.cma
├── down.cmi
├── down.cmt
├── down.cmti
├── down.cmx
├── down.cmxa
├── down.cmxs
├── down.ml
├── down.mli
├── libdown_stubs.a
├── META
└── opam

All these modules are in the down.cma but the library exposes only the down module, as signified by the down.cmi install.

down is a library whose hidden modules have an explicit .mli interface. Another case is when hidden modules do not have an .mli, in this case the install only has the .ml and .cmt files. An example of this is astring which when compiled with topkg.1.1.0 (may not be the case currently on ocaml.org) looks like this:

> tree $(opam var lib)/astring
/Users/dbuenzli/.opam/4.14.2/lib/astring
├── astring_base.cmt
├── astring_base.cmx
├── astring_base.ml
├── astring_char.cmt
├── astring_char.cmx
├── astring_char.ml
├── astring_escape.cmt
├── astring_escape.cmx
├── astring_escape.ml
├── astring_string.cmt
├── astring_string.cmx
├── astring_string.ml
├── astring_sub.cmt
├── astring_sub.cmx
├── astring_sub.ml
├── astring_top_init.ml
├── astring_top.a
├── astring_top.cma
├── astring_top.cmt
├── astring_top.cmx
├── astring_top.cmxa
├── astring_top.cmxs
├── astring_top.ml
├── astring_unsafe.cmt
├── astring_unsafe.cmx
├── astring_unsafe.ml
├── astring.a
├── astring.cma
├── astring.cmi
├── astring.cmt
├── astring.cmti
├── astring.cmx
├── astring.cmxa
├── astring.cmxs
├── astring.ml
├── astring.mli
├── META
└── opam

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions