diff --git a/middleware/Middleware/Diverter/index.html b/middleware/Middleware/Diverter/index.html index 3b2ad3f..a663b6a 100644 --- a/middleware/Middleware/Diverter/index.html +++ b/middleware/Middleware/Diverter/index.html @@ -1,4 +1,4 @@ -Diverter (middleware.Middleware.Diverter)

Module Middleware.Diverter

type (!'next_input, !'next_output, !'output) t = +Diverter (middleware.Middleware.Diverter)

Module Middleware.Diverter

type (!'next_input, !'next_output, !'output) t = ('next_input, 'next_output, 'output) Make(Monads.Identity).Diverter.t = -
  1. | Stop of 'output0 Monads.Identity.t
    (*

    Control stops here, and the 'output is returned to the wrapping Middleware.

    *)
  2. | Continue of 'next_input0 * ('next_output0 -> 'output1 Monads.Identity.t)
    (*

    Control continues to the next Middleware g, which receives 'next_input as input. After g runs, its result is transformed with the given function.

    *)

Union, determining whether or not to run a subsequent Middleware or return early.

+
  1. | Stop of 'output0 Monads.Identity.t
    (*

    Control stops here, and the 'output is returned to the wrapping Middleware.

    *)
  2. | Continue of 'next_input0 * ('next_output0 -> 'output1 Monads.Identity.t)
    (*

    Control continues to the next Middleware g, which receives 'next_input as input. After g runs, its result is transformed with the given function.

    *)

Union, determining whether or not to run a subsequent Middleware or return early.

\ No newline at end of file diff --git a/middleware/Middleware/Infix/index.html b/middleware/Middleware/Infix/index.html index f316448..e25244a 100644 --- a/middleware/Middleware/Infix/index.html +++ b/middleware/Middleware/Infix/index.html @@ -1,9 +1,9 @@ -Infix (middleware.Middleware.Infix)

Module Middleware.Infix

val (<<>>) : +Infix (middleware.Middleware.Infix)

Module Middleware.Infix

val (<<>>) : ('ai, 'bi, 'bo, 'ao) t -> ('bi, 'ci, 'co, 'bo) t -> ('ai, 'ci, 'co, 'ao) t

ma <<>> mb is an infix compose operator.

val (<&>) : ('ai, 'bi, 'bo, 'ao) t -> ('bi -> 'bo Monads.Identity.t) -> 'ai -> - 'ao Monads.Identity.t

ma <&> mb is an infix terminate operator.

+ 'ao Monads.Identity.t

ma <&> mb is an infix terminate operator.

\ No newline at end of file diff --git a/middleware/Middleware/Make/Diverter/index.html b/middleware/Middleware/Make/Diverter/index.html index 86a0dad..caae23e 100644 --- a/middleware/Middleware/Make/Diverter/index.html +++ b/middleware/Middleware/Make/Diverter/index.html @@ -1,2 +1,2 @@ -Diverter (middleware.Middleware.Make.Diverter)

Module Make.Diverter

type ('next_input, 'next_output, 'output) t =
  1. | Stop of 'output M.t
    (*

    Control stops here, and the 'output is returned to the wrapping Middleware.

    *)
  2. | Continue of 'next_input * ('next_output -> 'output M.t)
    (*

    Control continues to the next Middleware g, which receives 'next_input as input. After g runs, its result is transformed with the given function.

    *)

Union, determining whether or not to run a subsequent Middleware or return early.

+Diverter (middleware.Middleware.Make.Diverter)

Module Make.Diverter

type ('next_input, 'next_output, 'output) t =
  1. | Stop of 'output M.t
    (*

    Control stops here, and the 'output is returned to the wrapping Middleware.

    *)
  2. | Continue of 'next_input * ('next_output -> 'output M.t)
    (*

    Control continues to the next Middleware g, which receives 'next_input as input. After g runs, its result is transformed with the given function.

    *)

Union, determining whether or not to run a subsequent Middleware or return early.

\ No newline at end of file diff --git a/middleware/Middleware/Make/Infix/index.html b/middleware/Middleware/Make/Infix/index.html index c5e27a6..9f076a2 100644 --- a/middleware/Middleware/Make/Infix/index.html +++ b/middleware/Middleware/Make/Infix/index.html @@ -1,5 +1,5 @@ -Infix (middleware.Middleware.Make.Infix)

Module Make.Infix

val (<<>>) : +Infix (middleware.Middleware.Make.Infix)

Module Make.Infix

val (<<>>) : ('ai, 'bi, 'bo, 'ao) t -> ('bi, 'ci, 'co, 'bo) t -> - ('ai, 'ci, 'co, 'ao) t

ma <<>> mb is an infix compose operator.

val (<&>) : ('ai, 'bi, 'bo, 'ao) t -> ('bi -> 'bo M.t) -> 'ai -> 'ao M.t

ma <&> mb is an infix terminate operator.

+ ('ai, 'ci, 'co, 'ao) t

ma <<>> mb is an infix compose operator.

val (<&>) : ('ai, 'bi, 'bo, 'ao) t -> ('bi -> 'bo M.t) -> 'ai -> 'ao M.t

ma <&> mb is an infix terminate operator.

\ No newline at end of file diff --git a/middleware/Middleware/Make/argument-1-M/index.html b/middleware/Middleware/Make/argument-1-M/index.html index 776248b..92daca5 100644 --- a/middleware/Middleware/Make/argument-1-M/index.html +++ b/middleware/Middleware/Make/argument-1-M/index.html @@ -1,2 +1,2 @@ -M (middleware.Middleware.Make.M)

Parameter Make.M

type 'a t
val map : ('a -> 'b) -> 'a t -> 'b t

map fn a applies fn to a, producing a 'b t.

val bind : 'a t -> ('a -> 'b t) -> 'b t

bind fn a sequentially composes a with fn, passing the result of the first action to fn.

val return : 'a -> 'a t

return a injects the value a into the monadic type.

+M (middleware.Middleware.Make.M)

Parameter Make.M

type 'a t
val map : ('a -> 'b) -> 'a t -> 'b t

map fn a applies fn to a, producing a 'b t.

val bind : 'a t -> ('a -> 'b t) -> 'b t

bind fn a sequentially composes a with fn, passing the result of the first action to fn.

val return : 'a -> 'a t

return a injects the value a into the monadic type.

\ No newline at end of file diff --git a/middleware/Middleware/Make/index.html b/middleware/Middleware/Make/index.html index 2c46f13..f963beb 100644 --- a/middleware/Middleware/Make/index.html +++ b/middleware/Middleware/Make/index.html @@ -1,5 +1,5 @@ -Make (middleware.Middleware.Make)

Module Middleware.Make

Creates a Middleware module, providing effects with the given Monad.

Parameters

module M : MONAD

Signature

module Diverter : sig ... end
val stop : 'output M.t -> (_, _, 'output) Diverter.t

stop x creates a Stop Diverter with the return value x.

val continue : +Make (middleware.Middleware.Make)

Module Middleware.Make

Creates a Middleware module, providing effects with the given Monad.

Parameters

module M : MONAD

Signature

module Diverter : sig ... end
val stop : 'output M.t -> (_, _, 'output) Diverter.t

stop x creates a Stop Diverter with the return value x.

val continue : 'next_input -> ('next_output -> 'output M.t) -> ('next_input, 'next_output, 'output) Diverter.t

continue next_input fn creates a Continue diverter, passing next_input to the subsequent Middleware g. fn is applied to the value returned by g.

type ('input, 'next_input, 'next_output, 'output) t = @@ -7,4 +7,4 @@ ('next_input, 'next_output, 'output) Diverter.t

A function which composes with other Middleware functions. Composed Middleware can respond to the return value of Middleware running later. When a Middleware function f runs, it either:

  • Stops, and returns a result
  • Continues by allowing the next middleware function g to run
  • After g runs, control returns to f, where f can respond to g's result and change its own return value.
val terminate : ('ai, 'bi, 'bo, 'ao) t -> ('bi -> 'bo M.t) -> 'ai -> 'ao M.t

terminate ma fb terminates Middleware ma by providing a function fb which does not delegate. In order to turn a Middleware chain into a function, it must be terminated by a non-delegating function using terminate.

val compose : ('ai, 'bi, 'bo, 'ao) t -> ('bi, 'ci, 'co, 'bo) t -> - ('ai, 'ci, 'co, 'ao) t

compose ma mb composes two Middleware functions. When run, ma first runs, giving mb the option to continue later on. Note that a composed Middleware still need to be terminated via terminate to be called.

module Infix : sig ... end
+ ('ai, 'ci, 'co, 'ao) t

compose ma mb composes two Middleware functions. When run, ma first runs, giving mb the option to continue later on. Note that a composed Middleware still need to be terminated via terminate to be called.

module Infix : sig ... end
\ No newline at end of file diff --git a/middleware/Middleware/Make2/Diverter/index.html b/middleware/Middleware/Make2/Diverter/index.html index 013eddc..ad5cdb4 100644 --- a/middleware/Middleware/Make2/Diverter/index.html +++ b/middleware/Middleware/Make2/Diverter/index.html @@ -1,2 +1,2 @@ -Diverter (middleware.Middleware.Make2.Diverter)

Module Make2.Diverter

type ('next_input, 'next_output, 'output, 'm) t =
  1. | Stop of ('output, 'm) M.t
    (*

    Control stops here, and 'output is returned to the wrapping Middleware.

    *)
  2. | Continue of 'next_input * ('next_output -> ('output, 'm) M.t)
    (*

    Control continues to the next Middleware g, which receives 'next_input as input. After g runs, its result is transformed with the given function.

    *)

Union, determining whether or not to run a subsequent Middleware or return early.

+Diverter (middleware.Middleware.Make2.Diverter)

Module Make2.Diverter

type ('next_input, 'next_output, 'output, 'm) t =
  1. | Stop of ('output, 'm) M.t
    (*

    Control stops here, and 'output is returned to the wrapping Middleware.

    *)
  2. | Continue of 'next_input * ('next_output -> ('output, 'm) M.t)
    (*

    Control continues to the next Middleware g, which receives 'next_input as input. After g runs, its result is transformed with the given function.

    *)

