Liking cljdoc? Tell your friends :D

clojure.pprint

A Pretty Printer for Clojure

clojure.pprint implements a flexible system for printing structured data in a pleasing, easy-to-understand format. Basic use of the pretty printer is simple, just call pprint instead of println. More advanced users can use the building blocks provided to create custom output formats.

Out of the box, pprint supports a simple structured format for basic data and a specialized format for Clojure source code. More advanced formats, including formats that don't look like Clojure data at all like XML and JSON, can be rendered by creating custom dispatch functions.

In addition to the pprint function, this module contains cl-format, a text formatting function which is fully compatible with the format function in Common Lisp. Because pretty printing directives are directly integrated with cl-format, it supports very concise custom dispatch. It also provides a more powerful alternative to Clojure's standard format function.

See documentation for pprint and cl-format for more information or complete documentation on the Clojure web site on GitHub.

A Pretty Printer for Clojure

clojure.pprint implements a flexible system for printing structured data
in a pleasing, easy-to-understand format. Basic use of the pretty printer is 
simple, just call pprint instead of println. More advanced users can use 
the building blocks provided to create custom output formats. 

Out of the box, pprint supports a simple structured format for basic data 
and a specialized format for Clojure source code. More advanced formats, 
including formats that don't look like Clojure data at all like XML and 
JSON, can be rendered by creating custom dispatch functions. 

In addition to the pprint function, this module contains cl-format, a text 
formatting function which is fully compatible with the format function in 
Common Lisp. Because pretty printing directives are directly integrated with
cl-format, it supports very concise custom dispatch. It also provides
a more powerful alternative to Clojure's standard format function.

See documentation for pprint and cl-format for more information or 
complete documentation on the Clojure web site on GitHub.
raw docstring

*print-base*clj

The base to use for printing integers and rationals.

The base to use for printing integers and rationals.
raw docstring

*print-miser-width*clj

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.

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.
raw docstring

*print-pprint-dispatch*cljmultimethod

The pretty print dispatch function. Use with-pprint-dispatch or set-pprint-dispatch to modify.

The pretty print dispatch function. Use with-pprint-dispatch or set-pprint-dispatch
to modify.
raw docstring

*print-pretty*clj

Bind to true if you want write to use pretty printing

Bind to true if you want write to use pretty printing
raw docstring

*print-radix*clj

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

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* 
raw docstring

*print-right-margin*clj

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.

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.
raw docstring

*print-suppress-namespaces*clj

Don't print namespaces with symbols. This is particularly useful when pretty printing the results of macro expansions

Don't print namespaces with symbols. This is particularly useful when 
pretty printing the results of macro expansions
raw docstring

cl-formatclj

(cl-format writer format-in & args)

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: http://www.cs.cmu.edu/afs/cs.cmu.edu/project/ai-repository/ai/html/cltl/clm/node200.html#SECTION002633000000000000000) and in the Common Lisp HyperSpec at http://www.lispworks.com/documentation/HyperSpec/Body/22_c.htm

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:
http://www.cs.cmu.edu/afs/cs.cmu.edu/project/ai-repository/ai/html/cltl/clm/node200.html#SECTION002633000000000000000) 
and in the Common Lisp HyperSpec at 
http://www.lispworks.com/documentation/HyperSpec/Body/22_c.htm
raw docstring

code-dispatchcljmultimethod

(code-dispatch object)

The pretty print dispatch function for pretty printing Clojure code.

The pretty print dispatch function for pretty printing Clojure code.
raw docstring

formattercljmacro

(formatter format-in)

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.

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.
raw docstring

formatter-outcljmacro

(formatter-out format-in)

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.

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.
raw docstring

fresh-lineclj

(fresh-line)

Make a newline if out is not already at the beginning of the line. If out is not a pretty writer (which keeps track of columns), this function always outputs a newline.

Make a newline if *out* is not already at the beginning of the line. If *out* is
not a pretty writer (which keeps track of columns), this function always outputs a newline.
raw docstring

get-pretty-writerclj

(get-pretty-writer writer)

Returns the java.io.Writer passed in wrapped in a pretty writer proxy, unless it's already a pretty writer. Generally, it is unnecessary to call this function, since pprint, write, and cl-format all call it if they need to. However if you want the state to be preserved across calls, you will want to wrap them with this.

For example, when you want to generate column-aware output with multiple calls to cl-format, do it like in this example:

(defn print-table [aseq column-width]
  (binding [*out* (get-pretty-writer *out*)]
    (doseq [row aseq]
      (doseq [col row]
        (cl-format true "~4D~7,vT" col column-width))
      (prn))))

Now when you run:

