package togglelog

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

Source file register.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
open Ppxlib

let enabled = ref false

let extractor () =
  Ast_pattern.(
    alt_option
      (single_expr_payload @@ pexp_apply (estring __) (no_label __ ^:: nil))
      (single_expr_payload __))

let () =
  Ppxlib.Driver.add_arg "--enable" (Arg.Set enabled) ~doc:"compile-in logging";
  let expand ~ctxt =
    if !enabled then Mapper.expand_log ~ctxt else Mapper.expand_null ~ctxt
  in
  let extension =
    Extension.V3.declare "toggle_log" Extension.Context.expression
      (extractor ()) expand
  in
  let rule = Ppxlib.Context_free.Rule.extension extension in
  Ppxlib.Driver.register_transformation "togglelog" ~rules:[ rule ]
OCaml

Innovation. Community. Security.