Skip to content
This repository
tag: v642
Fetching contributors…

Octocat-spinner-32-eaf2f5

Cannot retrieve contributors at this time

file 68 lines (58 sloc) 2.203 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
(*
Copyright © 2011 MLstate

This file is part of OPA.

OPA is free software: you can redistribute it and/or modify it under the
terms of the GNU Affero General Public License, version 3, as published by
the Free Software Foundation.

OPA is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for
more details.

You should have received a copy of the GNU Affero General Public License
along with OPA. If not, see <http://www.gnu.org/licenses/>.
*)
open Odoc_info
open Odoc_html
open Module

(* overring the existing html generator
* to be able to say
* [@inline doc] in a signature documentation to
* tell ocamldoc to inline the signature instead of just
* putting a link to it
*)
class my_gen =
  object(self)
    inherit Odoc_html.html

    method html_of_module b ?(info=true) ?complete:(_=true) ?(with_link=true) m =
      let complete = true in
      let (html_file, _) = Naming.html_files m.m_name in
      let father = Name.father m.m_name in
      bs b "<pre>";
      bs b ((self#keyword "module")^" ");
      if with_link then
        bp b "<a href=\"%s\">%s</a>" html_file (Name.simple m.m_name)
      else
        bs b (Name.simple m.m_name);
      ( match m.m_kind with
        | Module_functor _ when !Odoc_info.Args.html_short_functors -> ()
        | _ -> bs b ": "
      );
      let modu =
        match m.m_info with
        | Some {i_custom=i_custom} when
            List.exists (function ("inline",[Odoc_info.Raw "doc"]) -> true | _ -> false) i_custom && with_link -> None
        | _ -> Some m in
      self#html_of_module_kind b father ?modu m.m_kind;
      bs b "</pre>";
      if info then
        (if complete then
            self#html_of_info ~indent: false
         else
            self#html_of_info_first_sentence
        ) b m.m_info

    method no_html _ = ""

    initializer
      tag_functions <- ("inline", self#no_html) :: tag_functions
  end

let my_generator = new my_gen
let _ = Odoc_args.set_doc_generator (Some (my_generator :> Odoc_args.doc_generator))
Something went wrong with that request. Please try again.