user> (print-table (map #(vector % (* % %) (* % % %)) (range 1 11)) 8)

It prints a table of squares and cubes for the numbers from 1 to 10:

   1      1       1    
   2      4       8    
   3      9      27    
   4     16      64    
   5     25     125    
   6     36     216    
   7     49     343    
   8     64     512    
   9     81     729    
  10    100    1000
Returns the java.io.Writer passed in wrapped in a pretty writer proxy, unless it's 
already a pretty writer. Generally, it is unnecessary to call this function, since pprint,
write, and cl-format all call it if they need to. However if you want the state to be 
preserved across calls, you will want to wrap them with this. 

For example, when you want to generate column-aware output with multiple calls to cl-format, 
do it like in this example:

    (defn print-table [aseq column-width]
      (binding [*out* (get-pretty-writer *out*)]
        (doseq [row aseq]
          (doseq [col row]
            (cl-format true "~4D~7,vT" col column-width))
          (prn))))

Now when you run:

    user> (print-table (map #(vector % (* % %) (* % % %)) (range 1 11)) 8)

It prints a table of squares and cubes for the numbers from 1 to 10:

       1      1       1    
       2      4       8    
       3      9      27    
       4     16      64    
       5     25     125    
       6     36     216    
       7     49     343    
       8     64     512    
       9     81     729    
      10    100    1000
raw docstring

ppcljmacro

(pp)

A convenience macro that pretty prints the last thing output. This is exactly equivalent to (pprint *1).

A convenience macro that pretty prints the last thing output. This is
exactly equivalent to (pprint *1).
raw docstring

pprintclj

(pprint object)
(pprint object writer)

Pretty print object to the optional output writer. If the writer is not provided, print the object to the currently bound value of out.

Pretty print object to the optional output writer. If the writer is not provided, 
print the object to the currently bound value of *out*.
raw docstring

pprint-indentclj

(pprint-indent relative-to n)

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.

This function is intended for use when writing custom dispatch functions.

Output is sent to out which must be a pretty printing writer.

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. 

This function is intended for use when writing custom dispatch functions.

Output is sent to *out* which must be a pretty printing writer.
raw docstring

pprint-logical-blockcljmacro

(pprint-logical-block options* body)

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.

This function is intended for use when writing custom dispatch functions.

Before the body, the caller can optionally specify options: :prefix, :per-line-prefix, and :suffix.

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. 

This function is intended for use when writing custom dispatch functions.

Before the body, the caller can optionally specify options: :prefix, :per-line-prefix, 
and :suffix.
raw docstring

pprint-newlineclj

(pprint-newline kind)

Print a conditional newline to a pretty printing stream. kind specifies if the newline is :linear, :miser, :fill, or :mandatory.

This function is intended for use when writing custom dispatch functions.

Output is sent to out which must be a pretty printing writer.

Print a conditional newline to a pretty printing stream. kind specifies if the 
newline is :linear, :miser, :fill, or :mandatory. 

This function is intended for use when writing custom dispatch functions.

Output is sent to *out* which must be a pretty printing writer.
raw docstring

pprint-tabclj

(pprint-tab kind colnum colinc)

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.

This function is intended for use when writing custom dispatch functions.

Output is sent to out which must be a pretty printing writer.

THIS FUNCTION IS NOT YET IMPLEMENTED.

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.

This function is intended for use when writing custom dispatch functions.

Output is sent to *out* which must be a pretty printing writer.

THIS FUNCTION IS NOT YET IMPLEMENTED.
raw docstring

(print-length-loop bindings & body)

A version of loop that iterates at most print-length times. This is designed for use in pretty-printer dispatch functions.

A version of loop that iterates at most *print-length* times. This is designed 
for use in pretty-printer dispatch functions.
raw docstring

(print-table rows)
(print-table ks rows)

Prints a collection of maps in a textual table. Prints table headings ks, and then a line of output for each row, corresponding to the keys in ks. If ks are not specified, use the keys of the first item in rows.

Prints a collection of maps in a textual table. Prints table headings
ks, and then a line of output for each row, corresponding to the keys
in ks. If ks are not specified, use the keys of the first item in rows.
raw docstring

set-pprint-dispatchclj

(set-pprint-dispatch function)

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.pprint.dispatch.clj.

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.pprint.dispatch.clj.
raw docstring

simple-dispatchcljmultimethod

(simple-dispatch object)

The pretty print dispatch function for simple data structure format.

The pretty print dispatch function for simple data structure format.
raw docstring

with-pprint-dispatchcljmacro

(with-pprint-dispatch function & body)

Execute body with the pretty print dispatch function bound to function.

Execute body with the pretty print dispatch function bound to function.
raw docstring

writeclj

(write object & kw-args)

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
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
raw docstring

write-outclj

(write-out object)

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.

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. 
raw docstring

cljdoc is a website building & hosting documentation for Clojure/Script libraries

× close