caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* [Caml-list] Using a custom ocamldoc html with ocamlbuild
@ 2011-06-10 16:00 Till Varoquaux
  2011-06-10 20:58 ` [Caml-list] " Till Varoquaux
  0 siblings, 1 reply; 2+ messages in thread
From: Till Varoquaux @ 2011-06-10 16:00 UTC (permalink / raw)
  To: Caml-list List

Hello everyone.

I am currently trying to cajole ocamlbuild into using a custom
generator. Adding the extra command line arguments to load the
generator isn't hard:

flag ["doc";"ocaml"] & S[A"-i";A "+custom";A "my_gen.cmo"]

The tricky part is removing the -html flag that is passed to ocamldoc.
As far as I can tell there's no easy to do so (Flags.remove does not
actually allow you to do that). Maybe there's a way I could remove the
"extension:html" tag and therefore avoid triggering the rule that adds
-html?

All best,
Till

^ permalink raw reply	[flat|nested] 2+ messages in thread

* [Caml-list] Re: Using a custom ocamldoc html with ocamlbuild
  2011-06-10 16:00 [Caml-list] Using a custom ocamldoc html with ocamlbuild Till Varoquaux
@ 2011-06-10 20:58 ` Till Varoquaux
  0 siblings, 0 replies; 2+ messages in thread
From: Till Varoquaux @ 2011-06-10 20:58 UTC (permalink / raw)
  To: Caml-list List

On Fri, Jun 10, 2011 at 12:00 PM, Till Varoquaux <till@pps.jussieu.fr> wrote:
> Hello everyone.
>
> I am currently trying to cajole ocamlbuild into using a custom
> generator. Adding the extra command line arguments to load the
> generator isn't hard:
>
> flag ["doc";"ocaml"] & S[A"-i";A "+custom";A "my_gen.cmo"]
>
> The tricky part is removing the -html flag that is passed to ocamldoc.
> As far as I can tell there's no easy to do so (Flags.remove does not
> actually allow you to do that). Maybe there's a way I could remove the
> "extension:html" tag and therefore avoid triggering the rule that adds
> -html?
>
> All best,
> Till
>

As suggested by Christophe Troestler the solution seemed indeed to
write my own rule. The hack is to dynamically remove the
"extension:html" tag from the list...

    open Ocamlbuild_pack

    let ocdoc_plus =
       let base = My_unix.run_and_read "ocamlfind query ocamldoc_htmlplus" in
       (* TODO: check that we are indeed stripping the trailling nl. *)
       String.sub base 0 (String.length base -1)

    (* calls out to Ocaml_tools.ocamldoc_l_dir but filters out the
"extension:html"
       flag which causes  -html to be added to the ocamldoc command line.*)
    let my_ocamldoc tags deps docout docdir =
      let tags = tags -- "extension:html" in
      Ocaml_tools.ocamldoc_l_dir tags deps docout docdir

    (* copy of the normal ocamldoc rule that uses our custom generator. *)
    let () = Rule.rule
     "ocamldoc: document ocaml project odocl & *odoc -> docdir (html+)"
     ~insert:`top
     ~prod:"%.docdir/index.html"
     ~stamp:"%.docdir/html.stamp"
     ~dep:"%.odocl"
     (Ocaml_tools.document_ocaml_project
         ~ocamldoc:my_ocamldoc
         "%.odocl" "%.docdir/index.html" "%.docdir");

     dep  ["doc";"ocaml";"intro"] ["lib/intro.txt"];
     flag ["doc";"ocaml"] & S[A"-i";A
ocdoc_plus;A"-g";A"ocamldoc_htmlplus.cma"];
     flag ["doc";"ocaml";"intro"] & S[A"-intro";A"lib/intro.txt"]

All in all this isn't actually as bad as I thought it might be. If
anyone can think of any cleaner way to proceed I am all ears...

Thanks,
Till

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2011-06-10 20:58 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-06-10 16:00 [Caml-list] Using a custom ocamldoc html with ocamlbuild Till Varoquaux
2011-06-10 20:58 ` [Caml-list] " Till Varoquaux

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).