1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
|
<html>
<head>
<title>pprint API reference (clojure-contrib)</title>
<link href="../static/favicon.png" rel="icon" />
<link href="../static/favicon.png" rel="shortcut icon" />
<link media="all" type="text/css" href="../static/clojure.css" rel="stylesheet" />
<link media="all" type="text/css" href="../static/wiki.css" rel="stylesheet" />
<link media="all" type="text/css" href="../static/internal.css" rel="stylesheet" />
<!-- TODO: are we using these (from clojure.org)? If so, add the files -->
<script src="file/view/code_highlighter.js" type="text/javascript"></script>
<script src="file/view/clojure.js" type="text/javascript"></script>
<style>.menuWrapper{height: 36px;}</style>
<!--[if lte IE 6]>
<link rel="stylesheet" href="http://www.wikispaces.com/_/2009051601/s/internal_ie.css" type="text/css" />
<![endif]-->
</head>
<!--
This document was auto-generated from the source by the clojure autodoc system.
To report errors or ask questions about the overall documentation structure, formatting,
etc., contact Tom Faulhaber (google mail name: tomfaulhaber).
For errors in the documentation of a particular namespace, contact the author of that
namespace.
-->
<body>
<div id="AllContentContainer">
<div id="Header">
<a id="Logo" href="index.html"><img alt="Clojure" height="100" width="100" src="../static/clojure-icon.gif" /></a>
<h1><a title="page header title" id="page-header" href="index.html">Clojure-contrib API Reference</a></h1>
</div>
<div id="leftcolumn"><div style="text-align: center;"></div>
<div class="menu">
<div class="WikiCustomNav WikiElement wiki">
<div class="BranchTOC">
<a class="wiki_link" href="#">Branches</a>
<ul id="left-sidebar-branch-list">
<li><a href="../index.html" class="wiki_link">master</a></li><li><a href="../branch-1.1.x/index.html" class="wiki_link">1.1.x</a></li>
</ul>
</div>
<a class="wiki_link" href="index.html">Overview</a><br />
<a class="wiki_link" href="api-index.html">API Index</a><br />
<a class="wiki_link" href="#">Namespaces:</a>
<ul id="left-sidebar-list">
<li><a href="accumulators-api.html" class="wiki_link">accumulators</a></li><li><a href="agent-utils-api.html" class="wiki_link">agent-utils</a></li><li><a href="apply-macro-api.html" class="wiki_link">apply-macro</a></li><li><a href="base64-api.html" class="wiki_link">base64</a></li><li><a href="classpath-api.html" class="wiki_link">classpath</a></li><li><a href="combinatorics-api.html" class="wiki_link">combinatorics</a></li><li><a href="command-line-api.html" class="wiki_link">command-line</a></li><li><a href="complex-numbers-api.html" class="wiki_link">complex-numbers</a></li><li><a href="cond-api.html" class="wiki_link">cond</a></li><li><a href="condition-api.html" class="wiki_link">condition</a></li><li><a href="core-api.html" class="wiki_link">core</a></li><li><a href="dataflow-api.html" class="wiki_link">dataflow</a></li><li><a href="datalog-api.html" class="wiki_link">datalog</a></li><li><a href="def-api.html" class="wiki_link">def</a></li><li><a href="duck-streams-api.html" class="wiki_link">duck-streams</a></li><li><a href="error-kit-api.html" class="wiki_link">error-kit</a></li><li><a href="except-api.html" class="wiki_link">except</a></li><li><a href="fcase-api.html" class="wiki_link">fcase</a></li><li><a href="find-namespaces-api.html" class="wiki_link">find-namespaces</a></li><li><a href="fnmap-api.html" class="wiki_link">fnmap</a></li><li><a href="gen-html-docs-api.html" class="wiki_link">gen-html-docs</a></li><li><a href="generic.arithmetic-api.html" class="wiki_link">generic.arithmetic</a></li><li><a href="generic.collection-api.html" class="wiki_link">generic.collection</a></li><li><a href="generic.comparison-api.html" class="wiki_link">generic.comparison</a></li><li><a href="generic.functor-api.html" class="wiki_link">generic.functor</a></li><li><a href="generic.math-functions-api.html" class="wiki_link">generic.math-functions</a></li><li><a href="graph-api.html" class="wiki_link">graph</a></li><li><a href="greatest-least-api.html" class="wiki_link">greatest-least</a></li><li><a href="http.agent-api.html" class="wiki_link">http.agent</a></li><li><a href="http.connection-api.html" class="wiki_link">http.connection</a></li><li><a href="import-static-api.html" class="wiki_link">import-static</a></li><li><a href="jar-api.html" class="wiki_link">jar</a></li><li><a href="java-utils-api.html" class="wiki_link">java-utils</a></li><li><a href="javadoc.browse-api.html" class="wiki_link">javadoc.browse</a></li><li><a href="jmx-api.html" class="wiki_link">jmx</a></li><li><a href="json.read-api.html" class="wiki_link">json.read</a></li><li><a href="json.write-api.html" class="wiki_link">json.write</a></li><li><a href="lazy-seqs-api.html" class="wiki_link">lazy-seqs</a></li><li><a href="lazy-xml-api.html" class="wiki_link">lazy-xml</a></li><li><a href="logging-api.html" class="wiki_link">logging</a></li><li><a href="macro-utils-api.html" class="wiki_link">macro-utils</a></li><li><a href="macros-api.html" class="wiki_link">macros</a></li><li><a href="map-utils-api.html" class="wiki_link">map-utils</a></li><li><a href="math-api.html" class="wiki_link">math</a></li><li><a href="miglayout-api.html" class="wiki_link">miglayout</a></li><li><a href="mmap-api.html" class="wiki_link">mmap</a></li><li><a href="mock-api.html" class="wiki_link">mock</a></li><li><a href="monadic-io-streams-api.html" class="wiki_link">monadic-io-streams</a></li><li><a href="monads-api.html" class="wiki_link">monads</a></li><li><a href="ns-utils-api.html" class="wiki_link">ns-utils</a></li><li><a href="pprint-api.html" class="wiki_link">pprint</a></li><li><a href="probabilities.finite-distributions-api.html" class="wiki_link">probabilities.finite-distributions</a></li><li><a href="probabilities.monte-carlo-api.html" class="wiki_link">probabilities.monte-carlo</a></li><li><a href="probabilities.random-numbers-api.html" class="wiki_link">probabilities.random-numbers</a></li><li><a href="profile-api.html" class="wiki_link">profile</a></li><li><a href="prxml-api.html" class="wiki_link">prxml</a></li><li><a href="repl-ln-api.html" class="wiki_link">repl-ln</a></li><li><a href="repl-utils-api.html" class="wiki_link">repl-utils</a></li><li><a href="seq-utils-api.html" class="wiki_link">seq-utils</a></li><li><a href="server-socket-api.html" class="wiki_link">server-socket</a></li><li><a href="set-api.html" class="wiki_link">set</a></li><li><a href="shell-out-api.html" class="wiki_link">shell-out</a></li><li><a href="singleton-api.html" class="wiki_link">singleton</a></li><li><a href="sql-api.html" class="wiki_link">sql</a></li><li><a href="str-utils-api.html" class="wiki_link">str-utils</a></li><li><a href="str-utils2-api.html" class="wiki_link">str-utils2</a></li><li><a href="stream-utils-api.html" class="wiki_link">stream-utils</a></li><li><a href="swing-utils-api.html" class="wiki_link">swing-utils</a></li><li><a href="test-is-api.html" class="wiki_link">test-is</a></li><li><a href="trace-api.html" class="wiki_link">trace</a></li><li><a href="types-api.html" class="wiki_link">types</a></li><li><a href="with-ns-api.html" class="wiki_link">with-ns</a></li><li><a href="zip-filter-api.html" class="wiki_link">zip-filter</a></li>
</ul>
</div>
</div>
</div>
<div id="rightcolumn">
<div id="Content">
<div class="contentBox"><div class="innerContentBox">
<div id="content_view" class="wiki wikiPage">
<div id="right-sidebar"><div id="toc">
<h1 class="nopad">Table of Contents</h1>
<div style="margin-left: 1em;" class="toc-section">
<a href="#toc0">Overview</a>
<div style="margin-left: 1em;" class="toc-entry">
<a href="#clojure.contrib.pprint/*code-dispatch*">*code-dispatch*</a>
</div><div style="margin-left: 1em;" class="toc-entry">
<a href="#clojure.contrib.pprint/*print-base*">*print-base*</a>
</div><div style="margin-left: 1em;" class="toc-entry">
<a href="#clojure.contrib.pprint/*print-circle*">*print-circle*</a>
</div><div style="margin-left: 1em;" class="toc-entry">
<a href="#clojure.contrib.pprint/*print-lines*">*print-lines*</a>
</div><div style="margin-left: 1em;" class="toc-entry">
<a href="#clojure.contrib.pprint/*print-miser-width*">*print-miser-width*</a>
</div><div style="margin-left: 1em;" class="toc-entry">
<a href="#clojure.contrib.pprint/*print-pprint-dispatch*">*print-pprint-dispatch*</a>
</div><div style="margin-left: 1em;" class="toc-entry">
<a href="#clojure.contrib.pprint/*print-pretty*">*print-pretty*</a>
</div><div style="margin-left: 1em;" class="toc-entry">
<a href="#clojure.contrib.pprint/*print-radix*">*print-radix*</a>
</div><div style="margin-left: 1em;" class="toc-entry">
<a href="#clojure.contrib.pprint/*print-right-margin*">*print-right-margin*</a>
</div><div style="margin-left: 1em;" class="toc-entry">
<a href="#clojure.contrib.pprint/*print-shared*">*print-shared*</a>
</div><div style="margin-left: 1em;" class="toc-entry">
<a href="#clojure.contrib.pprint/*print-suppress-namespaces*">*print-suppress-namespaces*</a>
</div><div style="margin-left: 1em;" class="toc-entry">
<a href="#clojure.contrib.pprint/*simple-dispatch*">*simple-dispatch*</a>
</div><div style="margin-left: 1em;" class="toc-entry">
<a href="#clojure.contrib.pprint/cl-format">cl-format</a>
</div><div style="margin-left: 1em;" class="toc-entry">
<a href="#clojure.contrib.pprint/compile-format">compile-format</a>
</div><div style="margin-left: 1em;" class="toc-entry">
<a href="#clojure.contrib.pprint/formatter">formatter</a>
</div><div style="margin-left: 1em;" class="toc-entry">
<a href="#clojure.contrib.pprint/formatter-out">formatter-out</a>
</div><div style="margin-left: 1em;" class="toc-entry">
<a href="#clojure.contrib.pprint/fresh-line">fresh-line</a>
</div><div style="margin-left: 1em;" class="toc-entry">
<a href="#clojure.contrib.pprint/pp">pp</a>
</div><div style="margin-left: 1em;" class="toc-entry">
<a href="#clojure.contrib.pprint/pprint">pprint</a>
</div><div style="margin-left: 1em;" class="toc-entry">
<a href="#clojure.contrib.pprint/pprint-indent">pprint-indent</a>
</div><div style="margin-left: 1em;" class="toc-entry">
<a href="#clojure.contrib.pprint/pprint-logical-block">pprint-logical-block</a>
</div><div style="margin-left: 1em;" class="toc-entry">
<a href="#clojure.contrib.pprint/pprint-newline">pprint-newline</a>
</div><div style="margin-left: 1em;" class="toc-entry">
<a href="#clojure.contrib.pprint/pprint-tab">pprint-tab</a>
</div><div style="margin-left: 1em;" class="toc-entry">
<a href="#clojure.contrib.pprint/set-pprint-dispatch">set-pprint-dispatch</a>
</div><div style="margin-left: 1em;" class="toc-entry">
<a href="#clojure.contrib.pprint/use-method">use-method</a>
</div><div style="margin-left: 1em;" class="toc-entry">
<a href="#clojure.contrib.pprint/with-pprint-dispatch">with-pprint-dispatch</a>
</div><div style="margin-left: 1em;" class="toc-entry">
<a href="#clojure.contrib.pprint/write">write</a>
</div><div style="margin-left: 1em;" class="toc-entry">
<a href="#clojure.contrib.pprint/write-out">write-out</a>
</div>
<br />
</div><div style="margin-left: 1em;" class="toc-section">
<a href="#pprint.examples.json">pprint.examples.json</a>
<div style="margin-left: 1em;" class="toc-entry">
<a href="#clojure.contrib.pprint.examples.json/dispatch-json">dispatch-json</a>
</div><div style="margin-left: 1em;" class="toc-entry">
<a href="#clojure.contrib.pprint.examples.json/json-str">json-str</a>
</div><div style="margin-left: 1em;" class="toc-entry">
<a href="#clojure.contrib.pprint.examples.json/print-json">print-json</a>
</div>
<br />
</div><div style="margin-left: 1em;" class="toc-section">
<a href="#pprint.examples.xml">pprint.examples.xml</a>
<div style="margin-left: 1em;" class="toc-entry">
<a href="#clojure.contrib.pprint.examples.xml/*html-compatible*">*html-compatible*</a>
</div><div style="margin-left: 1em;" class="toc-entry">
<a href="#clojure.contrib.pprint.examples.xml/*prxml-indent*">*prxml-indent*</a>
</div><div style="margin-left: 1em;" class="toc-entry">
<a href="#clojure.contrib.pprint.examples.xml/prxml">prxml</a>
</div>
<br />
</div>
</div>
</div>
<div id="content-tag"><h1 id="overview">API for <span id="namespace-name">pprint</span>
<span id="branch-name">(1.1.x branch)</span></h1>
by <span id="author">Tom Faulhaber</span><br />
<br />Usage:
<pre>
(ns your-namespace
(:require <span id="long-name">clojure.contrib.pprint</span>))
</pre><pre>
</pre><h2>Overview</h2>
<pre id="namespace-docstr">This module comprises two elements:
1) A pretty printer for Clojure data structures, implemented in the
function "pprint"
2) A Common Lisp compatible format function, implemented as
"cl-format" because Clojure is using the name "format"
for its Java-based format function.
See documentation for those functions for more information or complete
documentation on the the clojure-contrib web site on github.</pre>
<br />
<span id="external-doc">Related documentation:
<span id="external-doc-link">
<br /><a href="doc/pprint/CommonLispFormat.html">A Common Lisp-compatible Format Function</a>
<br /></span><span id="external-doc-link">
<br /><a href="doc/pprint/PrettyPrinting.html">A Pretty Printer for Clojure</a>
<br /></span><br />
</span><h2>Public Variables and Functions</h2>
<div id="var-entry">
<br />
<hr />
<h2 id="clojure.contrib.pprint/*code-dispatch*">*code-dispatch*</h2>
<span id="var-type">multimethod</span><br />
<pre id="var-usage">Usage: (*code-dispatch* object)
</pre>
<pre id="var-docstr">The pretty print dispatch function for pretty printing Clojure code.</pre>
<a href="http://github.com/richhickey/clojure-contrib/blob/eb73c54687a9ed63dc939bbe886170f4a47455ed/src/clojure/contrib/pprint/dispatch.clj#L354" id="var-source">Source</a>
</div><div id="var-entry">
<br />
<hr />
<h2 id="clojure.contrib.pprint/*print-base*">*print-base*</h2>
<span id="var-type">var</span><br />
<pre id="var-usage"></pre>
<pre id="var-docstr">The base to use for printing integers and rationals.</pre>
<a href="http://github.com/richhickey/clojure-contrib/blob/74c5bf10a5e92c2f2ee83d09eb15938914f95fbe/src/clojure/contrib/pprint/pprint_base.clj#L78" id="var-source">Source</a>
</div><div id="var-entry">
<br />
<hr />
<h2 id="clojure.contrib.pprint/*print-circle*">*print-circle*</h2>
<span id="var-type">var</span><br />
<pre id="var-usage"></pre>
<pre id="var-docstr">Mark circular structures (N.B. This is not yet used)</pre>
<a href="http://github.com/richhickey/clojure-contrib/blob/74c5bf10a5e92c2f2ee83d09eb15938914f95fbe/src/clojure/contrib/pprint/pprint_base.clj#L56" id="var-source">Source</a>
</div><div id="var-entry">
<br />
<hr />
<h2 id="clojure.contrib.pprint/*print-lines*">*print-lines*</h2>
<span id="var-type">var</span><br />
<pre id="var-usage"></pre>
<pre id="var-docstr">Maximum number of lines to print in a pretty print instance (N.B. This is not yet used)</pre>
<a href="http://github.com/richhickey/clojure-contrib/blob/74c5bf10a5e92c2f2ee83d09eb15938914f95fbe/src/clojure/contrib/pprint/pprint_base.clj#L51" id="var-source">Source</a>
</div><div id="var-entry">
<br />
<hr />
<h2 id="clojure.contrib.pprint/*print-miser-width*">*print-miser-width*</h2>
<span id="var-type">var</span><br />
<pre id="var-usage"></pre>
<pre id="var-docstr">The column at which to enter miser style. Depending on the dispatch table,
miser style add newlines in more places to try to keep lines short allowing for further
levels of nesting.</pre>
<a href="http://github.com/richhickey/clojure-contrib/blob/74c5bf10a5e92c2f2ee83d09eb15938914f95fbe/src/clojure/contrib/pprint/pprint_base.clj#L44" id="var-source">Source</a>
</div><div id="var-entry">
<br />
<hr />
<h2 id="clojure.contrib.pprint/*print-pprint-dispatch*">*print-pprint-dispatch*</h2>
<span id="var-type">var</span><br />
<pre id="var-usage"></pre>
<pre id="var-docstr">The pretty print dispatch function. Use with-pprint-dispatch or set-pprint-dispatch
to modify.</pre>
<a href="http://github.com/richhickey/clojure-contrib/blob/74c5bf10a5e92c2f2ee83d09eb15938914f95fbe/src/clojure/contrib/pprint/pprint_base.clj#L33" id="var-source">Source</a>
</div><div id="var-entry">
<br />
<hr />
<h2 id="clojure.contrib.pprint/*print-pretty*">*print-pretty*</h2>
<span id="var-type">var</span><br />
<pre id="var-usage"></pre>
<pre id="var-docstr">Bind to true if you want write to use pretty printing</pre>
<a href="http://github.com/richhickey/clojure-contrib/blob/74c5bf10a5e92c2f2ee83d09eb15938914f95fbe/src/clojure/contrib/pprint/pprint_base.clj#L29" id="var-source">Source</a>
</div><div id="var-entry">
<br />
<hr />
<h2 id="clojure.contrib.pprint/*print-radix*">*print-radix*</h2>
<span id="var-type">var</span><br />
<pre id="var-usage"></pre>
<pre id="var-docstr">Print a radix specifier in front of integers and rationals. If *print-base* is 2, 8,
or 16, then the radix specifier used is #b, #o, or #x, respectively. Otherwise the
radix specifier is in the form #XXr where XX is the decimal value of *print-base* </pre>
<a href="http://github.com/richhickey/clojure-contrib/blob/74c5bf10a5e92c2f2ee83d09eb15938914f95fbe/src/clojure/contrib/pprint/pprint_base.clj#L72" id="var-source">Source</a>
</div><div id="var-entry">
<br />
<hr />
<h2 id="clojure.contrib.pprint/*print-right-margin*">*print-right-margin*</h2>
<span id="var-type">var</span><br />
<pre id="var-usage"></pre>
<pre id="var-docstr">Pretty printing will try to avoid anything going beyond this column.
Set it to nil to have pprint let the line be arbitrarily long. This will ignore all
non-mandatory newlines.</pre>
<a href="http://github.com/richhickey/clojure-contrib/blob/74c5bf10a5e92c2f2ee83d09eb15938914f95fbe/src/clojure/contrib/pprint/pprint_base.clj#L38" id="var-source">Source</a>
</div><div id="var-entry">
<br />
<hr />
<h2 id="clojure.contrib.pprint/*print-shared*">*print-shared*</h2>
<span id="var-type">var</span><br />
<pre id="var-usage"></pre>
<pre id="var-docstr">Mark repeated structures rather than repeat them (N.B. This is not yet used)</pre>
<a href="http://github.com/richhickey/clojure-contrib/blob/74c5bf10a5e92c2f2ee83d09eb15938914f95fbe/src/clojure/contrib/pprint/pprint_base.clj#L61" id="var-source">Source</a>
</div><div id="var-entry">
<br />
<hr />
<h2 id="clojure.contrib.pprint/*print-suppress-namespaces*">*print-suppress-namespaces*</h2>
<span id="var-type">var</span><br />
<pre id="var-usage"></pre>
<pre id="var-docstr">Don't print namespaces with symbols. This is particularly useful when
pretty printing the results of macro expansions</pre>
<a href="http://github.com/richhickey/clojure-contrib/blob/74c5bf10a5e92c2f2ee83d09eb15938914f95fbe/src/clojure/contrib/pprint/pprint_base.clj#L65" id="var-source">Source</a>
</div><div id="var-entry">
<br />
<hr />
<h2 id="clojure.contrib.pprint/*simple-dispatch*">*simple-dispatch*</h2>
<span id="var-type">multimethod</span><br />
<pre id="var-usage">Usage: (*simple-dispatch* object)
</pre>
<pre id="var-docstr">The pretty print dispatch function for simple data structure format.</pre>
<a href="http://github.com/richhickey/clojure-contrib/blob/eb73c54687a9ed63dc939bbe886170f4a47455ed/src/clojure/contrib/pprint/dispatch.clj#L125" id="var-source">Source</a>
</div><div id="var-entry">
<br />
<hr />
<h2 id="clojure.contrib.pprint/cl-format">cl-format</h2>
<span id="var-type">function</span><br />
<pre id="var-usage">Usage: (cl-format writer format-in & args)
</pre>
<pre id="var-docstr">An implementation of a Common Lisp compatible format function. cl-format formats its
arguments to an output stream or string based on the format control string given. It
supports sophisticated formatting of structured data.
Writer is an instance of java.io.Writer, true to output to *out* or nil to output
to a string, format-in is the format control string and the remaining arguments
are the data to be formatted.
The format control string is a string to be output with embedded 'format directives'
describing how to format the various arguments passed in.
If writer is nil, cl-format returns the formatted result string. Otherwise, cl-format
returns nil.
For example:
(let [results [46 38 22]]
(cl-format true "There ~[are~;is~:;are~]~:* ~d result~:p: ~{~d~^, ~}~%"
(count results) results))
Prints to *out*:
There are 3 results: 46, 38, 22
Detailed documentation on format control strings is available in the "Common Lisp the
Language, 2nd edition", Chapter 22 (available online at:
<a href="http://www.cs.cmu.edu/afs/cs.cmu.edu/project/ai-repository/ai/html/cltl/clm/node200.html#SECTION002633000000000000000)">http://www.cs.cmu.edu/afs/cs.cmu.edu/project/ai-repository/ai/html/cltl/clm/node200.html#SECTION002633000000000000000)</a>
and in the Common Lisp HyperSpec at
<a href="http://www.lispworks.com/documentation/HyperSpec/Body/22_c.htm">http://www.lispworks.com/documentation/HyperSpec/Body/22_c.htm</a></pre>
<a href="http://github.com/richhickey/clojure-contrib/blob/74c5bf10a5e92c2f2ee83d09eb15938914f95fbe/src/clojure/contrib/pprint/cl_format.clj#L26" id="var-source">Source</a>
</div><div id="var-entry">
<br />
<hr />
<h2 id="clojure.contrib.pprint/compile-format">compile-format</h2>
<span id="var-type">function</span><br />
<pre id="var-usage">Usage: (compile-format format-str)
</pre>
<pre id="var-docstr">Compiles format-str into a compiled format which can be used as an argument
to cl-format just like a plain format string. Use this function for improved
performance when you're using the same format string repeatedly</pre>
<a href="http://github.com/richhickey/clojure-contrib/blob/74c5bf10a5e92c2f2ee83d09eb15938914f95fbe/src/clojure/contrib/pprint/cl_format.clj#L1748" id="var-source">Source</a>
</div><div id="var-entry">
<br />
<hr />
<h2 id="clojure.contrib.pprint/formatter">formatter</h2>
<span id="var-type">macro</span><br />
<pre id="var-usage">Usage: (formatter format-in)
</pre>
<pre id="var-docstr">Makes a function which can directly run format-in. The function is
fn [stream & args] ... and returns nil unless the stream is nil (meaning
output to a string) in which case it returns the resulting string.
format-in can be either a control string or a previously compiled format.</pre>
<a href="http://github.com/richhickey/clojure-contrib/blob/74c5bf10a5e92c2f2ee83d09eb15938914f95fbe/src/clojure/contrib/pprint/cl_format.clj#L1816" id="var-source">Source</a>
</div><div id="var-entry">
<br />
<hr />
<h2 id="clojure.contrib.pprint/formatter-out">formatter-out</h2>
<span id="var-type">macro</span><br />
<pre id="var-usage">Usage: (formatter-out format-in)
</pre>
<pre id="var-docstr">Makes a function which can directly run format-in. The function is
fn [& args] ... and returns nil. This version of the formatter macro is
designed to be used with *out* set to an appropriate Writer. In particular,
this is meant to be used as part of a pretty printer dispatch method.
format-in can be either a control string or a previously compiled format.</pre>
<a href="http://github.com/richhickey/clojure-contrib/blob/74c5bf10a5e92c2f2ee83d09eb15938914f95fbe/src/clojure/contrib/pprint/cl_format.clj#L1830" id="var-source">Source</a>
</div><div id="var-entry">
<br />
<hr />
<h2 id="clojure.contrib.pprint/fresh-line">fresh-line</h2>
<span id="var-type">function</span><br />
<pre id="var-usage">Usage: (fresh-line)
</pre>
<pre id="var-docstr">Make a newline if the Writer is not already at the beginning of the line.
N.B. Only works on ColumnWriters right now.</pre>
<a href="http://github.com/richhickey/clojure-contrib/blob/74c5bf10a5e92c2f2ee83d09eb15938914f95fbe/src/clojure/contrib/pprint/cl_format.clj#L1152" id="var-source">Source</a>
</div><div id="var-entry">
<br />
<hr />
<h2 id="clojure.contrib.pprint/pp">pp</h2>
<span id="var-type">macro</span><br />
<pre id="var-usage">Usage: (pp)
</pre>
<pre id="var-docstr">A convenience macro that pretty prints the last thing output. This is
exactly equivalent to (pprint *1).</pre>
<a href="http://github.com/richhickey/clojure-contrib/blob/74c5bf10a5e92c2f2ee83d09eb15938914f95fbe/src/clojure/contrib/pprint/pprint_base.clj#L241" id="var-source">Source</a>
</div><div id="var-entry">
<br />
<hr />
<h2 id="clojure.contrib.pprint/pprint">pprint</h2>
<span id="var-type">function</span><br />
<pre id="var-usage">Usage: (pprint object)
(pprint object writer)
</pre>
<pre id="var-docstr">Pretty print object to the optional output writer. If the writer is not provided,
print the object to the currently bound value of *out*.</pre>
<a href="http://github.com/richhickey/clojure-contrib/blob/74c5bf10a5e92c2f2ee83d09eb15938914f95fbe/src/clojure/contrib/pprint/pprint_base.clj#L229" id="var-source">Source</a>
</div><div id="var-entry">
<br />
<hr />
<h2 id="clojure.contrib.pprint/pprint-indent">pprint-indent</h2>
<span id="var-type">function</span><br />
<pre id="var-usage">Usage: (pprint-indent relative-to n)
</pre>
<pre id="var-docstr">Create an indent at this point in the pretty printing stream. This defines how
following lines are indented. relative-to can be either :block or :current depending
whether the indent should be computed relative to the start of the logical block or
the current column position. n is an offset.
Output is sent to *out* which must be a pretty printing writer.</pre>
<a href="http://github.com/richhickey/clojure-contrib/blob/74c5bf10a5e92c2f2ee83d09eb15938914f95fbe/src/clojure/contrib/pprint/pprint_base.clj#L315" id="var-source">Source</a>
</div><div id="var-entry">
<br />
<hr />
<h2 id="clojure.contrib.pprint/pprint-logical-block">pprint-logical-block</h2>
<span id="var-type">macro</span><br />
<pre id="var-usage">Usage: (pprint-logical-block options* body)
</pre>
<pre id="var-docstr">Execute the body as a pretty printing logical block with output to *out* which
must be a pretty printing writer. When used from pprint or cl-format, this can be
assumed.
Before the body, the caller can optionally specify options: :prefix, :per-line-prefix,
and :suffix.</pre>
<a href="http://github.com/richhickey/clojure-contrib/blob/74c5bf10a5e92c2f2ee83d09eb15938914f95fbe/src/clojure/contrib/pprint/pprint_base.clj#L286" id="var-source">Source</a>
</div><div id="var-entry">
<br />
<hr />
<h2 id="clojure.contrib.pprint/pprint-newline">pprint-newline</h2>
<span id="var-type">function</span><br />
<pre id="var-usage">Usage: (pprint-newline kind)
</pre>
<pre id="var-docstr">Print a conditional newline to a pretty printing stream. kind specifies if the
newline is :linear, :miser, :fill, or :mandatory.
Output is sent to *out* which must be a pretty printing writer.</pre>
<a href="http://github.com/richhickey/clojure-contrib/blob/74c5bf10a5e92c2f2ee83d09eb15938914f95fbe/src/clojure/contrib/pprint/pprint_base.clj#L306" id="var-source">Source</a>
</div><div id="var-entry">
<br />
<hr />
<h2 id="clojure.contrib.pprint/pprint-tab">pprint-tab</h2>
<span id="var-type">function</span><br />
<pre id="var-usage">Usage: (pprint-tab kind colnum colinc)
</pre>
<pre id="var-docstr">Tab at this point in the pretty printing stream. kind specifies whether the tab
is :line, :section, :line-relative, or :section-relative.
Colnum and colinc specify the target column and the increment to move the target
forward if the output is already past the original target.
Output is sent to *out* which must be a pretty printing writer.
THIS FUNCTION IS NOT YET IMPLEMENTED.</pre>
<a href="http://github.com/richhickey/clojure-contrib/blob/74c5bf10a5e92c2f2ee83d09eb15938914f95fbe/src/clojure/contrib/pprint/pprint_base.clj#L327" id="var-source">Source</a>
</div><div id="var-entry">
<br />
<hr />
<h2 id="clojure.contrib.pprint/set-pprint-dispatch">set-pprint-dispatch</h2>
<span id="var-type">function</span><br />
<pre id="var-usage">Usage: (set-pprint-dispatch function)
</pre>
<pre id="var-docstr">Set the pretty print dispatch function to a function matching (fn [obj] ...)
where obj is the object to pretty print. That function will be called with *out* set
to a pretty printing writer to which it should do its printing.
For example functions, see *simple-dispatch* and *code-dispatch* in
clojure.contrib.pprint.dispatch.clj.</pre>
<a href="http://github.com/richhickey/clojure-contrib/blob/74c5bf10a5e92c2f2ee83d09eb15938914f95fbe/src/clojure/contrib/pprint/pprint_base.clj#L246" id="var-source">Source</a>
</div><div id="var-entry">
<br />
<hr />
<h2 id="clojure.contrib.pprint/use-method">use-method</h2>
<span id="var-type">function</span><br />
<pre id="var-usage">Usage: (use-method multifn dispatch-val func)
</pre>
<pre id="var-docstr">Installs a function as a new method of multimethod associated with dispatch-value. </pre>
<a href="http://github.com/richhickey/clojure-contrib/blob/eb73c54687a9ed63dc939bbe886170f4a47455ed/src/clojure/contrib/pprint/dispatch.clj#L19" id="var-source">Source</a>
</div><div id="var-entry">
<br />
<hr />
<h2 id="clojure.contrib.pprint/with-pprint-dispatch">with-pprint-dispatch</h2>
<span id="var-type">macro</span><br />
<pre id="var-usage">Usage: (with-pprint-dispatch function & body)
</pre>
<pre id="var-docstr">Execute body with the pretty print dispatch function bound to function.</pre>
<a href="http://github.com/richhickey/clojure-contrib/blob/74c5bf10a5e92c2f2ee83d09eb15938914f95fbe/src/clojure/contrib/pprint/pprint_base.clj#L259" id="var-source">Source</a>
</div><div id="var-entry">
<br />
<hr />
<h2 id="clojure.contrib.pprint/write">write</h2>
<span id="var-type">function</span><br />
<pre id="var-usage">Usage: (write object & kw-args)
</pre>
<pre id="var-docstr">Write an object subject to the current bindings of the printer control variables.
Use the kw-args argument to override individual variables for this call (and any
recursive calls). Returns the string result if :stream is nil or nil otherwise.
The following keyword arguments can be passed with values:
Keyword Meaning Default value
:stream Writer for output or nil true (indicates *out*)
:base Base to use for writing rationals Current value of *print-base*
:circle* If true, mark circular structures Current value of *print-circle*
:length Maximum elements to show in sublists Current value of *print-length*
:level Maximum depth Current value of *print-level*
:lines* Maximum lines of output Current value of *print-lines*
:miser-width Width to enter miser mode Current value of *print-miser-width*
:dispatch The pretty print dispatch function Current value of *print-pprint-dispatch*
:pretty If true, do pretty printing Current value of *print-pretty*
:radix If true, prepend a radix specifier Current value of *print-radix*
:readably* If true, print readably Current value of *print-readably*
:right-margin The column for the right margin Current value of *print-right-margin*
:suppress-namespaces If true, no namespaces in symbols Current value of *print-suppress-namespaces*
* = not yet supported</pre>
<a href="http://github.com/richhickey/clojure-contrib/blob/74c5bf10a5e92c2f2ee83d09eb15938914f95fbe/src/clojure/contrib/pprint/pprint_base.clj#L186" id="var-source">Source</a>
</div><div id="var-entry">
<br />
<hr />
<h2 id="clojure.contrib.pprint/write-out">write-out</h2>
<span id="var-type">function</span><br />
<pre id="var-usage">Usage: (write-out object)
</pre>
<pre id="var-docstr">Write an object to *out* subject to the current bindings of the printer control
variables. Use the kw-args argument to override individual variables for this call (and
any recursive calls).
*out* must be a PrettyWriter if pretty printing is enabled. This is the responsibility
of the caller.
This method is primarily intended for use by pretty print dispatch functions that
already know that the pretty printer will have set up their environment appropriately.
Normal library clients should use the standard "write" interface. </pre>
<a href="http://github.com/richhickey/clojure-contrib/blob/74c5bf10a5e92c2f2ee83d09eb15938914f95fbe/src/clojure/contrib/pprint/pprint_base.clj#L161" id="var-source">Source</a>
</div>
<h2 id="namespace-name">pprint.examples.json</h2>
<pre id="namespace-docstr">Pretty printing JavaScript Object Notation (JSON) generator.
This is an example of using a pretty printer dispatch function to generate JSON output</pre>
<span id="see-also">See also:
<span id="see-also-link">
<a href="http://json.org/">JSON Home Page</a>
</span><br />
</span><br />
<div id="var-entry">
<hr />
<h2 id="clojure.contrib.pprint.examples.json/dispatch-json">dispatch-json</h2>
<span id="var-type">multimethod</span><br />
<pre id="var-usage">Usage: (dispatch-json x)
</pre>
<pre id="var-docstr">The dispatch function for printing objects as JSON</pre>
<a href="http://github.com/richhickey/clojure-contrib/blob/e20e8effe977640592b1f285d6c666492d74df00/src/clojure/contrib/pprint/examples/json.clj#L28" id="var-source">Source</a>
</div><div id="var-entry">
<hr />
<h2 id="clojure.contrib.pprint.examples.json/json-str">json-str</h2>
<span id="var-type">function</span><br />
<pre id="var-usage">Usage: (json-str x)
</pre>
<pre id="var-docstr">Converts x to a JSON-formatted string.</pre>
<a href="http://github.com/richhickey/clojure-contrib/blob/e20e8effe977640592b1f285d6c666492d74df00/src/clojure/contrib/pprint/examples/json.clj#L96" id="var-source">Source</a>
</div><div id="var-entry">
<hr />
<h2 id="clojure.contrib.pprint.examples.json/print-json">print-json</h2>
<span id="var-type">function</span><br />
<pre id="var-usage">Usage: (print-json x)
</pre>
<pre id="var-docstr">Prints x as JSON. Nil becomes JSON null. Keywords become
strings, without the leading colon. Maps become JSON objects, all
other collection types become JSON arrays. Java arrays become JSON
arrays. Unicode characters in strings are escaped as \uXXXX.
Numbers print as with pr.</pre>
<a href="http://github.com/richhickey/clojure-contrib/blob/e20e8effe977640592b1f285d6c666492d74df00/src/clojure/contrib/pprint/examples/json.clj#L87" id="var-source">Source</a>
</div>
<h2 id="namespace-name">pprint.examples.xml</h2>
<pre id="namespace-docstr">A version of prxml that uses a pretty print dispatch function.</pre>
<br />
<div id="var-entry">
<hr />
<h2 id="clojure.contrib.pprint.examples.xml/*html-compatible*">*html-compatible*</h2>
<span id="var-type">var</span><br />
<pre id="var-usage"></pre>
<pre id="var-docstr">If true, empty tags will have a space before the closing /></pre>
<a href="http://github.com/richhickey/clojure-contrib/blob/2f7ddf7205bbd47ace5d2240c66a4686de18d7e7/src/clojure/contrib/pprint/examples/xml.clj#L27" id="var-source">Source</a>
</div><div id="var-entry">
<hr />
<h2 id="clojure.contrib.pprint.examples.xml/*prxml-indent*">*prxml-indent*</h2>
<span id="var-type">var</span><br />
<pre id="var-usage"></pre>
<pre id="var-docstr">The number of spaces to indent sub-tags.</pre>
<a href="http://github.com/richhickey/clojure-contrib/blob/2f7ddf7205bbd47ace5d2240c66a4686de18d7e7/src/clojure/contrib/pprint/examples/xml.clj#L31" id="var-source">Source</a>
</div><div id="var-entry">
<hr />
<h2 id="clojure.contrib.pprint.examples.xml/prxml">prxml</h2>
<span id="var-type">function</span><br />
<pre id="var-usage">Usage: (prxml & args)
</pre>
<pre id="var-docstr">Print XML to *out*. Vectors become XML tags: the first item is the
tag name; optional second item is a map of attributes.
Sequences are processed recursively, so you can use map and other
sequence functions inside prxml.
(prxml [:p {:class "greet"} [:i "Ladies & gentlemen"]])
; => <p class="greet"><i>Ladies &amp; gentlemen</i></p>
PSEUDO-TAGS: some keywords have special meaning:
:raw! do not XML-escape contents
:comment! create an XML comment
:decl! create an XML declaration, with attributes
:cdata! create a CDATA section
:doctype! create a DOCTYPE!
(prxml [:p [:raw! "<i>here & gone</i>"]])
; => <p><i>here & gone</i></p>
(prxml [:decl! {:version "1.1"}])
; => <?xml version="1.1" encoding="UTF-8"?></pre>
<a href="http://github.com/richhickey/clojure-contrib/blob/2f7ddf7205bbd47ace5d2240c66a4686de18d7e7/src/clojure/contrib/pprint/examples/xml.clj#L92" id="var-source">Source</a>
</div>
</div>
</div>
</div>
</div>
</div>
<div id="foot">
<div style="text-align: center;" id="copyright">Copyright 2007-2009 by Rich Hickey and the various contributors</div>
</div>
</div>
<div id="DesignedBy">Logo & site design by <a title="Visit Tom Hickey's website." href="http://www.tomhickey.com">Tom Hickey</a>.<br />
Clojure auto-documentation system by Tom Faulhaber.</div>
</div>
<!-- /AllContentContainer -->
</body>
</html>
|