1Stdlib.Format(3)                 OCaml library                Stdlib.Format(3)
2
3
4

NAME

6       Stdlib.Format - no description
7

Module

9       Module   Stdlib.Format
10

Documentation

12       Module Format
13        : (module Stdlib__Format)
14
15
16
17
18
19
20
21
22
23   Introduction
24       You  may  consider  this module as providing an extension to the printf
25       facility  to  provide  automatic  line  splitting.  The   addition   of
26       pretty-printing annotations to your regular printf format strings gives
27       you fancy indentation and line breaks.  Pretty-printing annotations are
28       described below in the documentation of the function Format.fprintf .
29
30       You may also use the explicit pretty-printing box management and print‐
31       ing functions provided by this module. This style  is  more  basic  but
32       more verbose than the concise fprintf format strings.
33
34       For  instance, the sequence open_box 0; print_string "x ="; print_space
35       ();
36           print_int 1; close_box (); print_newline  ()  that  prints  x  =  1
37       within  a  pretty-printing  box,  can  be  abbreviated as printf "@[%s@
38       %i@]@." "x =" 1 , or even shorter printf "@[x =@ %i@]@." 1 .
39
40       Rule of thumb for casual users of this library:
41
42       -use simple pretty-printing boxes (as obtained by open_box 0 );
43
44       -use simple break hints as obtained by print_cut () that outputs a sim‐
45       ple  break hint, or by print_space () that outputs a space indicating a
46       break hint;
47
48       -once a pretty-printing box is open, display its  material  with  basic
49       printing functions (e. g.  print_int and print_string );
50
51       -when  the  material  for  a pretty-printing box has been printed, call
52       close_box () to close the box;
53
54       -at the end of pretty-printing, flush the pretty-printer to display all
55       the remaining material, e.g. evaluate print_newline () .
56
57       The  behavior of pretty-printing commands is unspecified if there is no
58       open pretty-printing box. Each box opened by one of the open_ functions
59       below  must be closed using close_box for proper formatting. Otherwise,
60       some of the material printed in the boxes may not be output, or may  be
61       formatted incorrectly.
62
63       In  case  of  interactive  use,  each phrase is executed in the initial
64       state of the standard pretty-printer: after each phrase execution,  the
65       interactive  system  closes all open pretty-printing boxes, flushes all
66       pending text, and resets the standard pretty-printer.
67
68       Warning: mixing calls to pretty-printing functions of this module  with
69       calls to Stdlib low level output functions is error prone.
70
71       The  pretty-printing  functions  output material that is delayed in the
72       pretty-printer queue and stacks in order to compute proper line  split‐
73       ting.  In  contrast, basic I/O output functions write directly in their
74       output device. As a consequence, the output of a basic I/O function may
75       appear  before  the  output of a pretty-printing function that has been
76       called before. For instance,
77           Stdlib.print_string "<";
78           Format.print_string "PRETTY";
79           Stdlib.print_string ">";
80           Format.print_string "TEXT";
81        leads to output <>PRETTYTEXT .
82
83   Formatters
84       type formatter
85
86
87       Abstract data corresponding to a pretty-printer (also called a  format‐
88       ter) and all its machinery. See also Format.formatter .
89
90
91
92
93   Pretty-printing boxes
94       The pretty-printing engine uses the concepts of pretty-printing box and
95       break hint to drive indentation and  line  splitting  behavior  of  the
96       pretty-printer.
97
98       Each  different  pretty-printing  box  kind  introduces a specific line
99       splitting policy:
100
101
102       -within an horizontal box, break hints never split the  line  (but  the
103       line may be split in a box nested deeper),
104
105       -within a vertical box, break hints always split the line,
106
107       -within an horizontal/vertical box, if the box fits on the current line
108       then break hints never split the  line,  otherwise  break  hint  always
109       split the line,
110
111       -within  a  compacting  box, a break hint never splits the line, unless
112       there is no more room on the current line.
113
114       Note that line splitting policy is box specific: the policy  of  a  box
115       does  not  rule  the policy of inner boxes. For instance, if a vertical
116       box is nested in an horizontal box, all break hints within the vertical
117       box will split the line.
118
119       Moreover,  opening  a  box  after  the Format.maxindent splits the line
120       whether or not the box would end up fitting on the line.
121
122       val pp_open_box : formatter -> int -> unit
123
124
125
126
127       val open_box : int -> unit
128
129
130       pp_open_box ppf d opens a new compacting pretty-printing box with  off‐
131       set d in the formatter ppf .
132
133       Within this box, the pretty-printer prints as much as possible material
134       on every line.
135
136       A break hint splits the line if there is no more room on  the  line  to
137       print the remainder of the box.
138
139       Within  this box, the pretty-printer emphasizes the box structure: if a
140       structural box does not fit fully on a simple line, a break  hint  also
141       splits  the  line  if the splitting ``moves to the left'' (i.e. the new
142       line gets an indentation smaller than the one of the current line).
143
144       This box is the general purpose pretty-printing box.
145
146       If the pretty-printer splits the line in the box, offset d is added  to
147       the current indentation.
148
149
150
151       val pp_close_box : formatter -> unit -> unit
152
153
154
155
156       val close_box : unit -> unit
157
158       Closes the most recently open pretty-printing box.
159
160
161
162       val pp_open_hbox : formatter -> unit -> unit
163
164
165
166
167       val open_hbox : unit -> unit
168
169
170       pp_open_hbox ppf () opens a new 'horizontal' pretty-printing box.
171
172       This box prints material on a single line.
173
174       Break  hints in a horizontal box never split the line.  (Line splitting
175       may still occur inside boxes nested deeper).
176
177
178
179       val pp_open_vbox : formatter -> int -> unit
180
181
182
183
184       val open_vbox : int -> unit
185
186
187       pp_open_vbox ppf d opens a new 'vertical' pretty-printing box with off‐
188       set d .
189
190       This box prints material on as many lines as break hints in the box.
191
192       Every break hint in a vertical box splits the line.
193
194       If  the  pretty-printer  splits  the line in the box, d is added to the
195       current indentation.
196
197
198
199       val pp_open_hvbox : formatter -> int -> unit
200
201
202
203
204       val open_hvbox : int -> unit
205
206
207       pp_open_hvbox ppf d opens a new  'horizontal/vertical'  pretty-printing
208       box with offset d .
209
210       This box behaves as an horizontal box if it fits on a single line, oth‐
211       erwise it behaves as a vertical box.
212
213       If the pretty-printer splits the line in the box, d  is  added  to  the
214       current indentation.
215
216
217
218       val pp_open_hovbox : formatter -> int -> unit
219
220
221
222
223       val open_hovbox : int -> unit
224
225
226       pp_open_hovbox ppf d opens a new 'horizontal-or-vertical' pretty-print‐
227       ing box with offset d .
228
229       This box prints material as much as possible on every line.
230
231       A break hint splits the line if there is no more room on  the  line  to
232       print the remainder of the box.
233
234       If  the  pretty-printer  splits  the line in the box, d is added to the
235       current indentation.
236
237
238
239
240   Formatting functions
241       val pp_print_string : formatter -> string -> unit
242
243
244
245
246       val print_string : string -> unit
247
248
249       pp_print_string ppf s prints s in the current pretty-printing box.
250
251
252
253       val pp_print_bytes : formatter -> bytes -> unit
254
255
256
257
258       val print_bytes : bytes -> unit
259
260
261       pp_print_bytes ppf b prints b in the current pretty-printing box.
262
263
264       Since 4.13.0
265
266
267
268       val pp_print_as : formatter -> int -> string -> unit
269
270
271
272
273       val print_as : int -> string -> unit
274
275
276       pp_print_as ppf len s prints s in the current pretty-printing box.  The
277       pretty-printer formats s as if it were of length len .
278
279
280
281       val pp_print_int : formatter -> int -> unit
282
283
284
285
286       val print_int : int -> unit
287
288       Print an integer in the current pretty-printing box.
289
290
291
292       val pp_print_float : formatter -> float -> unit
293
294
295
296
297       val print_float : float -> unit
298
299       Print a floating point number in the current pretty-printing box.
300
301
302
303       val pp_print_char : formatter -> char -> unit
304
305
306
307
308       val print_char : char -> unit
309
310       Print a character in the current pretty-printing box.
311
312
313
314       val pp_print_bool : formatter -> bool -> unit
315
316
317
318
319       val print_bool : bool -> unit
320
321       Print a boolean in the current pretty-printing box.
322
323
324
325
326   Break hints
327       A  'break  hint' tells the pretty-printer to output some space or split
328       the line whichever way is more appropriate to the current pretty-print‐
329       ing box splitting rules.
330
331       Break  hints  are  used to separate printing items and are mandatory to
332       let the pretty-printer correctly split lines and indent items.
333
334       Simple break hints are:
335
336       -the 'space': output a space or split the line if appropriate,
337
338       -the 'cut': split the line if appropriate.
339
340       Note: the notions of space and line  splitting  are  abstract  for  the
341       pretty-printing engine, since those notions can be completely redefined
342       by the programmer.  However, in  the  pretty-printer  default  setting,
343       ``output  a space'' simply means printing a space character (ASCII code
344       32) and ``split the line'' means printing a  newline  character  (ASCII
345       code 10).
346
347       val pp_print_space : formatter -> unit -> unit
348
349
350
351
352       val print_space : unit -> unit
353
354
355       pp_print_space  ppf  ()  emits a 'space' break hint: the pretty-printer
356       may split the line at this point, otherwise it prints one space.
357
358
359       pp_print_space ppf () is equivalent to pp_print_break ppf 1 0 .
360
361
362
363       val pp_print_cut : formatter -> unit -> unit
364
365
366
367
368       val print_cut : unit -> unit
369
370
371       pp_print_cut ppf () emits a 'cut' break hint:  the  pretty-printer  may
372       split the line at this point, otherwise it prints nothing.
373
374
375       pp_print_cut ppf () is equivalent to pp_print_break ppf 0 0 .
376
377
378
379       val pp_print_break : formatter -> int -> int -> unit
380
381
382
383
384       val print_break : int -> int -> unit
385
386
387       pp_print_break  ppf  nspaces  offset  emits  a  'full'  break hint: the
388       pretty-printer may split the line at this point,  otherwise  it  prints
389       nspaces spaces.
390
391       If  the  pretty-printer splits the line, offset is added to the current
392       indentation.
393
394
395
396       val pp_print_custom_break : formatter -> fits:string * int * string  ->
397       breaks:string * int * string -> unit
398
399
400       pp_print_custom_break ppf ~fits:(s1, n, s2) ~breaks:(s3, m, s4) emits a
401       custom break hint: the pretty-printer may split the line at this point.
402
403       If it does not split the line, then the s1 is emitted, then  n  spaces,
404       then s2 .
405
406       If it splits the line, then it emits the s3 string, then an indent (ac‐
407       cording to the box rules), then an offset of  m  spaces,  then  the  s4
408       string.
409
410       While  n  and m are handled by formatter_out_functions.out_indent , the
411       strings will be handled by  formatter_out_functions.out_string  .  This
412       allows  for a custom formatter that handles indentation distinctly, for
413       example, outputs <br/> tags or &nbsp; entities.
414
415       The custom break  is  useful  if  you  want  to  change  which  visible
416       (non-whitespace)  characters  are printed in case of break or no break.
417       For example, when printing a list [a; b; c] , you might want to  add  a
418       trailing semicolon when it is printed vertically:
419
420
421       [
422         a;
423         b;
424         c;
425       ]
426
427
428       You can do this as follows:
429       printf "@[<v 0>[@;<0 2>@[<v 0>a;@,b;@,c@]%t]@]@\n"
430         (pp_print_custom_break ~fits:("", 0, "") ~breaks:(";", 0, ""))
431
432
433
434       Since 4.08.0
435
436
437
438       val pp_force_newline : formatter -> unit -> unit
439
440
441
442
443       val force_newline : unit -> unit
444
445       Force a new line in the current pretty-printing box.
446
447       The pretty-printer must split the line at this point,
448
449       Not  the normal way of pretty-printing, since imperative line splitting
450       may interfere with current line counters and box size calculation.  Us‐
451       ing  break  hints within an enclosing vertical box is a better alterna‐
452       tive.
453
454
455
456       val pp_print_if_newline : formatter -> unit -> unit
457
458
459
460
461       val print_if_newline : unit -> unit
462
463       Execute the next formatting command if the preceding line has just been
464       split. Otherwise, ignore the next formatting command.
465
466
467
468
469   Pretty-printing termination
470       val pp_print_flush : formatter -> unit -> unit
471
472
473
474
475       val print_flush : unit -> unit
476
477       End of pretty-printing: resets the pretty-printer to initial state.
478
479       All open pretty-printing boxes are closed, all pending text is printed.
480       In addition, the pretty-printer low level output device is  flushed  to
481       ensure that all pending text is really displayed.
482
483       Note:  never  use print_flush in the normal course of a pretty-printing
484       routine, since the pretty-printer uses a complex buffering machinery to
485       properly  indent  the output; manually flushing those buffers at random
486       would conflict with the pretty-printer strategy and result to poor ren‐
487       dering.
488
489       Only consider using print_flush when displaying all pending material is
490       mandatory (for instance in case of interactive use when  you  want  the
491       user  to  read  some  text) and when resetting the pretty-printer state
492       will not disturb further pretty-printing.
493
494       Warning: If the output device of the pretty-printer is an output  chan‐
495       nel,  repeated  calls  to  print_flush means repeated calls to flush to
496       flush the out channel;  these  explicit  flush  calls  could  foil  the
497       buffering strategy of output channels and could dramatically impact ef‐
498       ficiency.
499
500
501
502       val pp_print_newline : formatter -> unit -> unit
503
504
505
506
507       val print_newline : unit -> unit
508
509       End of pretty-printing: resets the pretty-printer to initial state.
510
511       All open pretty-printing boxes are closed, all pending text is printed.
512
513       Equivalent to Format.print_flush followed by a new  line.   See  corre‐
514       sponding words of caution for Format.print_flush .
515
516       Note:  this  is  not the normal way to output a new line; the preferred
517       method is using break hints within a vertical pretty-printing box.
518
519
520
521
522   Margin
523       val pp_set_margin : formatter -> int -> unit
524
525
526
527
528       val set_margin : int -> unit
529
530
531       pp_set_margin ppf d sets the right margin to  d  (in  characters):  the
532       pretty-printer splits lines that overflow the right margin according to
533       the break hints given.  Setting the margin to d means that the  format‐
534       ting  engine aims at printing at most d-1 characters per line.  Nothing
535       happens if d is smaller than 2.  If d is too large, the right margin is
536       set  to  the  maximum admissible value (which is greater than 10 ^ 9 ).
537       If d is less than the current maximum indentation  limit,  the  maximum
538       indentation limit is decreased while trying to preserve a minimal ratio
539       max_indent/margin>=50% and if possible the current difference margin  -
540       max_indent .
541
542       See also Format.pp_set_geometry .
543
544
545
546       val pp_get_margin : formatter -> unit -> int
547
548
549
550
551       val get_margin : unit -> int
552
553       Returns the position of the right margin.
554
555
556
557
558   Maximum indentation limit
559       val pp_set_max_indent : formatter -> int -> unit
560
561
562
563
564       val set_max_indent : int -> unit
565
566
567       pp_set_max_indent  ppf d sets the maximum indentation limit of lines to
568       d (in characters): once this  limit  is  reached,  new  pretty-printing
569       boxes  are rejected to the left, unless the enclosing box fully fits on
570       the current line.  As an illustration,
571       set_margin 10; set_max_indent 5; printf "@[123456@[7@]89A@]@."
572       yields
573           123456
574           789A
575
576       because the nested box "@[7@]" is opened after the maximum  indentation
577       limit ( 7>5 ) and its parent box does not fit on the current line.  Ei‐
578       ther decreasing the length of the parent box to make it fit on a line:
579       printf "@[123456@[7@]89@]@."
580       or opening an intermediary box before  the  maximum  indentation  limit
581       which fits on the current line
582       printf "@[123@[456@[7@]89@]A@]@."
583       avoids  the  rejection to the left of the inner boxes and print respec‐
584       tively "123456789" and "123456789A" .  Note also  that  vertical  boxes
585       never  fit  on  a line whereas horizontal boxes always fully fit on the
586       current line.  Opening a box may split a line whereas the contents  may
587       have fit.  If this behavior is problematic, it can be curtailed by set‐
588       ting the maximum indentation limit to margin - 1 .  Note  that  setting
589       the maximum indentation limit to margin is invalid.
590
591       Nothing happens if d is smaller than 2.
592
593       If  d  is  too  large, the limit is set to the maximum admissible value
594       (which is greater than 10 ^ 9 ).
595
596       If d is greater or equal than the current margin, it  is  ignored,  and
597       the current maximum indentation limit is kept.
598
599       See also Format.pp_set_geometry .
600
601
602
603       val pp_get_max_indent : formatter -> unit -> int
604
605
606
607
608       val get_max_indent : unit -> int
609
610       Return the maximum indentation limit (in characters).
611
612
613
614
615   Geometry
616       Geometric  functions  can be used to manipulate simultaneously the cou‐
617       pled variables, margin and maxixum indentation limit.
618
619       type geometry = {
620        max_indent : int ;
621        margin : int ;
622        }
623
624
625       Since 4.08
626
627
628
629       val check_geometry : geometry -> bool
630
631       Check if the formatter geometry is valid: 1 < max_indent < margin
632
633
634
635       Since 4.08
636
637
638
639       val pp_set_geometry : formatter -> max_indent:int -> margin:int -> unit
640
641
642
643
644       val set_geometry : max_indent:int -> margin:int -> unit
645
646
647
648
649       val pp_safe_set_geometry : formatter -> max_indent:int -> margin:int ->
650       unit
651
652
653
654
655       val safe_set_geometry : max_indent:int -> margin:int -> unit
656
657
658       pp_set_geometry  ppf ~max_indent ~margin sets both the margin and maxi‐
659       mum indentation limit for ppf .
660
661       When 1 < max_indent < margin , pp_set_geometry ppf ~max_indent  ~margin
662       is  equivalent  to  pp_set_margin  ppf  margin;  pp_set_max_indent  ppf
663       max_indent ; and avoids  the  subtly  incorrect  pp_set_max_indent  ppf
664       max_indent; pp_set_margin ppf margin ;
665
666       Outside  of this domain, pp_set_geometry raises an invalid argument ex‐
667       ception whereas pp_safe_set_geometry does nothing.
668
669
670       Since 4.08.0
671
672
673
674       val pp_update_geometry : formatter -> (geometry -> geometry) -> unit
675
676
677       pp_update_geometry ppf (fun geo -> { geo with ... }) lets you update  a
678       formatter's geometry in a way that is robust to extension of the geome‐
679       try record with new fields.
680
681       Raises an invalid argument exception if the returned geometry does  not
682       satisfy Format.check_geometry .
683
684
685       Since 4.11.0
686
687
688
689       val update_geometry : (geometry -> geometry) -> unit
690
691
692
693
694       val pp_get_geometry : formatter -> unit -> geometry
695
696
697
698
699       val get_geometry : unit -> geometry
700
701       Return the current geometry of the formatter
702
703
704       Since 4.08.0
705
706
707
708
709   Maximum formatting depth
710       The  maximum  formatting depth is the maximum number of pretty-printing
711       boxes simultaneously open.
712
713       Material inside boxes nested deeper is printed  as  an  ellipsis  (more
714       precisely as the text returned by Format.get_ellipsis_text () ).
715
716       val pp_set_max_boxes : formatter -> int -> unit
717
718
719
720
721       val set_max_boxes : int -> unit
722
723
724       pp_set_max_boxes  ppf  max  sets  the maximum number of pretty-printing
725       boxes simultaneously open.
726
727       Material inside boxes nested deeper is printed  as  an  ellipsis  (more
728       precisely as the text returned by Format.get_ellipsis_text () ).
729
730       Nothing happens if max is smaller than 2.
731
732
733
734       val pp_get_max_boxes : formatter -> unit -> int
735
736
737
738
739       val get_max_boxes : unit -> int
740
741       Returns  the maximum number of pretty-printing boxes allowed before el‐
742       lipsis.
743
744
745
746       val pp_over_max_boxes : formatter -> unit -> bool
747
748
749
750
751       val over_max_boxes : unit -> bool
752
753       Tests if the maximum number of pretty-printing boxes allowed  have  al‐
754       ready been opened.
755
756
757
758
759   Tabulation boxes
760       A  tabulation  box prints material on lines divided into cells of fixed
761       length. A tabulation box provides a simple way to display vertical col‐
762       umns of left adjusted text.
763
764       This  box  features command set_tab to define cell boundaries, and com‐
765       mand print_tab to move from cell to cell and split the line when  there
766       is no more cells to print on the line.
767
768       Note:  printing  within  tabulation  box is line directed, so arbitrary
769       line splitting inside a tabulation box leads to  poor  rendering.  Yet,
770       controlled  use  of  tabulation boxes allows simple printing of columns
771       within module Format .
772
773       val pp_open_tbox : formatter -> unit -> unit
774
775
776
777
778       val open_tbox : unit -> unit
779
780
781       open_tbox () opens a new tabulation box.
782
783       This box prints lines separated into cells of fixed width.
784
785       Inside a tabulation box, special tabulation markers defines  points  of
786       interest  on the line (for instance to delimit cell boundaries).  Func‐
787       tion Format.set_tab sets a tabulation marker at insertion point.
788
789       A tabulation box features specific tabulation breaks to  move  to  next
790       tabulation  marker  or  split  the  line.  Function Format.print_tbreak
791       prints a tabulation break.
792
793
794
795       val pp_close_tbox : formatter -> unit -> unit
796
797
798
799
800       val close_tbox : unit -> unit
801
802       Closes the most recently opened tabulation box.
803
804
805
806       val pp_set_tab : formatter -> unit -> unit
807
808
809
810
811       val set_tab : unit -> unit
812
813       Sets a tabulation marker at current insertion point.
814
815
816
817       val pp_print_tab : formatter -> unit -> unit
818
819
820
821
822       val print_tab : unit -> unit
823
824
825       print_tab () emits a 'next' tabulation break hint: if not  already  set
826       on  a tabulation marker, the insertion point moves to the first tabula‐
827       tion marker on the right, or the pretty-printer splits the line and in‐
828       sertion point moves to the leftmost tabulation marker.
829
830       It is equivalent to print_tbreak 0 0 .
831
832
833
834       val pp_print_tbreak : formatter -> int -> int -> unit
835
836
837
838
839       val print_tbreak : int -> int -> unit
840
841
842       print_tbreak nspaces offset emits a 'full' tabulation break hint.
843
844       If not already set on a tabulation marker, the insertion point moves to
845       the first tabulation marker on the right and the pretty-printer  prints
846       nspaces spaces.
847
848       If  there is no next tabulation marker on the right, the pretty-printer
849       splits the line at this point, then insertion point moves to the  left‐
850       most tabulation marker of the box.
851
852       If  the  pretty-printer splits the line, offset is added to the current
853       indentation.
854
855
856
857
858   Ellipsis
859       val pp_set_ellipsis_text : formatter -> string -> unit
860
861
862
863
864       val set_ellipsis_text : string -> unit
865
866       Set the text of the ellipsis  printed  when  too  many  pretty-printing
867       boxes are open (a single dot, .  , by default).
868
869
870
871       val pp_get_ellipsis_text : formatter -> unit -> string
872
873
874
875
876       val get_ellipsis_text : unit -> string
877
878       Return the text of the ellipsis.
879
880
881
882
883   Semantic tags
884       type stag = ..
885
886
887       Semantic  tags (or simply tags) are user's defined annotations to asso‐
888       ciate user's specific operations to printed entities.
889
890       Common usage of semantic tags is text decoration to get  specific  font
891       or text size rendering for a display device, or marking delimitation of
892       entities (e.g. HTML or TeX  elements  or  terminal  escape  sequences).
893       More  sophisticated usage of semantic tags could handle dynamic modifi‐
894       cation of the pretty-printer behavior to properly  print  the  material
895       within some specific tags.  For instance, we can define an RGB tag like
896       so:
897       type stag += RGB of {r:int;g:int;b:int}
898
899
900       In order to properly delimit printed entities, a semantic tag  must  be
901       opened  before and closed after the entity. Semantic tags must be prop‐
902       erly  nested  like  parentheses  using  Format.pp_open_stag  and   For‐
903       mat.pp_close_stag .
904
905       Tag  specific  operations  occur any time a tag is opened or closed, At
906       each occurrence, two kinds of operations are performed tag-marking  and
907       tag-printing:
908
909       -The  tag-marking  operation  is the simpler tag specific operation: it
910       simply writes a tag specific string into the output device of the  for‐
911       matter. Tag-marking does not interfere with line-splitting computation.
912
913       -The  tag-printing  operation  is the more involved tag specific opera‐
914       tion: it can print arbitrary material to the formatter. Tag-printing is
915       tightly linked to the current pretty-printer operations.
916
917       Roughly  speaking, tag-marking is commonly used to get a better render‐
918       ing of texts in the rendering device, while  tag-printing  allows  fine
919       tuning  of  printing  routines to print the same entity differently ac‐
920       cording to the semantic tags (i.e. print additional  material  or  even
921       omit parts of the output).
922
923       More  precisely:  when a semantic tag is opened or closed then both and
924       successive 'tag-printing' and 'tag-marking' operations occur:
925
926       -Tag-printing a semantic tag means calling the formatter specific func‐
927       tion  print_open_stag  (resp.   print_close_stag ) with the name of the
928       tag as argument: that tag-printing function can then print any  regular
929       material  to  the formatter (so that this material is enqueued as usual
930       in the formatter queue for further line splitting computation).
931
932       -Tag-marking a semantic tag means calling the formatter specific  func‐
933       tion  mark_open_stag (resp.  mark_close_stag ) with the name of the tag
934       as argument: that tag-marking function can then return the 'tag-opening
935       marker'  (resp. `tag-closing marker') for direct output into the output
936       device of the formatter.
937
938       Being written directly into the output device of the formatter,  seman‐
939       tic tag marker strings are not considered as part of the printing mate‐
940       rial that drives line splitting (in other  words,  the  length  of  the
941       strings  corresponding  to  tag  markers is considered as zero for line
942       splitting).
943
944       Thus,  semantic  tag  handling  is  in  some   sense   transparent   to
945       pretty-printing and does not interfere with usual indentation. Hence, a
946       single pretty-printing routine can output both simple 'verbatim'  mate‐
947       rial  or richer decorated output depending on the treatment of tags. By
948       default, tags are not active, hence the output is  not  decorated  with
949       tag  information. Once set_tags is set to true , the pretty-printer en‐
950       gine honors tags and decorates the output accordingly.
951
952       Default tag-marking functions behave the HTML way: Format.tag  are  en‐
953       closed  in  "<"  and  ">"  while other tags are ignored; hence, opening
954       marker for tag string "t" is "<t>" and closing marker is "</t>" .
955
956       Default tag-printing functions just do nothing.
957
958       Tag-marking and tag-printing functions are user definable  and  can  be
959       set by calling Format.set_formatter_stag_functions .
960
961       Semantic  tag  operations  may  be set on or off with Format.set_tags .
962       Tag-marking operations may be set on or off with Format.set_mark_tags .
963       Tag-printing operations may be set on or off with Format.set_print_tags
964       .
965
966
967       Since 4.08.0
968
969
970       type tag = string
971
972
973
974
975       type Format.stag +=
976        | String_tag of tag  (* String_tag s is a string tag s .  String  tags
977       can  be  inserted either by explicitly using the constructor String_tag
978       or by using the dedicated format syntax "@{<s> ... @}" .
979
980
981       Since 4.08.0
982        *)
983
984
985
986
987
988       val pp_open_stag : formatter -> stag -> unit
989
990
991
992
993       val open_stag : stag -> unit
994
995
996       pp_open_stag ppf t opens the semantic tag named t .
997
998       The print_open_stag tag-printing function of the  formatter  is  called
999       with  t  as  argument;  then the opening tag marker for t , as given by
1000       mark_open_stag t , is written into the output device of the formatter.
1001
1002
1003       Since 4.08.0
1004
1005
1006
1007       val pp_close_stag : formatter -> unit -> unit
1008
1009
1010
1011
1012       val close_stag : unit -> unit
1013
1014
1015       pp_close_stag ppf () closes the most recently opened semantic tag t .
1016
1017       The closing tag marker, as given by mark_close_stag t , is written into
1018       the   output   device  of  the  formatter;  then  the  print_close_stag
1019       tag-printing function of the formatter is called with t as argument.
1020
1021
1022       Since 4.08.0
1023
1024
1025
1026       val pp_set_tags : formatter -> bool -> unit
1027
1028
1029
1030
1031       val set_tags : bool -> unit
1032
1033
1034       pp_set_tags ppf b turns on or off the treatment of semantic  tags  (de‐
1035       fault is off).
1036
1037
1038
1039       val pp_set_print_tags : formatter -> bool -> unit
1040
1041
1042
1043
1044       val set_print_tags : bool -> unit
1045
1046
1047       pp_set_print_tags ppf b turns on or off the tag-printing operations.
1048
1049
1050
1051       val pp_set_mark_tags : formatter -> bool -> unit
1052
1053
1054
1055
1056       val set_mark_tags : bool -> unit
1057
1058
1059       pp_set_mark_tags ppf b turns on or off the tag-marking operations.
1060
1061
1062
1063       val pp_get_print_tags : formatter -> unit -> bool
1064
1065
1066
1067
1068       val get_print_tags : unit -> bool
1069
1070       Return the current status of tag-printing operations.
1071
1072
1073
1074       val pp_get_mark_tags : formatter -> unit -> bool
1075
1076
1077
1078
1079       val get_mark_tags : unit -> bool
1080
1081       Return the current status of tag-marking operations.
1082
1083
1084
1085       val pp_set_formatter_out_channel : formatter -> out_channel -> unit
1086
1087
1088   Redirecting the standard formatter output
1089       val set_formatter_out_channel : out_channel -> unit
1090
1091       Redirect the standard pretty-printer output to the given channel.  (All
1092       the output functions of the standard formatter are set to  the  default
1093       output functions printing to the given channel.)
1094
1095
1096       set_formatter_out_channel   is   equivalent   to  Format.pp_set_format‐
1097       ter_out_channel std_formatter .
1098
1099
1100
1101       val pp_set_formatter_output_functions : formatter -> (string -> int  ->
1102       int -> unit) -> (unit -> unit) -> unit
1103
1104
1105
1106
1107       val  set_formatter_output_functions : (string -> int -> int -> unit) ->
1108       (unit -> unit) -> unit
1109
1110
1111       pp_set_formatter_output_functions ppf out flush redirects the  standard
1112       pretty-printer output functions to the functions out and flush .
1113
1114       The  out function performs all the pretty-printer string output.  It is
1115       called with a string s , a start position p , and a number  of  charac‐
1116       ters n ; it is supposed to output characters p to p + n - 1 of s .
1117
1118       The  flush  function  is  called whenever the pretty-printer is flushed
1119       (via conversion %!  , or pretty-printing indications @?  or  @.   ,  or
1120       using low level functions print_flush or print_newline ).
1121
1122
1123
1124       val pp_get_formatter_output_functions : formatter -> unit -> (string ->
1125       int -> int -> unit) * (unit -> unit)
1126
1127
1128
1129
1130       val get_formatter_output_functions : unit -> (string -> int ->  int  ->
1131       unit) * (unit -> unit)
1132
1133       Return the current output functions of the standard pretty-printer.
1134
1135
1136
1137
1138   Redefining formatter output
1139       The  Format  module  is versatile enough to let you completely redefine
1140       the meaning of pretty-printing output: you may provide your  own  func‐
1141       tions  to  define  how  to handle indentation, line splitting, and even
1142       printing of all the characters that have to be printed!
1143
1144   Redefining output functions
1145       type formatter_out_functions = {
1146        out_string : string -> int -> int -> unit ;
1147        out_flush : unit -> unit ;
1148        out_newline : unit -> unit ;
1149        out_spaces : int -> unit ;
1150        out_indent : int -> unit ;  (* .B "Since" 4.06.0
1151        *)
1152        }
1153
1154
1155       The set of output functions specific to a formatter:
1156
1157       -the out_string function performs all the pretty-printer string output.
1158       It  is  called  with  a string s , a start position p , and a number of
1159       characters n ; it is supposed to output characters p to p + n - 1 of  s
1160       .
1161
1162       -the out_flush function flushes the pretty-printer output device.
1163
1164       -  out_newline  is  called  to  open a new line when the pretty-printer
1165       splits the line.
1166
1167       -the out_spaces function outputs spaces when a break hint leads to spa‐
1168       ces  instead of a line split. It is called with the number of spaces to
1169       output.
1170
1171       -the  out_indent  function  performs  new  line  indentation  when  the
1172       pretty-printer splits the line. It is called with the indentation value
1173       of the new line.
1174
1175       By default:
1176
1177       -fields out_string and out_flush  are  output  device  specific;  (e.g.
1178       output_string  and  flush  for a out_channel device, or Buffer.add_sub‐
1179       string and ignore for a Buffer.t output device),
1180
1181       -field out_newline is equivalent to out_string "\n" 0 1 ;
1182
1183       -fields  out_spaces  and  out_indent  are  equivalent   to   out_string
1184       (String.make n ' ') 0 n .
1185
1186
1187
1188       Since 4.01.0
1189
1190
1191
1192       val  pp_set_formatter_out_functions  : formatter -> formatter_out_func‐
1193       tions -> unit
1194
1195
1196
1197
1198       val set_formatter_out_functions : formatter_out_functions -> unit
1199
1200
1201       pp_set_formatter_out_functions ppf out_funs Set all the  pretty-printer
1202       output functions of ppf to those of argument out_funs ,
1203
1204       This way, you can change the meaning of indentation (which can be some‐
1205       thing else than just printing space characters) and the meaning of  new
1206       lines opening (which can be connected to any other action needed by the
1207       application at hand).
1208
1209       Reasonable defaults for functions out_spaces and  out_newline  are  re‐
1210       spectively   out_funs.out_string   (String.make   n   '   ')  0  n  and
1211       out_funs.out_string "\n" 0 1 .
1212
1213
1214       Since 4.01.0
1215
1216
1217
1218       val pp_get_formatter_out_functions  :  formatter  ->  unit  ->  format‐
1219       ter_out_functions
1220
1221
1222
1223
1224       val get_formatter_out_functions : unit -> formatter_out_functions
1225
1226       Return  the  current  output functions of the pretty-printer, including
1227       line splitting and indentation functions. Useful to record the  current
1228       setting and restore it afterwards.
1229
1230
1231       Since 4.01.0
1232
1233
1234
1235
1236   Redefining semantic tag operations
1237       type formatter_stag_functions = {
1238        mark_open_stag : stag -> string ;
1239        mark_close_stag : stag -> string ;
1240        print_open_stag : stag -> unit ;
1241        print_close_stag : stag -> unit ;
1242        }
1243
1244
1245       The  semantic tag handling functions specific to a formatter: mark ver‐
1246       sions are the 'tag-marking' functions that associate a string marker to
1247       a tag in order for the pretty-printing engine to write those markers as
1248       0 length tokens in the output device of the formatter.  print  versions
1249       are the 'tag-printing' functions that can perform regular printing when
1250       a tag is closed or opened.
1251
1252
1253       Since 4.08.0
1254
1255
1256
1257       val pp_set_formatter_stag_functions : formatter -> formatter_stag_func‐
1258       tions -> unit
1259
1260
1261
1262
1263       val set_formatter_stag_functions : formatter_stag_functions -> unit
1264
1265
1266       pp_set_formatter_stag_functions  ppf  tag_funs  changes  the meaning of
1267       opening and closing semantic tag operations to  use  the  functions  in
1268       tag_funs when printing on ppf .
1269
1270       When opening a semantic tag with name t , the string t is passed to the
1271       opening tag-marking function (the mark_open_stag field  of  the  record
1272       tag_funs ), that must return the opening tag marker for that name. When
1273       the next call to close_stag () happens, the semantic tag name t is sent
1274       back  to the closing tag-marking function (the mark_close_stag field of
1275       record tag_funs ), that must return a closing tag marker for that name.
1276
1277       The print_ field of the record contains the tag-printing functions that
1278       are called at tag opening and tag closing time, to output regular mate‐
1279       rial in the pretty-printer queue.
1280
1281
1282       Since 4.08.0
1283
1284
1285
1286       val pp_get_formatter_stag_functions :  formatter  ->  unit  ->  format‐
1287       ter_stag_functions
1288
1289
1290
1291
1292       val get_formatter_stag_functions : unit -> formatter_stag_functions
1293
1294       Return  the  current  semantic  tag operation functions of the standard
1295       pretty-printer.
1296
1297
1298       Since 4.08.0
1299
1300
1301
1302
1303   Defining formatters
1304       Defining new formatters permits unrelated output of material in  paral‐
1305       lel  on  several output devices.  All the parameters of a formatter are
1306       local to the formatter: right margin, maximum indentation limit,  maxi‐
1307       mum  number of pretty-printing boxes simultaneously open, ellipsis, and
1308       so on, are specific to each formatter and may be fixed independently.
1309
1310       For instance, given a Buffer.t buffer b , Format.formatter_of_buffer  b
1311       returns  a  new  formatter  using buffer b as its output device.  Simi‐
1312       larly,  given  a  out_channel  output  channel  oc   ,   Format.format‐
1313       ter_of_out_channel  oc  returns a new formatter using channel oc as its
1314       output device.
1315
1316       Alternatively, given out_funs , a complete set of output functions  for
1317       a formatter, then Format.formatter_of_out_functions out_funs computes a
1318       new formatter using those functions for output.
1319
1320       val formatter_of_out_channel : out_channel -> formatter
1321
1322
1323       formatter_of_out_channel oc returns a new formatter writing to the cor‐
1324       responding output channel oc .
1325
1326
1327
1328       val  synchronized_formatter_of_out_channel  :  out_channel -> formatter
1329       Domain.DLS.key
1330
1331
1332       synchronized_formatter_of_out_channel oc returns the  key  to  the  do‐
1333       main-local  state  that holds the domain-local formatter for writing to
1334       the corresponding output channel oc .
1335
1336       When the formatter is used with multiple domains, the output  from  the
1337       domains will be interleaved with each other at points where the format‐
1338       ter is flushed, such as with Format.print_flush .
1339
1340
1341       Alert unstable.
1342
1343
1344
1345       val std_formatter : formatter
1346
1347       The initial domain's standard formatter to write to standard output.
1348
1349       It is defined as Format.formatter_of_out_channel stdout .
1350
1351
1352
1353       val get_std_formatter : unit -> formatter
1354
1355
1356       get_std_formatter () returns the current  domain's  standard  formatter
1357       used to write to standard output.
1358
1359
1360       Since 5.0
1361
1362
1363
1364       val err_formatter : formatter
1365
1366       The initial domain's formatter to write to standard error.
1367
1368       It is defined as Format.formatter_of_out_channel stderr .
1369
1370
1371
1372       val get_err_formatter : unit -> formatter
1373
1374
1375       get_err_formatter  ()  returns  the  current domain's formatter used to
1376       write to standard error.
1377
1378
1379       Since 5.0
1380
1381
1382
1383       val formatter_of_buffer : Buffer.t -> formatter
1384
1385
1386       formatter_of_buffer b returns a new formatter writing to buffer b .  At
1387       the  end  of  pretty-printing, the formatter must be flushed using For‐
1388       mat.pp_print_flush or Format.pp_print_newline , to print all the  pend‐
1389       ing material into the buffer.
1390
1391
1392
1393       val stdbuf : Buffer.t
1394
1395       The initial domain's string buffer in which str_formatter writes.
1396
1397
1398
1399       val get_stdbuf : unit -> Buffer.t
1400
1401
1402       get_stdbuf  ()  returns the current domain's string buffer in which the
1403       current domain's string formatter writes.
1404
1405
1406       Since 5.0
1407
1408
1409
1410       val str_formatter : formatter
1411
1412       The initial domain's formatter to output to  the  Format.stdbuf  string
1413       buffer.
1414
1415
1416       str_formatter is defined as Format.formatter_of_buffer Format.stdbuf .
1417
1418
1419
1420       val get_str_formatter : unit -> formatter
1421
1422       The  current domain's formatter to output to the current domains string
1423       buffer.
1424
1425
1426       Since 5.0
1427
1428
1429
1430       val flush_str_formatter : unit -> string
1431
1432       Returns the material printed with str_formatter of the current  domain,
1433       flushes the formatter and resets the corresponding buffer.
1434
1435
1436
1437       val  make_formatter  : (string -> int -> int -> unit) -> (unit -> unit)
1438       -> formatter
1439
1440
1441       make_formatter out flush returns a  new  formatter  that  outputs  with
1442       function out , and flushes with function flush .
1443
1444       For instance,
1445           make_formatter
1446             (Stdlib.output oc)
1447             (fun () -> Stdlib.flush oc)
1448
1449       returns a formatter to the out_channel oc .
1450
1451
1452
1453       val  make_synchronized_formatter  :  (string  -> int -> int -> unit) ->
1454       (unit -> unit) -> formatter Domain.DLS.key
1455
1456
1457       make_synchronized_formatter out flush returns the key to the domain-lo‐
1458       cal state that holds the domain-local formatter that outputs with func‐
1459       tion out , and flushes with function flush .
1460
1461       When the formatter is used with multiple domains, the output  from  the
1462       domains will be interleaved with each other at points where the format‐
1463       ter is flushed, such as with Format.print_flush .
1464
1465
1466       Since 5.0
1467
1468
1469       Alert unstable.
1470
1471
1472
1473       val formatter_of_out_functions : formatter_out_functions -> formatter
1474
1475
1476       formatter_of_out_functions out_funs returns a new formatter that writes
1477       with the set of output functions out_funs .
1478
1479       See  definition  of type Format.formatter_out_functions for the meaning
1480       of argument out_funs .
1481
1482
1483       Since 4.06.0
1484
1485
1486
1487
1488   Symbolic pretty-printing
1489       Symbolic pretty-printing is pretty-printing using a symbolic formatter,
1490       i.e. a formatter that outputs symbolic pretty-printing items.
1491
1492       When using a symbolic formatter, all regular pretty-printing activities
1493       occur but output material is symbolic and stored in a buffer of  output
1494       items.   At  the end of pretty-printing, flushing the output buffer al‐
1495       lows post-processing of symbolic output  before  performing  low  level
1496       output operations.
1497
1498       In practice, first define a symbolic output buffer b using:
1499
1500       -  let  sob  = make_symbolic_output_buffer () .  Then define a symbolic
1501       formatter with:
1502
1503       - let ppf = formatter_of_symbolic_output_buffer sob
1504
1505       Use symbolic formatter ppf as usual, and retrieve symbolic items at end
1506       of pretty-printing by flushing symbolic output buffer sob with:
1507
1508       - flush_symbolic_output_buffer sob .
1509
1510
1511       type symbolic_output_item =
1512        | Output_flush  (* symbolic flush command
1513        *)
1514        | Output_newline  (* symbolic newline command
1515        *)
1516        | Output_string of string
1517         (* Output_string s : symbolic output for string s
1518
1519        *)
1520        | Output_spaces of int
1521         (* Output_spaces n : symbolic command to output n spaces
1522        *)
1523        | Output_indent of int
1524         (* Output_indent i : symbolic indentation of size i
1525
1526        *)
1527
1528
1529       Items produced by symbolic pretty-printers
1530
1531
1532       Since 4.06.0
1533
1534
1535       type symbolic_output_buffer
1536
1537
1538       The output buffer of a symbolic pretty-printer.
1539
1540
1541       Since 4.06.0
1542
1543
1544
1545       val make_symbolic_output_buffer : unit -> symbolic_output_buffer
1546
1547
1548       make_symbolic_output_buffer () returns a fresh buffer for symbolic out‐
1549       put.
1550
1551
1552       Since 4.06.0
1553
1554
1555
1556       val clear_symbolic_output_buffer : symbolic_output_buffer -> unit
1557
1558
1559       clear_symbolic_output_buffer sob resets buffer sob .
1560
1561
1562       Since 4.06.0
1563
1564
1565
1566       val  get_symbolic_output_buffer  :   symbolic_output_buffer   ->   sym‐
1567       bolic_output_item list
1568
1569
1570       get_symbolic_output_buffer sob returns the contents of buffer sob .
1571
1572
1573       Since 4.06.0
1574
1575
1576
1577       val   flush_symbolic_output_buffer  :  symbolic_output_buffer  ->  sym‐
1578       bolic_output_item list
1579
1580
1581       flush_symbolic_output_buffer sob returns the contents of buffer sob and
1582       resets  buffer sob .  flush_symbolic_output_buffer sob is equivalent to
1583       let items = get_symbolic_output_buffer sob in
1584          clear_symbolic_output_buffer sob; items
1585
1586
1587
1588       Since 4.06.0
1589
1590
1591
1592       val add_symbolic_output_item : symbolic_output_buffer ->  symbolic_out‐
1593       put_item -> unit
1594
1595
1596       add_symbolic_output_item sob itm adds item itm to buffer sob .
1597
1598
1599       Since 4.06.0
1600
1601
1602
1603       val  formatter_of_symbolic_output_buffer  :  symbolic_output_buffer  ->
1604       formatter
1605
1606
1607       formatter_of_symbolic_output_buffer sob returns  a  symbolic  formatter
1608       that outputs to symbolic_output_buffer sob .
1609
1610
1611       Since 4.06.0
1612
1613
1614
1615
1616   Convenience formatting functions.
1617       val  pp_print_list  : ?pp_sep:(formatter -> unit -> unit) -> (formatter
1618       -> 'a -> unit) -> formatter -> 'a list -> unit
1619
1620
1621       pp_print_list ?pp_sep pp_v ppf l prints items of list l , using pp_v to
1622       print  each item, and calling pp_sep between items ( pp_sep defaults to
1623       Format.pp_print_cut .  Does nothing on empty lists.
1624
1625
1626       Since 4.02.0
1627
1628
1629
1630       val pp_print_seq : ?pp_sep:(formatter -> unit -> unit) -> (formatter ->
1631       'a -> unit) -> formatter -> 'a Seq.t -> unit
1632
1633
1634       pp_print_seq ?pp_sep pp_v ppf s prints items of sequence s , using pp_v
1635       to print each item, and calling pp_sep between items ( pp_sep  defaults
1636       to Format.pp_print_cut .  Does nothing on empty sequences.
1637
1638       This function does not terminate on infinite sequences.
1639
1640
1641       Since 4.12
1642
1643
1644
1645       val pp_print_text : formatter -> string -> unit
1646
1647
1648       pp_print_text  ppf  s  prints  s  with spaces and newlines respectively
1649       printed using Format.pp_print_space and Format.pp_force_newline .
1650
1651
1652       Since 4.02.0
1653
1654
1655
1656       val pp_print_option : ?none:(formatter -> unit -> unit)  ->  (formatter
1657       -> 'a -> unit) -> formatter -> 'a option -> unit
1658
1659
1660       pp_print_option  ?none  pp_v  ppf  o prints o on ppf using pp_v if o is
1661       Some v and none if it is None .  none prints nothing by default.
1662
1663
1664       Since 4.08
1665
1666
1667
1668       val pp_print_result : ok:(formatter -> 'a -> unit) ->  error:(formatter
1669       -> 'e -> unit) -> formatter -> ('a, 'e) result -> unit
1670
1671
1672       pp_print_result  ~ok ~error ppf r prints r on ppf using ok if r is Ok _
1673       and error if r is Error _ .
1674
1675
1676       Since 4.08
1677
1678
1679
1680       val pp_print_either : left:(formatter -> 'a -> unit) ->  right:(format‐
1681       ter -> 'b -> unit) -> formatter -> ('a, 'b) Either.t -> unit
1682
1683
1684       pp_print_either  ~left  ~right ppf e prints e on ppf using left if e is
1685       Either.Left _ and right if e is Either.Right _ .
1686
1687
1688       Since 4.13
1689
1690
1691
1692
1693   Formatted pretty-printing
1694       Module Format provides a complete set  of  printf  like  functions  for
1695       pretty-printing using format string specifications.
1696
1697       Specific  annotations  may  be  added  in  the  format  strings to give
1698       pretty-printing commands to the pretty-printing engine.
1699
1700       Those annotations are introduced in the  format  strings  using  the  @
1701       character.  For  instance,  @  means  a space break, @, means a cut, @[
1702       opens a new box, and @] closes the last open box.
1703
1704       val fprintf : formatter -> ('a, formatter, unit) format -> 'a
1705
1706
1707
1708
1709
1710       fprintf ff fmt arg1 ... argN formats the arguments arg1 to argN accord‐
1711       ing  to the format string fmt , and outputs the resulting string on the
1712       formatter ff .
1713
1714       The format string fmt is a character string which contains three  types
1715       of objects: plain characters and conversion specifications as specified
1716       in the Printf module, and pretty-printing indications specific  to  the
1717       Format module.
1718
1719       The pretty-printing indication characters are introduced by a @ charac‐
1720       ter, and their meanings are:
1721
1722       - @[ : open a pretty-printing box. The type and offset of the  box  may
1723       be  optionally  specified  with  the following syntax: the < character,
1724       followed by an optional box type indication, then an  optional  integer
1725       offset,  and  the closing > character.  Pretty-printing box type is one
1726       of h , v , hv , b , or  hov  .   '  h  '  stands  for  an  'horizontal'
1727       pretty-printing box, ' v ' stands for a 'vertical' pretty-printing box,
1728       ' hv ' stands for an 'horizontal/vertical' pretty-printing box, '  b  '
1729       stands  for an 'horizontal-or-vertical' pretty-printing box demonstrat‐
1730       ing indentation, '  hov  '  stands  a  simple  'horizontal-or-vertical'
1731       pretty-printing  box.   For  instance,  @[<hov  2>  opens  an 'horizon‐
1732       tal-or-vertical' pretty-printing box with  indentation  2  as  obtained
1733       with open_hovbox 2 .  For more details about pretty-printing boxes, see
1734       the various box opening functions open_*box .
1735
1736       - @] : close the most recently opened pretty-printing box.
1737
1738       - @, : output a 'cut' break hint, as with print_cut () .
1739
1740       - @ : output a 'space' break hint, as with print_space () .
1741
1742       - @; : output a 'full' break hint as with print_break . The nspaces and
1743       offset  parameters  of  the break hint may be optionally specified with
1744       the following syntax: the < character, followed by an  integer  nspaces
1745       value,  then  an integer offset , and a closing > character.  If no pa‐
1746       rameters are provided, the good break defaults to a 'space' break hint.
1747
1748       - @.  : flush the pretty-printer and split the line, as with print_new‐
1749       line () .
1750
1751       -  @<n>  : print the following item as if it were of length n .  Hence,
1752       printf "@<0>%s" arg prints arg as a zero length string.  If @<n> is not
1753       followed by a conversion specification, then the following character of
1754       the format is printed as if it were of length n .
1755
1756       - @{ : open a semantic tag. The name of the tag may be optionally spec‐
1757       ified  with  the  following syntax: the < character, followed by an op‐
1758       tional string specification, and the closing >  character.  The  string
1759       specification is any character string that does not contain the closing
1760       character '>' . If omitted, the tag name defaults to the empty  string.
1761       For   more   details  about  semantic  tags,  see  the  functions  For‐
1762       mat.open_stag and Format.close_stag .
1763
1764       - @} : close the most recently opened semantic tag.
1765
1766       - @?  : flush the pretty-printer as with  print_flush  ()  .   This  is
1767       equivalent to the conversion %!  .
1768
1769       -  @\n : force a newline, as with force_newline () , not the normal way
1770       of pretty-printing, you should prefer using break hints inside a verti‐
1771       cal pretty-printing box.
1772
1773       Note: To prevent the interpretation of a @ character as a pretty-print‐
1774       ing indication, escape it with a % character.  Old quotation mode @@ is
1775       deprecated  since it is not compatible with formatted input interpreta‐
1776       tion of character '@' .
1777
1778       Example: printf "@[%s@ %d@]@." "x =" 1 is equivalent  to  open_box  ();
1779       print_string "x ="; print_space ();
1780           print_int  1;  close_box  ();  print_newline  () .  It prints x = 1
1781       within a pretty-printing 'horizontal-or-vertical' box.
1782
1783       val printf : ('a, formatter, unit) format -> 'a
1784
1785       Same as fprintf above, but output on get_std_formatter () .
1786
1787       It is defined similarly to fun fmt ->  fprintf  (get_std_formatter  ())
1788       fmt but delays calling get_std_formatter until after the final argument
1789       required by the format is received. When used  with  multiple  domains,
1790       the  output  from  the  domains  will be interleaved with each other at
1791       points where the formatter is flushed, such as with  Format.print_flush
1792       .
1793
1794
1795
1796       val eprintf : ('a, formatter, unit) format -> 'a
1797
1798       Same as fprintf above, but output on get_err_formatter () .
1799
1800       It  is  defined  similarly to fun fmt -> fprintf (get_err_formatter ())
1801       fmt but delays calling get_err_formatter until after the final argument
1802       required  by  the  format is received. When used with multiple domains,
1803       the output from the domains will be  interleaved  with  each  other  at
1804       points  where the formatter is flushed, such as with Format.print_flush
1805       .
1806
1807
1808
1809       val sprintf : ('a, unit, string) format -> 'a
1810
1811       Same as printf above, but instead of printing on a formatter, returns a
1812       string  containing  the  result of formatting the arguments.  Note that
1813       the pretty-printer queue is flushed at the end of each call to  sprintf
1814       .
1815
1816       In  case of multiple and related calls to sprintf to output material on
1817       a single string, you should consider using fprintf with the  predefined
1818       formatter  str_formatter and call flush_str_formatter () to get the fi‐
1819       nal result.
1820
1821       Alternatively, you can use Format.fprintf with a formatter writing to a
1822       buffer of your own: flushing the formatter and the buffer at the end of
1823       pretty-printing returns the desired string.
1824
1825
1826
1827       val asprintf : ('a, formatter, unit, string) format4 -> 'a
1828
1829       Same as printf above, but instead of printing on a formatter, returns a
1830       string  containing the result of formatting the arguments.  The type of
1831       asprintf is general enough to interact nicely with %a conversions.
1832
1833
1834       Since 4.01.0
1835
1836
1837
1838       val dprintf : ('a, formatter, unit, formatter -> unit) format4 -> 'a
1839
1840       Same as Format.fprintf , except the formatter  is  the  last  argument.
1841       dprintf  "..."  a b c is a function of type formatter -> unit which can
1842       be given to a format specifier %t .
1843
1844       This can be used as a replacement for Format.asprintf to delay  format‐
1845       ting  decisions. Using the string returned by Format.asprintf in a for‐
1846       matting context forces formatting decisions to be taken  in  isolation,
1847       and the final string may be created prematurely.  Format.dprintf allows
1848       delay of formatting decisions until the  final  formatting  context  is
1849       known.  For example:
1850         let t = Format.dprintf "%i@ %i@ %i" 1 2 3 in
1851         ...
1852         Format.printf "@[<v>%t@]" t
1853
1854
1855
1856       Since 4.08.0
1857
1858
1859
1860       val ifprintf : formatter -> ('a, formatter, unit) format -> 'a
1861
1862       Same  as  fprintf above, but does not print anything.  Useful to ignore
1863       some material when conditionally printing.
1864
1865
1866       Since 3.10.0
1867
1868
1869
1870
1871       Formatted Pretty-Printing with continuations.
1872
1873       val kfprintf : (formatter -> 'a) -> formatter -> ('b, formatter,  unit,
1874       'a) format4 -> 'b
1875
1876       Same as fprintf above, but instead of returning immediately, passes the
1877       formatter to its first argument at the end of printing.
1878
1879
1880
1881       val kdprintf : ((formatter -> unit) -> 'a) -> ('b, formatter, unit, 'a)
1882       format4 -> 'b
1883
1884       Same  as  Format.dprintf  above,  but instead of returning immediately,
1885       passes the suspended printer to its first argument at the end of print‐
1886       ing.
1887
1888
1889       Since 4.08.0
1890
1891
1892
1893       val ikfprintf : (formatter -> 'a) -> formatter -> ('b, formatter, unit,
1894       'a) format4 -> 'b
1895
1896       Same as kfprintf above, but does not print anything.  Useful to  ignore
1897       some material when conditionally printing.
1898
1899
1900       Since 3.12.0
1901
1902
1903
1904       val ksprintf : (string -> 'a) -> ('b, unit, string, 'a) format4 -> 'b
1905
1906       Same  as  sprintf above, but instead of returning the string, passes it
1907       to the first argument.
1908
1909
1910
1911       val kasprintf : (string -> 'a) -> ('b, formatter, unit, 'a) format4  ->
1912       'b
1913
1914       Same  as asprintf above, but instead of returning the string, passes it
1915       to the first argument.
1916
1917
1918       Since 4.03
1919
1920
1921
1922
1923
1924OCamldoc                          2023-07-20                  Stdlib.Format(3)
Impressum