1Stdlib.Format(3) OCaml library Stdlib.Format(3)
2
3
4
6 Stdlib.Format - no description
7
9 Module Stdlib.Format
10
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 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)