package forester

  1. Overview
  2. Docs
Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source

Source file Reporter.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
module Message =
struct
  type t =
    | Tree_not_found
    | Duplicate_tree
    | Parse_error
    | Type_error
    | Resolution_error
    | Expansion_error
    | Duplicate_attribute
    | Frontmatter_in_body
    | Unhandled_case
    | Transclusion_loop
    | Internal_error
    | Configuration_error
    | Initialization_warning
    | Routing_error
    | Profiling
    | External_error
    | Log
  [@@deriving show]

  let default_severity : t -> Asai.Diagnostic.severity =
    function
    | Duplicate_tree -> Error
    | Tree_not_found -> Error
    | Parse_error -> Error
    | Type_error -> Error
    | Resolution_error -> Error
    | Expansion_error -> Error
    | Duplicate_attribute -> Error
    | Frontmatter_in_body -> Error
    | Unhandled_case -> Bug
    | Transclusion_loop -> Error
    | Internal_error -> Bug
    | Configuration_error -> Error
    | Initialization_warning -> Warning
    | Routing_error -> Error
    | Profiling -> Info
    | External_error -> Error
    | Log -> Info

  let short_code : t -> string =
    show
end

include Asai.Reporter.Make (Message)

let profile msg body =
  let before = Unix.gettimeofday () in
  let result = body () in
  let after = Unix.gettimeofday () in
  emitf Profiling "[%fs] %s" (after -. before) msg;
  result


module Tty = Asai.Tty.Make (Message)

let easy_run k =
  let fatal diagnostics =
    Tty.display diagnostics;
    exit 1
  in
  run ~emit:Tty.display ~fatal k
OCaml

Innovation. Community. Security.