package odoc
OCaml Documentation Generator
Install
Dune Dependency
Authors
Maintainers
Sources
odoc-3.0.0.tbz
sha256=ce84fa7e0cc5f3e8a54e6adeb10826152798b602057b9e46c5ae7e5d5206812b
sha512=9febd413450ca2e3824c9ef7e1c9ae8d8094aa72ed71327a69d8d6b42f6f197b3f3f40d674de0d11fa1242ee0df95c693b5d74467d530704e1339f3a523452f6
doc/src/odoc.xref2/expand_tools.ml.html
Source file expand_tools.ml
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 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114
open Odoc_utils.ResultMonad open Odoc_model let handle_expansion env id expansion = let handle_argument parent arg_opt expr env = (* If there's an argument, extend the environment with the argument, then do the substitution on the signature to replace the local identifier with the global one *) match arg_opt with | Component.FunctorParameter.Unit -> (env, expr) | Named arg -> let identifier = Paths.Identifier.Mk.parameter (parent, Ident.Name.typed_module arg.Component.FunctorParameter.id) in let m = Component.module_of_functor_argument arg in let env' = Env.add_module identifier (Component.Delayed.put_val m) m.doc env in let rp = `Gpath (`Identifier identifier) in let p = `Resolved rp in let subst = Subst.add_module (arg.id :> Ident.module_) p rp Subst.identity in (env', Subst.module_type_expr subst expr) in let rec expand id env expansion : (Env.t * Component.ModuleType.simple_expansion, _) Result.result = match expansion with | Tools.Signature sg -> Ok ( env, (Component.ModuleType.Signature sg : Component.ModuleType.simple_expansion) ) | Functor (arg, expr) -> let env', expr' = handle_argument id arg expr env in Tools.expansion_of_module_type_expr env' expr' >>= fun res -> expand (Paths.Identifier.Mk.result id) env res >>= fun (env, res) -> Ok ( env, (Component.ModuleType.Functor (arg, res) : Component.ModuleType.simple_expansion) ) in expand id env expansion exception Clash let rec type_expr map t = let open Lang.TypeExpr in match t with | Var v -> ( try List.assoc v map with _ -> Format.eprintf "Failed to list assoc %s\n%!" v; failwith "bah") | Any -> Any | Alias (t, s) -> if List.mem_assoc s map then raise Clash else Alias (type_expr map t, s) | Arrow (l, t1, t2) -> Arrow (l, type_expr map t1, type_expr map t2) | Tuple ts -> Tuple (List.map (type_expr map) ts) | Constr (p, ts) -> Constr (p, List.map (type_expr map) ts) | Polymorphic_variant pv -> Polymorphic_variant (polymorphic_variant map pv) | Object o -> Object (object_ map o) | Class (path, ts) -> Class (path, List.map (type_expr map) ts) | Poly (s, t) -> Poly (s, type_expr map t) | Package p -> Package (package map p) and polymorphic_variant map pv = let open Lang.TypeExpr.Polymorphic_variant in let constructor c = { c with Constructor.arguments = List.map (type_expr map) c.Constructor.arguments; } in let element = function | Type t -> Type (type_expr map t) | Constructor c -> Constructor (constructor c) in { kind = pv.kind; elements = List.map element pv.elements } and object_ map o = let open Lang.TypeExpr.Object in let method_ m = { m with type_ = type_expr map m.type_ } in let field = function | Method m -> Method (method_ m) | Inherit t -> Inherit (type_expr map t) in { o with fields = List.map field o.fields } and package map p = let open Lang.TypeExpr.Package in let subst (frag, t) = (frag, type_expr map t) in { p with substitutions = List.map subst p.substitutions } let collapse_eqns eqn1 eqn2 params = let open Lang.TypeDecl in let map = List.map2 (fun v p -> match v.desc with Var x -> Some (x, p) | Any -> None) eqn2.Equation.params params in let map = List.fold_right (fun x xs -> match x with Some x -> x :: xs | None -> xs) map [] in { eqn1 with Equation.manifest = (match eqn2.manifest with | None -> None | Some t -> Some (type_expr map t)); }
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>