diff options
author | Maxence Guesdon <maxence.guesdon@inria.fr> | 2010-05-31 11:52:13 +0000 |
---|---|---|
committer | Maxence Guesdon <maxence.guesdon@inria.fr> | 2010-05-31 11:52:13 +0000 |
commit | ceccfea6b439a338c342dbcfde5f4485a1345631 (patch) | |
tree | 024a65cc7cf1f6a3ad29ea9aec89614e8e854d3b /ocamldoc/odoc_merge.ml | |
parent | d7b5f7e6cbd9f3b9da64d488c13abc0a95da3e6e (diff) |
PR#4831: handle @before tag in ocamldoc
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@10480 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Diffstat (limited to 'ocamldoc/odoc_merge.ml')
-rw-r--r-- | ocamldoc/odoc_merge.ml | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/ocamldoc/odoc_merge.ml b/ocamldoc/odoc_merge.ml index fd046752e..44804ba0b 100644 --- a/ocamldoc/odoc_merge.ml +++ b/ocamldoc/odoc_merge.ml @@ -23,6 +23,26 @@ open Odoc_exception open Odoc_class open Odoc_module +let merge_before_tags l = + let rec iter acc = function + [] -> List.rev acc + | (v, text) :: q -> + let (l1, l2) = List.partition + (fun (v2,_) -> v = v2) q + in + let acc = + let text = + List.fold_left + (fun acc t -> acc @ [Raw " "] @ t) + text (List.map snd l1) + in + (v, text) :: acc + in + iter acc l2 + in + iter [] l +;; + (** Merge two Odoctypes.info struture, completing the information of the first one with the information in the second one. The merge treatment depends on a given merge_option list. @@ -83,6 +103,7 @@ let merge_info merge_options (m1 : info) (m2 : info) = else Some v1 in + let new_before = merge_before_tags (m1.i_before @ m2.i_before) in let new_dep = match m1.i_deprecated, m2.i_deprecated with None, None -> None @@ -170,6 +191,7 @@ let merge_info merge_options (m1 : info) (m2 : info) = Odoc_types.i_version = new_version ; Odoc_types.i_sees = new_sees ; Odoc_types.i_since = new_since ; + Odoc_types.i_before = new_before ; Odoc_types.i_deprecated = new_dep ; Odoc_types.i_params = new_params ; Odoc_types.i_raised_exceptions = new_raised_exceptions ; |