Source file log_kind.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
open! Base
open! Import
open Ppxlib

type 'data t =
  [ `Instance of 'data
  | `Global
  ]
[@@deriving enumerate]

let extension_prefix (type data) = function
  | `Instance (_ : data) -> "@log"
  | `Global -> "@log.global"
;;

let would_log (type data) log ~level ~loc =
  let level = Optional_arg.to_expr level ~loc in
  match log with
  | `Instance log -> [%expr Ppx_log_syntax.would_log [%e log] [%e level]]
  | `Global -> [%expr Ppx_log_syntax.Global.would_log [%e level]]
;;

let log_function (type data) t ~loc =
  match t with
  | `Instance (_ : data) -> [%expr Ppx_log_syntax.message]
  | `Global -> [%expr Ppx_log_syntax.Global.message]
;;

let log_default (type data) t ~loc =
  match t with
  | `Instance (_ : data) -> [%expr Ppx_log_syntax.default]
  | `Global -> [%expr Ppx_log_syntax.Global.default]
;;

let log_arg = function
  | `Global -> None
  | `Instance log -> Some (Nolabel, log)
;;