package core

  1. Overview
  2. Docs
Industrial strength alternative to OCaml's standard library

Install

Dune Dependency

Authors

Maintainers

Sources

v0.17.1.tar.gz
md5=743a141234e04210e295980f7a78a6d9
sha512=61b415f4fb12c78d30649fff1aabe3a475eea926ce6edb7774031f4dc7f37ea51f5d9337ead6ec73cd93da5fd1ed0f2738c210c71ebc8fe9d7f6135a06bd176f

doc/src/core/printf.ml.html

Source file printf.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
(** This module extends {{!Base.Printf}[Base.Printf]}. *)

open! Import

include Base.Printf (** @open *)

let eprintf = Stdio.Out_channel.eprintf
let fprintf = Stdio.Out_channel.fprintf
let kfprintf = Stdio.Out_channel.kfprintf
let printf = Stdio.Out_channel.printf

(** print to stderr; exit 1 *)
let exitf fmt =
  ksprintf
    (fun s () ->
      eprintf "%s\n%!" s;
      exit 1)
    fmt
;;

type printf = { printf : 'a. ('a, Buffer.t, unit) format -> 'a }

let collect_to_string f =
  let buf = Buffer.create 64 in
  let done_ = ref false in
  let printf fmt =
    kbprintf
      (fun buf ->
        if !done_
        then (
          Buffer.reset buf;
          raise_s [%message "[printf] used after [collect_to_string] returned"]))
      buf
      fmt
  in
  f { printf };
  done_ := true;
  let output = Buffer.contents buf in
  Buffer.reset buf;
  output
;;
OCaml

Innovation. Community. Security.