Union, determining whether or not to run a subsequent Middleware or return early.

\ No newline at end of file diff --git a/middleware/Middleware/Make2/Infix/index.html b/middleware/Middleware/Make2/Infix/index.html index 56e3bff..946c0df 100644 --- a/middleware/Middleware/Make2/Infix/index.html +++ b/middleware/Middleware/Make2/Infix/index.html @@ -1,9 +1,9 @@ -Infix (middleware.Middleware.Make2.Infix)

Module Make2.Infix

val (<<>>) : +Infix (middleware.Middleware.Make2.Infix)

Module Make2.Infix

val (<<>>) : ('ai, 'bi, 'bo, 'ao, 'm) t -> ('bi, 'ci, 'co, 'bo, 'm) t -> ('ai, 'ci, 'co, 'ao, 'm) t

ma <<>> mb is an infix compose operator.

val (<&>) : ('ai, 'bi, 'bo, 'ao, 'm) t -> ('bi -> ('bo, 'm) M.t) -> 'ai -> - ('ao, 'm) M.t

ma <&> mb is an infix terminate operator.

+ ('ao, 'm) M.t

ma <&> mb is an infix terminate operator.

\ No newline at end of file diff --git a/middleware/Middleware/Make2/argument-1-M/index.html b/middleware/Middleware/Make2/argument-1-M/index.html index bee2fb0..5947429 100644 --- a/middleware/Middleware/Make2/argument-1-M/index.html +++ b/middleware/Middleware/Make2/argument-1-M/index.html @@ -1,2 +1,2 @@ -M (middleware.Middleware.Make2.M)

Parameter Make2.M

type ('m, 'a) t
val map : ('a -> 'b) -> ('a, 'm) t -> ('b, 'm) t

map fn a applies fn to a, producing a 'b t.

val bind : ('a, 'm) t -> ('a -> ('b, 'm) t) -> ('b, 'm) t

bind fn a sequentially composes a with fn, passing the result of the first action to fn.

val return : 'a -> ('a, 'm) t

return a injects the value a into the monadic type.

+M (middleware.Middleware.Make2.M)

Parameter Make2.M

type ('m, 'a) t
val map : ('a -> 'b) -> ('a, 'm) t -> ('b, 'm) t

map fn a applies fn to a, producing a 'b t.

val bind : ('a, 'm) t -> ('a -> ('b, 'm) t) -> ('b, 'm) t

bind fn a sequentially composes a with fn, passing the result of the first action to fn.

val return : 'a -> ('a, 'm) t

return a injects the value a into the monadic type.

\ No newline at end of file diff --git a/middleware/Middleware/Make2/index.html b/middleware/Middleware/Make2/index.html index 85fa799..07f3670 100644 --- a/middleware/Middleware/Make2/index.html +++ b/middleware/Middleware/Make2/index.html @@ -1,5 +1,5 @@ -Make2 (middleware.Middleware.Make2)

Module Middleware.Make2

Creates a Middleware module, providing effects with the given two-parameter Monad.

Parameters

module M : MONAD2

Signature

module Diverter : sig ... end
val stop : ('output, 'm) M.t -> (_, _, 'output, 'm) Diverter.t

stop x creates a Stop Diverter with the return value x.

val continue : +Make2 (middleware.Middleware.Make2)

Module Middleware.Make2

Creates a Middleware module, providing effects with the given two-parameter Monad.

Parameters

module M : MONAD2

Signature

module Diverter : sig ... end
val stop : ('output, 'm) M.t -> (_, _, 'output, 'm) Diverter.t

stop x creates a Stop Diverter with the return value x.

val continue : 'next_input -> ('next_output -> ('output, 'm) M.t) -> ('next_input, 'next_output, 'output, 'm) Diverter.t

continue next_input fn creates a Continue diverter, passing next_input to the subsequent Middleware g. fn is applied to the value returned by g.

type ('input, 'next_input, 'next_output, 'output, 'm) t = @@ -11,4 +11,4 @@ ('ao, 'm) M.t

terminate ma fb terminates Middleware ma by providing a function fb which does not delegate. In order to turn a Middleware chain into a function, it must be terminated by a non-delegating function using terminate.

val compose : ('ai, 'bi, 'bo, 'ao, 'm) t -> ('bi, 'ci, 'co, 'bo, 'm) t -> - ('ai, 'ci, 'co, 'ao, 'm) t

compose ma mb composes two Middleware functions. When run, ma first runs, giving mb the option to continue later on. Note that a composed Middleware still need to be terminated via terminate to be called.

module Infix : sig ... end
+ ('ai, 'ci, 'co, 'ao, 'm) t

compose ma mb composes two Middleware functions. When run, ma first runs, giving mb the option to continue later on. Note that a composed Middleware still need to be terminated via terminate to be called.

module Infix : sig ... end
\ No newline at end of file diff --git a/middleware/Middleware/Monads/Identity/index.html b/middleware/Middleware/Monads/Identity/index.html index f6b6213..0d8da02 100644 --- a/middleware/Middleware/Monads/Identity/index.html +++ b/middleware/Middleware/Monads/Identity/index.html @@ -1,2 +1,2 @@ -Identity (middleware.Middleware.Monads.Identity)

Module Monads.Identity

The identity monad, which has no special monadic behavior.

type 'a t = 'a
val map : ('a -> 'b) -> 'a t -> 'b t

map fn a applies fn to a, producing a 'b t.

val bind : 'a t -> ('a -> 'b t) -> 'b t

bind fn a sequentially composes a with fn, passing the result of the first action to fn.

val return : 'a -> 'a t

return a injects the value a into the monadic type.

+Identity (middleware.Middleware.Monads.Identity)

Module Monads.Identity

The identity monad, which has no special monadic behavior.

type 'a t = 'a
val map : ('a -> 'b) -> 'a t -> 'b t

map fn a applies fn to a, producing a 'b t.

val bind : 'a t -> ('a -> 'b t) -> 'b t

bind fn a sequentially composes a with fn, passing the result of the first action to fn.

val return : 'a -> 'a t

return a injects the value a into the monadic type.

\ No newline at end of file diff --git a/middleware/Middleware/Monads/index.html b/middleware/Middleware/Monads/index.html index 2913bd6..2eb9161 100644 --- a/middleware/Middleware/Monads/index.html +++ b/middleware/Middleware/Monads/index.html @@ -1,2 +1,2 @@ -Monads (middleware.Middleware.Monads)

Module Middleware.Monads

Some common monads.

module Identity : MONAD with type 'a t = 'a

The identity monad, which has no special monadic behavior.

+Monads (middleware.Middleware.Monads)

Module Middleware.Monads

Some common monads.

module Identity : MONAD with type 'a t = 'a

The identity monad, which has no special monadic behavior.

\ No newline at end of file diff --git a/middleware/Middleware/index.html b/middleware/Middleware/index.html index 637c8b7..3ba626e 100644 --- a/middleware/Middleware/index.html +++ b/middleware/Middleware/index.html @@ -1,5 +1,5 @@ -Middleware (middleware.Middleware)

Module Middleware

A "middleware" function is one which runs before, after, and possibly instead of another function.

Middleware can be composed, in order to create a chain of wrapping invocations.

Note that a middleware function can not be called on its own. It is required to be "terminated" by a conventional function.

module type MONAD = sig ... end

Minimal monad definition required by a Middleware.

module type MONAD2 = sig ... end

Monads of two type parameters.

module Monads : sig ... end

Some common monads.

module Make (M : MONAD) : sig ... end

Creates a Middleware module, providing effects with the given Monad.

module Make2 (M : MONAD2) : sig ... end

Creates a Middleware module, providing effects with the given two-parameter Monad.

Middleware backed by the identity monad.

include sig ... end
module Diverter : sig ... end
val stop : 'output Monads.Identity.t -> ('a, 'b, 'output) Diverter.t

stop x creates a Stop Diverter with the return value x.

val continue : +Middleware (middleware.Middleware)

Module Middleware

A "middleware" function is one which runs before, after, and possibly instead of another function.

Middleware can be composed, in order to create a chain of wrapping invocations.

Note that a middleware function can not be called on its own. It is required to be "terminated" by a conventional function.

module type MONAD = sig ... end

Minimal monad definition required by a Middleware.

module type MONAD2 = sig ... end

Monads of two type parameters.

module Monads : sig ... end

Some common monads.

module Make (M : MONAD) : sig ... end

Creates a Middleware module, providing effects with the given Monad.

module Make2 (M : MONAD2) : sig ... end

Creates a Middleware module, providing effects with the given two-parameter Monad.

Middleware backed by the identity monad.

include sig ... end
module Diverter : sig ... end
val stop : 'output Monads.Identity.t -> ('a, 'b, 'output) Diverter.t

stop x creates a Stop Diverter with the return value x.

val continue : 'next_input -> ('next_output -> 'output Monads.Identity.t) -> ('next_input, 'next_output, 'output) Diverter.t

continue next_input fn creates a Continue diverter, passing next_input to the subsequent Middleware g. fn is applied to the value returned by g.

type (!'input0, !'next_input0, !'next_output0, !'output0) t = @@ -11,4 +11,4 @@ 'ao Monads.Identity.t

terminate ma fb terminates Middleware ma by providing a function fb which does not delegate. In order to turn a Middleware chain into a function, it must be terminated by a non-delegating function using terminate.

val compose : ('ai, 'bi, 'bo, 'ao) t -> ('bi, 'ci, 'co, 'bo) t -> - ('ai, 'ci, 'co, 'ao) t

compose ma mb composes two Middleware functions. When run, ma first runs, giving mb the option to continue later on. Note that a composed Middleware still need to be terminated via terminate to be called.

module Infix : sig ... end
+ ('ai, 'ci, 'co, 'ao) t

compose ma mb composes two Middleware functions. When run, ma first runs, giving mb the option to continue later on. Note that a composed Middleware still need to be terminated via terminate to be called.

module Infix : sig ... end
\ No newline at end of file diff --git a/middleware/Middleware/module-type-MONAD/index.html b/middleware/Middleware/module-type-MONAD/index.html index 9c1f698..b28bde3 100644 --- a/middleware/Middleware/module-type-MONAD/index.html +++ b/middleware/Middleware/module-type-MONAD/index.html @@ -1,2 +1,2 @@ -MONAD (middleware.Middleware.MONAD)

Module type Middleware.MONAD

Minimal monad definition required by a Middleware.

type 'a t
val map : ('a -> 'b) -> 'a t -> 'b t

map fn a applies fn to a, producing a 'b t.

val bind : 'a t -> ('a -> 'b t) -> 'b t

bind fn a sequentially composes a with fn, passing the result of the first action to fn.

val return : 'a -> 'a t

return a injects the value a into the monadic type.

+MONAD (middleware.Middleware.MONAD)

Module type Middleware.MONAD

Minimal monad definition required by a Middleware.

type 'a t
val map : ('a -> 'b) -> 'a t -> 'b t

map fn a applies fn to a, producing a 'b t.

val bind : 'a t -> ('a -> 'b t) -> 'b t

bind fn a sequentially composes a with fn, passing the result of the first action to fn.

val return : 'a -> 'a t

return a injects the value a into the monadic type.

\ No newline at end of file diff --git a/middleware/Middleware/module-type-MONAD2/index.html b/middleware/Middleware/module-type-MONAD2/index.html index 9138817..49ec072 100644 --- a/middleware/Middleware/module-type-MONAD2/index.html +++ b/middleware/Middleware/module-type-MONAD2/index.html @@ -1,2 +1,2 @@ -MONAD2 (middleware.Middleware.MONAD2)

Module type Middleware.MONAD2

Monads of two type parameters.

type ('m, 'a) t
val map : ('a -> 'b) -> ('a, 'm) t -> ('b, 'm) t

map fn a applies fn to a, producing a 'b t.

val bind : ('a, 'm) t -> ('a -> ('b, 'm) t) -> ('b, 'm) t

bind fn a sequentially composes a with fn, passing the result of the first action to fn.

val return : 'a -> ('a, 'm) t

return a injects the value a into the monadic type.

+MONAD2 (middleware.Middleware.MONAD2)

Module type Middleware.MONAD2

Monads of two type parameters.

type ('m, 'a) t
val map : ('a -> 'b) -> ('a, 'm) t -> ('b, 'm) t

map fn a applies fn to a, producing a 'b t.

val bind : ('a, 'm) t -> ('a -> ('b, 'm) t) -> ('b, 'm) t

bind fn a sequentially composes a with fn, passing the result of the first action to fn.

val return : 'a -> ('a, 'm) t

return a injects the value a into the monadic type.

\ No newline at end of file diff --git a/middleware/index.html b/middleware/index.html index 1984a33..c8cc0fe 100644 --- a/middleware/index.html +++ b/middleware/index.html @@ -1,2 +1,2 @@ -index (middleware.index)

middleware index

Library middleware

The entry point of this library is the module: Middleware.

+index (middleware.index)

middleware index

Library middleware

The entry point of this library is the module: Middleware.

\ No newline at end of file diff --git a/odoc.support/fonts/fira-mono-v14-latin-500.woff2 b/odoc.support/fonts/fira-mono-v14-latin-500.woff2 deleted file mode 100644 index 9d07a63..0000000 Binary files a/odoc.support/fonts/fira-mono-v14-latin-500.woff2 and /dev/null differ diff --git a/odoc.support/fonts/fira-mono-v14-latin-regular.woff2 b/odoc.support/fonts/fira-mono-v14-latin-regular.woff2 deleted file mode 100644 index edc71a8..0000000 Binary files a/odoc.support/fonts/fira-mono-v14-latin-regular.woff2 and /dev/null differ diff --git a/odoc.support/fonts/fira-sans-v17-latin-500.woff2 b/odoc.support/fonts/fira-sans-v17-latin-500.woff2 deleted file mode 100644 index 24bb8f4..0000000 Binary files a/odoc.support/fonts/fira-sans-v17-latin-500.woff2 and /dev/null differ diff --git a/odoc.support/fonts/fira-sans-v17-latin-500italic.woff2 b/odoc.support/fonts/fira-sans-v17-latin-500italic.woff2 deleted file mode 100644 index 1a8b72d..0000000 Binary files a/odoc.support/fonts/fira-sans-v17-latin-500italic.woff2 and /dev/null differ diff --git a/odoc.support/fonts/fira-sans-v17-latin-700.woff2 b/odoc.support/fonts/fira-sans-v17-latin-700.woff2 deleted file mode 100644 index 40b8a1c..0000000 Binary files a/odoc.support/fonts/fira-sans-v17-latin-700.woff2 and /dev/null differ diff --git a/odoc.support/fonts/fira-sans-v17-latin-700italic.woff2 b/odoc.support/fonts/fira-sans-v17-latin-700italic.woff2 deleted file mode 100644 index bdf8f5f..0000000 Binary files a/odoc.support/fonts/fira-sans-v17-latin-700italic.woff2 and /dev/null differ diff --git a/odoc.support/fonts/fira-sans-v17-latin-italic.woff2 b/odoc.support/fonts/fira-sans-v17-latin-italic.woff2 deleted file mode 100644 index b9619dd..0000000 Binary files a/odoc.support/fonts/fira-sans-v17-latin-italic.woff2 and /dev/null differ diff --git a/odoc.support/fonts/fira-sans-v17-latin-regular.woff2 b/odoc.support/fonts/fira-sans-v17-latin-regular.woff2 deleted file mode 100644 index d31eba8..0000000 Binary files a/odoc.support/fonts/fira-sans-v17-latin-regular.woff2 and /dev/null differ diff --git a/odoc.support/fonts/noticia-text-v15-latin-700.woff2 b/odoc.support/fonts/noticia-text-v15-latin-700.woff2 deleted file mode 100644 index 536fbe1..0000000 Binary files a/odoc.support/fonts/noticia-text-v15-latin-700.woff2 and /dev/null differ diff --git a/odoc.support/fonts/noticia-text-v15-latin-italic.woff2 b/odoc.support/fonts/noticia-text-v15-latin-italic.woff2 deleted file mode 100644 index 9b83b07..0000000 Binary files a/odoc.support/fonts/noticia-text-v15-latin-italic.woff2 and /dev/null differ diff --git a/odoc.support/fonts/noticia-text-v15-latin-regular.woff2 b/odoc.support/fonts/noticia-text-v15-latin-regular.woff2 deleted file mode 100644 index efff29f..0000000 Binary files a/odoc.support/fonts/noticia-text-v15-latin-regular.woff2 and /dev/null differ diff --git a/odoc.support/highlight.pack.js b/odoc.support/highlight.pack.js index 7d1bcd0..a373159 100644 --- a/odoc.support/highlight.pack.js +++ b/odoc.support/highlight.pack.js @@ -302,238 +302,7 @@ e["after:highlightBlock"](Object.assign({block:t.el},t))})})(e),s.push(e)} },t.versionString="11.7.0",t.regex={concat:p,lookahead:d,either:f,optional:h, anyNumberOfTimes:u};for(const t in A)"object"==typeof A[t]&&e.exports(A[t]) ;return Object.assign(t,A),t})({});return te}() -;"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs);/*! `reasonml` grammar compiled for Highlight.js 11.7.0 */ -(()=>{var e=(()=>{"use strict";return e=>{ -const n="~?[a-z$_][0-9a-zA-Z$_]*",a="`?[A-Z$_][0-9a-zA-Z$_]*",s="("+["||","++","**","+.","*","/","*.","/.","..."].map((e=>e.split("").map((e=>"\\"+e)).join(""))).join("|")+"|\\|>|&&|==|===)",i="\\s+"+s+"\\s+",r={ -keyword:"and as asr assert begin class constraint do done downto else end exception external for fun function functor if in include inherit initializer land lazy let lor lsl lsr lxor match method mod module mutable new nonrec object of open or private rec sig struct then to try type val virtual when while with", -built_in:"array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 ref string unit ", -literal:"true false" -},l="\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)",t={ -className:"number",relevance:0,variants:[{begin:l},{begin:"\\(-"+l+"\\)"}]},c={ -className:"operator",relevance:0,begin:s},o=[{className:"identifier", -relevance:0,begin:n},c,t],g=[e.QUOTE_STRING_MODE,c,{className:"module", -begin:"\\b"+a,returnBegin:!0,relevance:0,end:".",contains:[{ -className:"identifier",begin:a,relevance:0}]}],b=[{className:"module", -begin:"\\b"+a,returnBegin:!0,end:".",relevance:0,contains:[{ -className:"identifier",begin:a,relevance:0}]}],m={className:"function", -relevance:0,keywords:r,variants:[{begin:"\\s(\\(\\.?.*?\\)|"+n+")\\s*=>", -end:"\\s*=>",returnBegin:!0,relevance:0,contains:[{className:"params", -variants:[{begin:n},{ -begin:"~?[a-z$_][0-9a-zA-Z$_]*(\\s*:\\s*[a-z$_][0-9a-z$_]*(\\(\\s*('?[a-z$_][0-9a-z$_]*\\s*(,'?[a-z$_][0-9a-z$_]*\\s*)*)?\\))?){0,2}" -},{begin:/\(\s*\)/}]}]},{begin:"\\s\\(\\.?[^;\\|]*\\)\\s*=>",end:"\\s=>", -returnBegin:!0,relevance:0,contains:[{className:"params",relevance:0,variants:[{ -begin:n,end:"(,|\\n|\\))",relevance:0,contains:[c,{className:"typing",begin:":", -end:"(,|\\n)",returnBegin:!0,relevance:0,contains:b}]}]}]},{ -begin:"\\(\\.\\s"+n+"\\)\\s*=>"}]};g.push(m);const d={className:"constructor", -begin:a+"\\(",end:"\\)",illegal:"\\n",keywords:r, -contains:[e.QUOTE_STRING_MODE,c,{className:"params",begin:"\\b"+n}]},u={ -className:"pattern-match",begin:"\\|",returnBegin:!0,keywords:r,end:"=>", -relevance:0,contains:[d,c,{relevance:0,className:"constructor",begin:a}]},v={ -className:"module-access",keywords:r,returnBegin:!0,variants:[{ -begin:"\\b("+a+"\\.)+"+n},{begin:"\\b("+a+"\\.)+\\(",end:"\\)",returnBegin:!0, -contains:[m,{begin:"\\(",end:"\\)",relevance:0,skip:!0}].concat(g)},{ -begin:"\\b("+a+"\\.)+\\{",end:/\}/}],contains:g};return b.push(v),{ -name:"ReasonML",aliases:["re"],keywords:r,illegal:"(:-|:=|\\$\\{|\\+=)", -contains:[e.COMMENT("/\\*","\\*/",{illegal:"^(#,\\/\\/)"}),{ -className:"character",begin:"'(\\\\[^']+|[^'])'",illegal:"\\n",relevance:0 -},e.QUOTE_STRING_MODE,{className:"literal",begin:"\\(\\)",relevance:0},{ -className:"literal",begin:"\\[\\|",end:"\\|\\]",relevance:0,contains:o},{ -className:"literal",begin:"\\[",end:"\\]",relevance:0,contains:o},d,{ -className:"operator",begin:i,illegal:"--\x3e",relevance:0 -},t,e.C_LINE_COMMENT_MODE,u,m,{className:"module-def", -begin:"\\bmodule\\s+"+n+"\\s+"+a+"\\s+=\\s+\\{",end:/\}/,returnBegin:!0, -keywords:r,relevance:0,contains:[{className:"module",relevance:0,begin:a},{ -begin:/\{/,end:/\}/,relevance:0,skip:!0}].concat(g)},v]}}})() -;hljs.registerLanguage("reasonml",e)})();/*! `javascript` grammar compiled for Highlight.js 11.7.0 */ -(()=>{var e=(()=>{"use strict" -;const e="[A-Za-z$_][0-9A-Za-z$_]*",n=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],a=["true","false","null","undefined","NaN","Infinity"],t=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],s=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],r=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],c=["arguments","this","super","console","window","document","localStorage","module","global"],i=[].concat(r,t,s) -;return o=>{const l=o.regex,b=e,d={begin:/<[A-Za-z0-9\\._:-]+/, -end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(e,n)=>{ -const a=e[0].length+e.index,t=e.input[a] -;if("<"===t||","===t)return void n.ignoreMatch();let s -;">"===t&&(((e,{after:n})=>{const a="",M={ -match:[/const|var|let/,/\s+/,b,/\s*/,/=\s*/,/(async\s*)?/,l.lookahead(C)], -keywords:"async",className:{1:"keyword",3:"title.function"},contains:[S]} -;return{name:"Javascript",aliases:["js","jsx","mjs","cjs"],keywords:g,exports:{ -PARAMS_CONTAINS:p,CLASS_REFERENCE:R},illegal:/#(?![$_A-z])/, -contains:[o.SHEBANG({label:"shebang",binary:"node",relevance:5}),{ -label:"use_strict",className:"meta",relevance:10, -begin:/^\s*['"]use (strict|asm)['"]/ -},o.APOS_STRING_MODE,o.QUOTE_STRING_MODE,y,N,_,h,{match:/\$\d+/},E,R,{ -className:"attr",begin:b+l.lookahead(":"),relevance:0},M,{ -begin:"("+o.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*", -keywords:"return throw case",relevance:0,contains:[h,o.REGEXP_MODE,{ -className:"function",begin:C,returnBegin:!0,end:"\\s*=>",contains:[{ -className:"params",variants:[{begin:o.UNDERSCORE_IDENT_RE,relevance:0},{ -className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0, -excludeEnd:!0,keywords:g,contains:p}]}]},{begin:/,/,relevance:0},{match:/\s+/, -relevance:0},{variants:[{begin:"<>",end:""},{ -match:/<[A-Za-z0-9\\._:-]+\s*\/>/},{begin:d.begin, -"on:begin":d.isTrulyOpeningTag,end:d.end}],subLanguage:"xml",contains:[{ -begin:d.begin,end:d.end,skip:!0,contains:["self"]}]}]},O,{ -beginKeywords:"while if switch catch for"},{ -begin:"\\b(?!function)"+o.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{", -returnBegin:!0,label:"func.def",contains:[S,o.inherit(o.TITLE_MODE,{begin:b, -className:"title.function"})]},{match:/\.\.\./,relevance:0},x,{match:"\\$"+b, -relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"}, -contains:[S]},k,{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/, -className:"variable.constant"},w,T,{match:/\$[(.]/}]}}})() -;hljs.registerLanguage("javascript",e)})();/*! `sql` grammar compiled for Highlight.js 11.7.0 */ -(()=>{var e=(()=>{"use strict";return e=>{ -const r=e.regex,t=e.COMMENT("--","$"),n=["true","false","unknown"],a=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],i=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],s=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],o=i,c=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year","add","asc","collation","desc","final","first","last","view"].filter((e=>!i.includes(e))),l={ -begin:r.concat(/\b/,r.either(...o),/\s*\(/),relevance:0,keywords:{built_in:o}} -;return{name:"SQL",case_insensitive:!0,illegal:/[{}]|<\//,keywords:{ -$pattern:/\b[\w\.]+/,keyword:((e,{exceptions:r,when:t}={})=>{const n=t -;return r=r||[],e.map((e=>e.match(/\|\d+$/)||r.includes(e)?e:n(e)?e+"|0":e)) -})(c,{when:e=>e.length<3}),literal:n,type:a, -built_in:["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"] -},contains:[{begin:r.either(...s),relevance:0,keywords:{$pattern:/[\w\.]+/, -keyword:c.concat(s),literal:n,type:a}},{className:"type", -begin:r.either("double precision","large object","with timezone","without timezone") -},l,{className:"variable",begin:/@[a-z0-9]+/},{className:"string",variants:[{ -begin:/'/,end:/'/,contains:[{begin:/''/}]}]},{begin:/"/,end:/"/,contains:[{ -begin:/""/}]},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,t,{className:"operator", -begin:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0}]}}})() -;hljs.registerLanguage("sql",e)})();/*! `bash` grammar compiled for Highlight.js 11.7.0 */ -(()=>{var e=(()=>{"use strict";return e=>{const s=e.regex,t={},n={begin:/\$\{/, -end:/\}/,contains:["self",{begin:/:-/,contains:[t]}]};Object.assign(t,{ -className:"variable",variants:[{ -begin:s.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},n]});const a={ -className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},i={ -begin:/<<-?\s*(?=\w+)/,starts:{contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/, -end:/(\w+)/,className:"string"})]}},c={className:"string",begin:/"/,end:/"/, -contains:[e.BACKSLASH_ESCAPE,t,a]};a.contains.push(c);const o={begin:/\$?\(\(/, -end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,t] -},r=e.SHEBANG({binary:"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",relevance:10 -}),l={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0, -contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0};return{ -name:"Bash",aliases:["sh"],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/, -keyword:["if","then","else","elif","fi","for","while","in","do","done","case","esac","function"], -literal:["true","false"], -built_in:["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset","alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","type","typeset","ulimit","unalias","set","shopt","autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp","chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"] -},contains:[r,e.SHEBANG(),l,o,e.HASH_COMMENT_MODE,i,{match:/(\/[a-z._-]+)+/},c,{ -className:"",begin:/\\"/},{className:"string",begin:/'/,end:/'/},t]}}})() -;hljs.registerLanguage("bash",e)})();/*! `shell` grammar compiled for Highlight.js 11.7.0 */ -(()=>{var s=(()=>{"use strict";return s=>({name:"Shell Session", -aliases:["console","shellsession"],contains:[{className:"meta.prompt", -begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#][ ]?/,starts:{end:/[^\\](?=\s*$)/, -subLanguage:"bash"}}]})})();hljs.registerLanguage("shell",s)})();/*! `plaintext` grammar compiled for Highlight.js 11.7.0 */ -(()=>{var t=(()=>{"use strict";return t=>({name:"Plain text", -aliases:["text","txt"],disableAutodetect:!0})})() -;hljs.registerLanguage("plaintext",t)})();/*! `graphql` grammar compiled for Highlight.js 11.7.0 */ -(()=>{var e=(()=>{"use strict";return e=>{const a=e.regex;return{name:"GraphQL", -aliases:["gql"],case_insensitive:!0,disableAutodetect:!1,keywords:{ -keyword:["query","mutation","subscription","type","input","schema","directive","interface","union","scalar","fragment","enum","on"], -literal:["true","false","null"]}, -contains:[e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{ -scope:"punctuation",match:/[.]{3}/,relevance:0},{scope:"punctuation", -begin:/[\!\(\)\:\=\[\]\{\|\}]{1}/,relevance:0},{scope:"variable",begin:/\$/, -end:/\W/,excludeEnd:!0,relevance:0},{scope:"meta",match:/@\w+/,excludeEnd:!0},{ -scope:"symbol",begin:a.concat(/[_A-Za-z][_0-9A-Za-z]*/,a.lookahead(/\s*:/)), -relevance:0}],illegal:[/[;<']/,/BEGIN/]}}})();hljs.registerLanguage("graphql",e) -})();/*! `ocaml` grammar compiled for Highlight.js 11.7.0 */ -(()=>{var e=(()=>{"use strict";return e=>({name:"OCaml",aliases:["ml"], -keywords:{$pattern:"[a-z_]\\w*!?", -keyword:"and as assert asr begin class constraint do done downto else end exception external for fun function functor if in include inherit! inherit initializer land lazy let lor lsl lsr lxor match method!|10 method mod module mutable new object of open! open or private rec sig struct then to try type val! val virtual when while with parser value", -built_in:"array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 string unit in_channel out_channel ref", -literal:"true false"},illegal:/\/\/|>>/,contains:[{className:"literal", -begin:"\\[(\\|\\|)?\\]|\\(\\)",relevance:0},e.COMMENT("\\(\\*","\\*\\)",{ -contains:["self"]}),{className:"symbol",begin:"'[A-Za-z_](?!')[\\w']*"},{ -className:"type",begin:"`[A-Z][\\w']*"},{className:"type", -begin:"\\b[A-Z][\\w']*",relevance:0},{begin:"[a-z_]\\w*'[\\w']*",relevance:0 -},e.inherit(e.APOS_STRING_MODE,{className:"string",relevance:0 -}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"number", -begin:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)", -relevance:0},{begin:/->/}]})})();hljs.registerLanguage("ocaml",e)})();/*! `json` grammar compiled for Highlight.js 11.7.0 */ -(()=>{var e=(()=>{"use strict";return e=>{const a=["true","false","null"],n={ -scope:"literal",beginKeywords:a.join(" ")};return{name:"JSON",keywords:{ -literal:a},contains:[{className:"attr",begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/, -relevance:1.01},{match:/[{}[\],:]/,className:"punctuation",relevance:0 -},e.QUOTE_STRING_MODE,n,e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE], -illegal:"\\S"}}})();hljs.registerLanguage("json",e)})();/*! `python` grammar compiled for Highlight.js 11.7.0 */ -(()=>{var e=(()=>{"use strict";return e=>{ -const n=e.regex,a=/[\p{XID_Start}_]\p{XID_Continue}*/u,i=["and","as","assert","async","await","break","case","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","match","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"],s={ -$pattern:/[A-Za-z]\w+|__\w+__/,keyword:i, -built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"], -literal:["__debug__","Ellipsis","False","None","NotImplemented","True"], -type:["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union"] -},t={className:"meta",begin:/^(>>>|\.\.\.) /},r={className:"subst",begin:/\{/, -end:/\}/,keywords:s,illegal:/#/},l={begin:/\{\{/,relevance:0},b={ -className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{ -begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/, -contains:[e.BACKSLASH_ESCAPE,t],relevance:10},{ -begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/, -contains:[e.BACKSLASH_ESCAPE,t],relevance:10},{ -begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/, -contains:[e.BACKSLASH_ESCAPE,t,l,r]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/, -end:/"""/,contains:[e.BACKSLASH_ESCAPE,t,l,r]},{begin:/([uU]|[rR])'/,end:/'/, -relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{ -begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/, -end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/, -contains:[e.BACKSLASH_ESCAPE,l,r]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/, -contains:[e.BACKSLASH_ESCAPE,l,r]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] -},o="[0-9](_?[0-9])*",c=`(\\b(${o}))?\\.(${o})|\\b(${o})\\.`,d="\\b|"+i.join("|"),g={ -className:"number",relevance:0,variants:[{ -begin:`(\\b(${o})|(${c}))[eE][+-]?(${o})[jJ]?(?=${d})`},{begin:`(${c})[jJ]?`},{ -begin:`\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${d})`},{ -begin:`\\b0[bB](_?[01])+[lL]?(?=${d})`},{begin:`\\b0[oO](_?[0-7])+[lL]?(?=${d})` -},{begin:`\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${d})`},{begin:`\\b(${o})[jJ](?=${d})` -}]},p={className:"comment",begin:n.lookahead(/# type:/),end:/$/,keywords:s, -contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},m={ -className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/, -end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:s, -contains:["self",t,g,b,e.HASH_COMMENT_MODE]}]};return r.contains=[b,g,t],{ -name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:s, -illegal:/(<\/|->|\?)|=>/,contains:[t,g,{begin:/\bself\b/},{beginKeywords:"if", -relevance:0},b,p,e.HASH_COMMENT_MODE,{match:[/\bdef/,/\s+/,a],scope:{ -1:"keyword",3:"title.function"},contains:[m]},{variants:[{ -match:[/\bclass/,/\s+/,a,/\s*/,/\(\s*/,a,/\s*\)/]},{match:[/\bclass/,/\s+/,a]}], -scope:{1:"keyword",3:"title.class",6:"title.class.inherited"}},{ -className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[g,m,b]}]}}})() -;hljs.registerLanguage("python",e)})();/*! `xml` grammar compiled for Highlight.js 11.7.0 */ +;"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs);/*! `xml` grammar compiled for Highlight.js 11.7.0 */ (()=>{var e=(()=>{"use strict";return e=>{ const a=e.regex,n=a.concat(/[\p{L}_]/u,a.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),s={ className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},t={begin:/\s/, @@ -591,44 +360,102 @@ contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},{ begin:"^[-\\*]{3,}",end:"$"},a,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{ className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{ className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}}})() -;hljs.registerLanguage("markdown",e)})();/*! `c` grammar compiled for Highlight.js 11.7.0 */ -(()=>{var e=(()=>{"use strict";return e=>{const n=e.regex,t=e.COMMENT("//","$",{ -contains:[{begin:/\\\n/}] -}),s="[a-zA-Z_]\\w*::",a="(decltype\\(auto\\)|"+n.optional(s)+"[a-zA-Z_]\\w*"+n.optional("<[^<>]+>")+")",r={ -className:"type",variants:[{begin:"\\b[a-z\\d_]*_t\\b"},{ -match:/\batomic_[a-z]{3,6}\b/}]},i={className:"string",variants:[{ -begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{ -begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)", -end:"'",illegal:"."},e.END_SAME_AS_BEGIN({ -begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},l={ -className:"number",variants:[{begin:"\\b(0b[01']+)"},{ -begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)" -},{ -begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)" -}],relevance:0},o={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{ -keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include" -},contains:[{begin:/\\\n/,relevance:0},e.inherit(i,{className:"string"}),{ -className:"string",begin:/<.*?>/},t,e.C_BLOCK_COMMENT_MODE]},c={ -className:"title",begin:n.optional(s)+e.IDENT_RE,relevance:0 -},d=n.optional(s)+e.IDENT_RE+"\\s*\\(",u={ -keyword:["asm","auto","break","case","continue","default","do","else","enum","extern","for","fortran","goto","if","inline","register","restrict","return","sizeof","struct","switch","typedef","union","volatile","while","_Alignas","_Alignof","_Atomic","_Generic","_Noreturn","_Static_assert","_Thread_local","alignas","alignof","noreturn","static_assert","thread_local","_Pragma"], -type:["float","double","signed","unsigned","int","short","long","char","void","_Bool","_Complex","_Imaginary","_Decimal32","_Decimal64","_Decimal128","const","static","complex","bool","imaginary"], -literal:"true false NULL", -built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr" -},g=[o,r,t,e.C_BLOCK_COMMENT_MODE,l,i],m={variants:[{begin:/=/,end:/;/},{ -begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}], -keywords:u,contains:g.concat([{begin:/\(/,end:/\)/,keywords:u, -contains:g.concat(["self"]),relevance:0}]),relevance:0},p={ -begin:"("+a+"[\\*&\\s]+)+"+d,returnBegin:!0,end:/[{;=]/,excludeEnd:!0, -keywords:u,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:"decltype\\(auto\\)", -keywords:u,relevance:0},{begin:d,returnBegin:!0,contains:[e.inherit(c,{ -className:"title.function"})],relevance:0},{relevance:0,match:/,/},{ -className:"params",begin:/\(/,end:/\)/,keywords:u,relevance:0, -contains:[t,e.C_BLOCK_COMMENT_MODE,i,l,r,{begin:/\(/,end:/\)/,keywords:u, -relevance:0,contains:["self",t,e.C_BLOCK_COMMENT_MODE,i,l,r]}] -},r,t,e.C_BLOCK_COMMENT_MODE,o]};return{name:"C",aliases:["h"],keywords:u, -disableAutodetect:!0,illegal:"=]/,contains:[{ -beginKeywords:"final class struct"},e.TITLE_MODE]}]),exports:{preprocessor:o, -strings:i,keywords:u}}}})();hljs.registerLanguage("c",e)})(); +;hljs.registerLanguage("markdown",e)})();/*! `plaintext` grammar compiled for Highlight.js 11.7.0 */ +(()=>{var t=(()=>{"use strict";return t=>({name:"Plain text", +aliases:["text","txt"],disableAutodetect:!0})})() +;hljs.registerLanguage("plaintext",t)})();/*! `ocaml` grammar compiled for Highlight.js 11.7.0 */ +(()=>{var e=(()=>{"use strict";return e=>({name:"OCaml",aliases:["ml"], +keywords:{$pattern:"[a-z_]\\w*!?", +keyword:"and as assert asr begin class constraint do done downto else end exception external for fun function functor if in include inherit! inherit initializer land lazy let lor lsl lsr lxor match method!|10 method mod module mutable new object of open! open or private rec sig struct then to try type val! val virtual when while with parser value", +built_in:"array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 string unit in_channel out_channel ref", +literal:"true false"},illegal:/\/\/|>>/,contains:[{className:"literal", +begin:"\\[(\\|\\|)?\\]|\\(\\)",relevance:0},e.COMMENT("\\(\\*","\\*\\)",{ +contains:["self"]}),{className:"symbol",begin:"'[A-Za-z_](?!')[\\w']*"},{ +className:"type",begin:"`[A-Z][\\w']*"},{className:"type", +begin:"\\b[A-Z][\\w']*",relevance:0},{begin:"[a-z_]\\w*'[\\w']*",relevance:0 +},e.inherit(e.APOS_STRING_MODE,{className:"string",relevance:0 +}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"number", +begin:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)", +relevance:0},{begin:/->/}]})})();hljs.registerLanguage("ocaml",e)})();/*! `python` grammar compiled for Highlight.js 11.7.0 */ +(()=>{var e=(()=>{"use strict";return e=>{ +const n=e.regex,a=/[\p{XID_Start}_]\p{XID_Continue}*/u,i=["and","as","assert","async","await","break","case","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","match","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"],s={ +$pattern:/[A-Za-z]\w+|__\w+__/,keyword:i, +built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"], +literal:["__debug__","Ellipsis","False","None","NotImplemented","True"], +type:["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union"] +},t={className:"meta",begin:/^(>>>|\.\.\.) /},r={className:"subst",begin:/\{/, +end:/\}/,keywords:s,illegal:/#/},l={begin:/\{\{/,relevance:0},b={ +className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,t],relevance:10},{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/, +contains:[e.BACKSLASH_ESCAPE,t],relevance:10},{ +begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,t,l,r]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/, +end:/"""/,contains:[e.BACKSLASH_ESCAPE,t,l,r]},{begin:/([uU]|[rR])'/,end:/'/, +relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{ +begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/, +end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/, +contains:[e.BACKSLASH_ESCAPE,l,r]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/, +contains:[e.BACKSLASH_ESCAPE,l,r]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},o="[0-9](_?[0-9])*",c=`(\\b(${o}))?\\.(${o})|\\b(${o})\\.`,d="\\b|"+i.join("|"),g={ +className:"number",relevance:0,variants:[{ +begin:`(\\b(${o})|(${c}))[eE][+-]?(${o})[jJ]?(?=${d})`},{begin:`(${c})[jJ]?`},{ +begin:`\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${d})`},{ +begin:`\\b0[bB](_?[01])+[lL]?(?=${d})`},{begin:`\\b0[oO](_?[0-7])+[lL]?(?=${d})` +},{begin:`\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${d})`},{begin:`\\b(${o})[jJ](?=${d})` +}]},p={className:"comment",begin:n.lookahead(/# type:/),end:/$/,keywords:s, +contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},m={ +className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/, +end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:s, +contains:["self",t,g,b,e.HASH_COMMENT_MODE]}]};return r.contains=[b,g,t],{ +name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:s, +illegal:/(<\/|->|\?)|=>/,contains:[t,g,{begin:/\bself\b/},{beginKeywords:"if", +relevance:0},b,p,e.HASH_COMMENT_MODE,{match:[/\bdef/,/\s+/,a],scope:{ +1:"keyword",3:"title.function"},contains:[m]},{variants:[{ +match:[/\bclass/,/\s+/,a,/\s*/,/\(\s*/,a,/\s*\)/]},{match:[/\bclass/,/\s+/,a]}], +scope:{1:"keyword",3:"title.class",6:"title.class.inherited"}},{ +className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[g,m,b]}]}}})() +;hljs.registerLanguage("python",e)})();/*! `reasonml` grammar compiled for Highlight.js 11.7.0 */ +(()=>{var e=(()=>{"use strict";return e=>{ +const n="~?[a-z$_][0-9a-zA-Z$_]*",a="`?[A-Z$_][0-9a-zA-Z$_]*",s="("+["||","++","**","+.","*","/","*.","/.","..."].map((e=>e.split("").map((e=>"\\"+e)).join(""))).join("|")+"|\\|>|&&|==|===)",i="\\s+"+s+"\\s+",r={ +keyword:"and as asr assert begin class constraint do done downto else end exception external for fun function functor if in include inherit initializer land lazy let lor lsl lsr lxor match method mod module mutable new nonrec object of open or private rec sig struct then to try type val virtual when while with", +built_in:"array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 ref string unit ", +literal:"true false" +},l="\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)",t={ +className:"number",relevance:0,variants:[{begin:l},{begin:"\\(-"+l+"\\)"}]},c={ +className:"operator",relevance:0,begin:s},o=[{className:"identifier", +relevance:0,begin:n},c,t],g=[e.QUOTE_STRING_MODE,c,{className:"module", +begin:"\\b"+a,returnBegin:!0,relevance:0,end:".",contains:[{ +className:"identifier",begin:a,relevance:0}]}],b=[{className:"module", +begin:"\\b"+a,returnBegin:!0,end:".",relevance:0,contains:[{ +className:"identifier",begin:a,relevance:0}]}],m={className:"function", +relevance:0,keywords:r,variants:[{begin:"\\s(\\(\\.?.*?\\)|"+n+")\\s*=>", +end:"\\s*=>",returnBegin:!0,relevance:0,contains:[{className:"params", +variants:[{begin:n},{ +begin:"~?[a-z$_][0-9a-zA-Z$_]*(\\s*:\\s*[a-z$_][0-9a-z$_]*(\\(\\s*('?[a-z$_][0-9a-z$_]*\\s*(,'?[a-z$_][0-9a-z$_]*\\s*)*)?\\))?){0,2}" +},{begin:/\(\s*\)/}]}]},{begin:"\\s\\(\\.?[^;\\|]*\\)\\s*=>",end:"\\s=>", +returnBegin:!0,relevance:0,contains:[{className:"params",relevance:0,variants:[{ +begin:n,end:"(,|\\n|\\))",relevance:0,contains:[c,{className:"typing",begin:":", +end:"(,|\\n)",returnBegin:!0,relevance:0,contains:b}]}]}]},{ +begin:"\\(\\.\\s"+n+"\\)\\s*=>"}]};g.push(m);const d={className:"constructor", +begin:a+"\\(",end:"\\)",illegal:"\\n",keywords:r, +contains:[e.QUOTE_STRING_MODE,c,{className:"params",begin:"\\b"+n}]},u={ +className:"pattern-match",begin:"\\|",returnBegin:!0,keywords:r,end:"=>", +relevance:0,contains:[d,c,{relevance:0,className:"constructor",begin:a}]},v={ +className:"module-access",keywords:r,returnBegin:!0,variants:[{ +begin:"\\b("+a+"\\.)+"+n},{begin:"\\b("+a+"\\.)+\\(",end:"\\)",returnBegin:!0, +contains:[m,{begin:"\\(",end:"\\)",relevance:0,skip:!0}].concat(g)},{ +begin:"\\b("+a+"\\.)+\\{",end:/\}/}],contains:g};return b.push(v),{ +name:"ReasonML",aliases:["re"],keywords:r,illegal:"(:-|:=|\\$\\{|\\+=)", +contains:[e.COMMENT("/\\*","\\*/",{illegal:"^(#,\\/\\/)"}),{ +className:"character",begin:"'(\\\\[^']+|[^'])'",illegal:"\\n",relevance:0 +},e.QUOTE_STRING_MODE,{className:"literal",begin:"\\(\\)",relevance:0},{ +className:"literal",begin:"\\[\\|",end:"\\|\\]",relevance:0,contains:o},{ +className:"literal",begin:"\\[",end:"\\]",relevance:0,contains:o},d,{ +className:"operator",begin:i,illegal:"--\x3e",relevance:0 +},t,e.C_LINE_COMMENT_MODE,u,m,{className:"module-def", +begin:"\\bmodule\\s+"+n+"\\s+"+a+"\\s+=\\s+\\{",end:/\}/,returnBegin:!0, +keywords:r,relevance:0,contains:[{className:"module",relevance:0,begin:a},{ +begin:/\{/,end:/\}/,relevance:0,skip:!0}].concat(g)},v]}}})() +;hljs.registerLanguage("reasonml",e)})(); \ No newline at end of file diff --git a/odoc.support/odoc.css b/odoc.support/odoc.css index 83ebcf0..8b0ed5a 100644 --- a/odoc.support/odoc.css +++ b/odoc.support/odoc.css @@ -1,108 +1,19 @@ @charset "UTF-8"; /* Copyright (c) 2016 The odoc contributors. All rights reserved. Distributed under the ISC license, see terms at the end of the file. - odoc 2.4.0 */ + odoc 2.2.0 */ /* Fonts */ -/* noticia-text-regular - latin */ -@font-face { - font-family: 'Noticia Text'; - font-style: normal; - font-weight: 400; - src: url('fonts/noticia-text-v15-latin-regular.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ -} - -/* noticia-text-italic - latin */ -@font-face { - font-family: 'Noticia Text'; - font-style: italic; - font-weight: 400; - src: url('fonts/noticia-text-v15-latin-italic.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ -} - -/* noticia-text-700 - latin */ -@font-face { - font-family: 'Noticia Text'; - font-style: normal; - font-weight: 700; - src: url('fonts/noticia-text-v15-latin-700.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ -} - -/* fira-mono-regular - latin */ -@font-face { - font-family: 'Fira Mono'; - font-style: normal; - font-weight: 400; - src: url('fonts/fira-mono-v14-latin-regular.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ -} - -/* fira-mono-500 - latin */ -@font-face { - font-family: 'Fira Mono'; - font-style: normal; - font-weight: 500; - src: url('fonts/fira-mono-v14-latin-500.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ -} - -/* fira-sans-regular - latin */ -@font-face { - font-family: 'Fira Sans'; - font-style: normal; - font-weight: 400; - src: url('fonts/fira-sans-v17-latin-regular.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ -} - -/* fira-sans-italic - latin */ -@font-face { - font-family: 'Fira Sans'; - font-style: italic; - font-weight: 400; - src: url('fonts/fira-sans-v17-latin-italic.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ -} - -/* fira-sans-500 - latin */ -@font-face { - font-family: 'Fira Sans'; - font-style: normal; - font-weight: 500; - src: url('fonts/fira-sans-v17-latin-500.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ -} - -/* fira-sans-500italic - latin */ -@font-face { - font-family: 'Fira Sans'; - font-style: italic; - font-weight: 500; - src: url('fonts/fira-sans-v17-latin-500italic.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ -} - -/* fira-sans-700 - latin */ -@font-face { - font-family: 'Fira Sans'; - font-style: normal; - font-weight: 700; - src: url('fonts/fira-sans-v17-latin-700.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ -} - -/* fira-sans-700italic - latin */ -@font-face { - font-family: 'Fira Sans'; - font-style: italic; - font-weight: 700; - src: url('fonts/fira-sans-v17-latin-700italic.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ -} - +@import url('https://fonts.googleapis.com/css?family=Fira+Mono:400,500'); +@import url('https://fonts.googleapis.com/css?family=Noticia+Text:400,400i,700'); +@import url('https://fonts.googleapis.com/css?family=Fira+Sans:400,400i,500,500i,600,600i,700,700i'); :root, .light:root { - - scroll-padding-top: calc(var(--search-bar-height) + var(--search-padding-top) + 1em); - - --main-background: #FFFFFF; + --main-background: #FFFFFF; --color: #333333; --link-color: #2C94BD; - --source-color: grey; --anchor-hover: #555; --anchor-color: #d5d5d5; --xref-shadow: #cc6666; @@ -119,21 +30,13 @@ --toc-color: #1F2D3D; --toc-before-color: #777; --toc-background: #f6f8fa; - --toc-background-emph: #ecf0f5; --toc-list-border: #ccc; --spec-summary-border-color: #5c9cf5; - --spec-label-color: green; --spec-summary-background: var(--code-background); --spec-summary-hover-background: #ebeff2; --spec-details-after-background: rgba(0, 4, 15, 0.05); --spec-details-after-shadow: rgba(204, 204, 204, 0.53); - - --search-results-border: #bbb; - --search-results-shadow: #bbb; - - --search-snake: #82aaff; - } .dark:root { @@ -161,7 +64,6 @@ --li-code-color: #999; --toc-color: #777; --toc-background: #252525; - --toc-background-emph: #2a2a2a; --hljs-link: #999; --hljs-keyword: #cda869; @@ -170,12 +72,6 @@ --hljs-type: #ac885b; --hljs-meta: #82aaff; --hljs-variable: #cf6a4c; - - --spec-label-color: lightgreen; - - --search-results-border: #505050; - --search-results-shadow: #404040; - } @media (prefers-color-scheme: dark) { @@ -210,7 +106,6 @@ --toc-color: #777; --toc-before-color: #777; --toc-background: #252525; - --toc-background-emph: #2a2a2a; --toc-list-border: #ccc; --spec-summary-hover-background: #ebeff2; --spec-details-after-background: rgba(0, 4, 15, 0.05); @@ -223,12 +118,6 @@ --hljs-type: #ac885b; --hljs-meta: #82aaff; --hljs-variable: #cf6a4c; - - --spec-label-color: lightgreen; - - --search-results-border: #505050; - --search-results-shadow: #404040; - } } @@ -253,7 +142,6 @@ table { html { font-size: 15px; - scroll-behavior: smooth; } body { @@ -261,55 +149,24 @@ body { background: #FFFFFF; color: var(--color); background-color: var(--main-background); - font-family: "Noticia Text", Georgia, serif; - line-height: 1.5; } body { - margin-left: auto; - margin-right: auto; - padding: 0 4ex; -} - -body.odoc { - max-width: 132ex; - display: grid; - grid-template-columns: min-content 1fr; - column-gap: 4ex; - row-gap: 2ex; -} - -body.odoc-src { - margin-right: calc(10vw + 20ex); -} - -.odoc-content { - grid-row: 4; - grid-column: 2; -} - -.odoc-preamble > *:first-child { - /* This make the first thing in the preamble align with the sidebar */ - padding-top: 0; - margin-top: 0; + max-width: 100ex; + margin-left: calc(10vw + 20ex); + margin-right: 4ex; + margin-top: 20px; + margin-bottom: 50px; + font-family: "Noticia Text", Georgia, serif; + line-height: 1.5; } header { margin-bottom: 30px; } -header.odoc-preamble { - grid-column: 2; - grid-row: 3; -} - nav { - font-family: "Fira Sans", sans-serif; -} - -nav.odoc-nav { - grid-column: 2; - grid-row: 2; + font-family: "Fira Sans", Helvetica, Arial, sans-serif; } /* Basic markup elements */ @@ -381,10 +238,6 @@ a { color: var(--link-color); } -.odoc-src pre a { - color: inherit; -} - a:hover { box-shadow: 0 1px 0 0 var(--link-color); } @@ -436,30 +289,18 @@ a.anchor { box-shadow: 0 1px 0 0 var(--xref-shadow); } -/* Source links float inside preformated text or headings. */ -a.source_link { - float: right; - color: var(--source-color); - font-family: "Fira Sans", sans-serif; - font-size: initial; -} - /* Section and document divisions. Until at least 4.03 many of the modules of the stdlib start at .h7, we restart the sequence there like h2 */ h1, h2, h3, h4, h5, h6, .h7, .h8, .h9, .h10 { - font-family: "Fira Sans", sans-serif; + font-family: "Fira Sans", Helvetica, Arial, sans-serif; font-weight: 400; padding-top: 0.1em; line-height: 1.2; overflow-wrap: break-word; } -.odoc-preamble h1 { - margin-top: 10px; -} - h1 { font-weight: 500; font-size: 2.441em; @@ -507,7 +348,7 @@ h4 { font-size: 1.12em; } -/* Comment delimiters, hidden but accessible to screen readers and +/* Comment delimiters, hidden but accessible to screen readers and selected for copy/pasting */ /* Taken from bootstrap */ @@ -527,36 +368,36 @@ h4 { /* Preformatted and code */ tt, code, pre { - font-family: "Fira Mono", monospace; + font-family: "Fira Mono", courier; font-weight: 400; } -.odoc pre { +pre { padding: 0.1em; border: 1px solid var(--pre-border-color); border-radius: 5px; overflow-x: auto; } -.odoc p code, -.odoc li code { +p code, +li code { background-color: var(--li-code-background); color: var(--li-code-color); border-radius: 3px; padding: 0 0.3ex; } -p a > code, li a > code { +p a > code { color: var(--link-color); } -.odoc code { +code { white-space: pre-wrap; } /* Code blocks (e.g. Examples) */ -.odoc pre code { +pre code { font-size: 0.893rem; } @@ -578,10 +419,6 @@ p a > code, li a > code { padding: 0.35em 0.5em; } -.spec .label, .spec .optlabel { - color: var(--spec-label-color); -} - li:not(:last-child) > .def-doc { margin-bottom: 15px; } @@ -597,10 +434,10 @@ div.odoc-spec,.odoc-include { .spec.type .variant, .spec.type .record { margin-left: 2ch; -} - -.spec.type li.variant, .spec.type li.record { list-style: none; + display: flex; + flex-wrap: wrap; + row-gap: 4px; } .spec.type .record > code, .spec.type .variant > code { @@ -617,8 +454,9 @@ div.odoc-spec,.odoc-include { padding: 0.25em 0.5em; margin-left: 10%; border-radius: 3px; + flex-grow:1; background: var(--main-background); - box-shadow: 1px 1px 2px lightgrey; + box-shadow: 2px 2px 4px lightgrey; } div.def { @@ -698,12 +536,6 @@ td.def-doc *:first-child { .at-tags li { padding-left: 3ex; text-indent: -3ex; } .at-tags .at-tag { text-transform: capitalize } -/* Alert emoji */ - -.alert::before, .deprecated::before { - content: '⚠️ '; -} - /* Lists of modules */ .modules { list-style-type: none; margin-left: -3ex; } @@ -786,32 +618,19 @@ td.def-doc *:first-child { line-height: 1.2; } -/* When a search bar is present, we need the sticky sidebar to be a bit lower, - so `top` is higher */ - -.odoc-search + * + .odoc-toc { - --toc-top: calc(var(--search-bar-height) + var(--search-padding-top) + 20px); - max-height: calc(100vh - 2 * var(--toc-top)); - top: var(--toc-top) -} - .odoc-toc { - --toc-top: 20px; - width: 28ex; + position: fixed; + top: 0px; + bottom: 0px; + left: 0px; + max-width: 30ex; + min-width: 26ex; + width: 20%; background: var(--toc-background); overflow: auto; color: var(--toc-color); padding-left: 2ex; padding-right: 2ex; - grid-row-start: 3; - grid-row-end: 5; - grid-column: 1; - height: fit-content; - border: solid 1px var(--border); - border-radius: 5px; - position:sticky; - max-height: calc(100vh - 2 * var(--toc-top)); - top: var(--toc-top) } .odoc-toc ul li a { @@ -819,287 +638,15 @@ td.def-doc *:first-child { font-size: 0.95em; color: var(--color); font-weight: 400; - line-height: 1.2em; + line-height: 1.6em; display: block; } -.odoc-sidebar ul li a:hover { +.odoc-toc ul li a:hover { box-shadow: none; text-decoration: underline; } -:root { - --search-bar-height: 25px; - --search-padding-top: 1rem; -} - -.odoc-search { - position: sticky; - top: 0; - background: var(--main-background); - /* This amounts to fit-content when the search is not active, but when you - have the search results displayed, you do not want the height of the search - container to change. */ - height: calc(var(--search-bar-height) + var(--search-padding-top)); - width: 100%; - padding-top: var(--search-padding-top); - z-index: 1; - grid-row: 1; - grid-column-start: 1; - grid-column-end: 3; -} - - -.odoc-search .search-inner { - width: 100%; - position: relative; - left: 0; - display: grid; - /* The second column is for the search snake, which has 0 width */ - grid-template-columns: 1fr 0fr; - grid-row-gap: 1rem; - /* The second row is for the search results. It has a width, but only */ - grid-template-rows: min-content 0px; - background: transparent; -} - -.odoc-search .search-bar { - position: relative; - z-index: 2; - font-size: 1em; - transition: font-size 0.3s; - box-shadow: 0px 0px 0.2rem 0.3em var(--main-background); - height: var(--search-bar-height); -} - -.odoc-search:focus-within .search-bar { - font-size: 1.1em; -} - -.odoc-search:not(:focus-within) .search-result { - display: none; -} - -.odoc-search .search-result:empty { - display: none; -} - -.odoc-search .search-result { - grid-row: 2; - background: var(--toc-background); - position: absolute; - left: 0; - right: 0; - border: solid; - border-color: var(--search-results-border); - border-width: 1px; - border-radius: 6px; - box-shadow: 0 3px 10px 2px var(--search-results-shadow), 0 0 3px 4px var(--main-background), 0px -1rem 0px 0px var(--main-background); - /* Works better on smallish screens with this */ - max-height: calc(min(40rem, 50vh)); - overflow-y: auto; -} - -.search-bar { - /* inputs are of fixed size by default, even if you display:block them */ - width: 100%; -} - - -.odoc-search .search-no-result { - color: var(--color); - border-bottom: var(--search-results-border) solid 1px; - background-color: inherit; - outline: 0; - padding: 10px; - padding-right: 0.5rem; -} - -.search-bar-container { - display: flex; - align-items: stretch; - border-bottom: 1rem solid var(--main-background); -} - -.search-snake { - grid-row: 1; - grid-column: 2; - display: flex; - align-items: center; - width: 0; - z-index: 2; - position: relative; - left: 0; - margin-top: 4px; - margin-bottom: 4px; - /* Otherwise the search snake flickers for very fast searches. */ - transition: opacity 0.2s; - opacity: 0; -} - -.search-snake.search-busy { - opacity: 1; -} - -.search-snake:before { - content: " "; - display: block; - aspect-ratio: 1 / 1; - height: 100%; - margin-right: 4px; - border-radius: 50%; - border: 3px solid #aaa; - border-color: var(--search-snake) transparent var(--search-snake) transparent; - animation: search-snake 1.2s linear infinite; - position: absolute; - right: 0; -} - -@keyframes search-snake { - 0% { - transform: rotate(0deg); - } - - 100% { - transform: rotate(360deg); - } -} - -:root { - --kind-font-size-factor: 0.8; -} - -.odoc-search .search-entry { - color: var(--color); - display: grid; - /* Possible kinds are the following : - "doc" "type" "mod" "exn" "class" "meth" "cons" "sig" "cons" "field" "val" - and "ext". - As the longest is 5 characters (and the font monospace), we give 5 - character size to the column. However the font used for kind is a little - smaller, so we adjust by this factor. - */ - grid-template-columns: [kinds] calc(var(--kind-font-size-factor) * 5ch) [titles] 1fr; - column-gap: 0.5rem; - border-bottom: var(--search-results-border) solid 1px; - background-color: inherit; - outline: 0; - padding: 0.4rem 0.4rem 0.7rem 0.7rem; -} -.odoc-search .search-entry p { - margin: 0; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -.odoc-search .search-entry:focus-visible { - box-shadow: none; - background-color: var(--target-background); -} - -.odoc-search .search-entry:hover { - box-shadow: none; - background-color: var(--toc-background-emph); -} - -.odoc-search .search-entry .entry-kind { - grid-row: 1/2; - grid-column: 1/2; - line-height: 1.4rem; - font-size: calc(var(--kind-font-size-factor) * 1em); - font-weight: bold; - text-align: right; - position: relative; - bottom: 0; -} - -.odoc-search .search-entry pre { - border: none; - margin: 0; -} - -.odoc-search .search-entry pre code { - font-size: 1em; - background-color: var(--li-code-background); - color: var(--li-code-color); - border-radius: 3px; - padding: 0 0.3ex; -} - -.odoc-search .search-entry .entry-title { - width: 100%; - display: block; - grid-column: 2/2; - grid-row: 1/2; - align-self: end; - line-height: 1.4rem; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} - -.odoc-search .entry-name { - font-weight: bold; -} - -.odoc-search .prefix-name { - font-weight: bold; -} - -.odoc-search .search-entry .prefix-name { - opacity: 0.7; -} - -.odoc-search .entry-rhs { - white-space: nowrap; -} - -.odoc-search .search-entry .entry-content { - flex-grow: 1; - flex-shrink: 1; - min-width: 0; -} - -.odoc-search .search-entry .entry-comment { - max-height: 1.5em; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - font-size: 0.95em; - grid-row: 2/2; - grid-column: 2/2; -} - -.odoc-search .search-entry .entry-comment ul { - white-space: nowrap; - display: inline; -} - -.odoc-search .search-entry .entry-comment li { - display: inline; - white-space: nowrap; -} - -.odoc-search .search-entry .entry-comment ul>li::before { - content: '•'; -} - -.odoc-search .search-entry .entry-comment div { - display: inline; - white-space: nowrap; -} - -.odoc-search .search-entry .entry-comment p { - display: inline; - white-space: nowrap; -} - -.odoc-search .search-entry .entry-comment code { - display: inline; - white-space: nowrap; -} - /* First level titles */ .odoc-toc>ul>li>a { @@ -1108,7 +655,6 @@ td.def-doc *:first-child { .odoc-toc li ul { margin: 0px; - padding-top: 0.25em; } .odoc-toc ul { @@ -1116,9 +662,8 @@ td.def-doc *:first-child { } .odoc-toc ul li { - padding: 0.25em 0; + margin: 0; } - .odoc-toc>ul>li { margin-bottom: 0.3em; } @@ -1129,35 +674,12 @@ td.def-doc *:first-child { padding-left: 12px; } -/* Tables */ - -.odoc-table { - margin: 1em; -} - -.odoc-table td, -.odoc-table th { - padding-left: 0.5em; - padding-right: 0.5em; - border: 1px solid black; -} - -.odoc-table th { - font-weight: bold; -} - /* Mobile adjustements. */ -@media only screen and (max-width: 110ex) { - body { - margin: 2em; - padding: 0; - } - +@media only screen and (max-width: 95ex) { body.odoc { - display: block; + margin: 2em; } - .odoc-toc { position: static; width: auto; @@ -1177,53 +699,11 @@ td.def-doc *:first-child { color: black; background: white; } - body nav:first-child { visibility: hidden; } } -/* Source code. */ - -.source_container { - display: flex; -} - -.source_line_column { - padding-right: 0.5em; - text-align: right; - background: #eee8d5; -} - -.source_line { - padding: 0 1em; -} - -.source_code { - flex-grow: 1; - background: #fdf6e3; - padding: 0 0.3em; - color: #657b83; -} - -/* Source directories */ - -.odoc-directory::before { - content: "📁"; - margin: 0.3em; - font-size: 1.3em; -} - -.odoc-file::before { - content: "📄"; - margin: 0.3em; - font-size: 1.3em; -} - -.odoc-folder-list { - list-style: none; -} - /* Syntax highlighting (based on github-gist) */ .hljs { @@ -1297,85 +777,6 @@ td.def-doc *:first-child { text-decoration: underline; } -.VAL, -.TYPE, -.LET, -.REC, -.IN, -.OPEN, -.NONREC, -.MODULE, -.METHOD, -.LETOP, -.INHERIT, -.INCLUDE, -.FUNCTOR, -.EXTERNAL, -.CONSTRAINT, -.ASSERT, -.AND, -.END, -.CLASS, -.STRUCT, -.SIG { - color: #859900; - ; -} - -.WITH, -.WHILE, -.WHEN, -.VIRTUAL, -.TRY, -.TO, -.THEN, -.PRIVATE, -.OF, -.NEW, -.MUTABLE, -.MATCH, -.LAZY, -.IF, -.FUNCTION, -.FUN, -.FOR, -.EXCEPTION, -.ELSE, -.TO, -.DOWNTO, -.DO, -.DONE, -.BEGIN, -.AS { - color: #cb4b16; -} - -.TRUE, -.FALSE { - color: #b58900; -} - -.failwith, -.INT, -.SEMISEMI, -.LIDENT { - color: #2aa198; -} - -.STRING, -.CHAR, -.UIDENT { - color: #b58900; -} - -.DOCSTRING { - color: #268bd2; -} - -.COMMENT { - color: #93a1a1; -} - /*--------------------------------------------------------------------------- Copyright (c) 2016 The odoc contributors @@ -1390,4 +791,4 @@ td.def-doc *:first-child { WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - ---------------------------------------------------------------------------*/ \ No newline at end of file + ---------------------------------------------------------------------------*/ diff --git a/odoc.support/odoc_search.js b/odoc.support/odoc_search.js deleted file mode 100644 index 0dc659d..0000000 --- a/odoc.support/odoc_search.js +++ /dev/null @@ -1,66 +0,0 @@ -/* The browsers interpretation of the CORS origin policy prevents to run - webworkers from javascript files fetched from the file:// protocol. This hack - is to workaround this restriction. */ -function createWebWorker() { - var searchs = search_urls.map((search_url) => { - let parts = document.location.href.split("/"); - parts[parts.length - 1] = search_url; - return '"' + parts.join("/") + '"'; - }); - blobContents = ["importScripts(" + searchs.join(",") + ");"]; - var blob = new Blob(blobContents, { type: "application/javascript" }); - var blobUrl = URL.createObjectURL(blob); - - var worker = new Worker(blobUrl); - URL.revokeObjectURL(blobUrl); - - return worker; -} - -var worker; -var waiting = 0; - -function wait() { - waiting = waiting + 1; - document.querySelector(".search-snake").classList.add("search-busy"); -} - -function stop_waiting() { - if (waiting > 0) waiting = waiting - 1; - else waiting = 0; - if (waiting == 0) { - document.querySelector(".search-snake").classList.remove("search-busy"); - } -} - -document.querySelector(".search-bar").addEventListener("focus", (ev) => { - if (typeof worker == "undefined") { - worker = createWebWorker(); - worker.onmessage = (e) => { - stop_waiting(); - let results = e.data; - let search_results = document.querySelector(".search-result"); - search_results.innerHTML = ""; - let f = (entry) => { - let search_result = document.createElement("a"); - search_result.classList.add("search-entry"); - search_result.href = base_url + entry.url; - search_result.innerHTML = entry.html; - search_results.appendChild(search_result); - }; - results.forEach(f); - let search_request = document.querySelector(".search-bar").value; - if (results.length == 0 && search_request != "") { - let no_result = document.createElement("div"); - no_result.classList.add("search-no-result"); - no_result.innerText = "No result..."; - search_results.appendChild(no_result); - } - }; - } -}); - -document.querySelector(".search-bar").addEventListener("input", (ev) => { - wait(); - worker.postMessage(ev.target.value); -});